C#   Уроки программирования с нуля. Си-шарп для чайников   C#

Здравствуйте, гость!
Вход
Регистрация


Форматирование строк в Си-шарп. Метод System.String.Format
В уроке 9 была рассмотрена работа со строками в Си-шарп, сейчас же мы поговорим о их форматировании. Потребность в форматировании строк возникает довольно часто (вывод определенного количества знаков после запятой для числа, или дата в нужом формате и. т.д.).

В Си-шарп возможностью задать форматирование обладают следующие методы:

- System.String.Format
- Console.WriteLine
- StreamWriter.Write
- ToString

Методы WriteLine и Write используются для вывода информации в консоль, и при этом дают возможность отформатировать вывод. Метод Format класса String предназначен конкретно для форматирования. Он возвращает отформатированную строку. Разницы между самим форматированием для этих методов нет. Форматирование в методе ToString можно задать только для чисел и дат.

Общая структура форматирования строк имеет следующий вид:

String.Format("строка формата", arg0, arg1, …, argn);

arg0 и arg1 здесь – аргументы форматирования (числа, строки, даты, и т. д.), из которых в результате будет создана новая отформатированная строка.

Строка формата может содержать обычные символы, которые будут отображены в том виде, в котором они заданы, и команды форматирования. Команда форматирования заключается в фигурные скобки и имеет следующую структуру:

{[номер аргумента], [ширина]:[формат]}

По [номеру аргумента] указывается к какому аргументу будет применена данная команда (отсчет аргументов начинается с нуля).
[ширина] задает минимальный размер поля.
[формат] – спецификатор формата.

Параметры [ширина] и [формат] не являются обязательными.

Пример простого форматирования:

string formattedString = string.Format("Result is {0}", 5); // "Result is 5"

Здесь на место команды {0} подставляется 0-й аргумент.

int num1 = 5, num2 = 3;
string formattedString = string.Format("{0}+{1}={2}", num1, num2, num1+num2); // "5+3=8"
Console.WriteLine(formattedString);
Console.ReadLine();


Параметр "ширина"

Иногда необходимо отформатировать строки, содержащие числа, чтобы они были выравнены по левому или правому краю и имели одинаковую длину. К числу, которое имеет меньше символов, чем значение ширины, будут добавлены пробелы слева (положительная ширина) или справа (отрицательная ширина):

Console.WriteLine("Result is {0, 6}", 1.2789);
Console.WriteLine("Result is {0, 6}", 7.54);
Console.WriteLine("Result is {0, -6}", 1.2789);
Console.WriteLine("Result is {0, -6}", 7.54);

В результате получится, что в первых двух строках числа выровнены по правому краю, в двух других по левому:

Result is 1,2789
Result is    7,54
Result is 1,2789
Result is 7,54

Встроенные форматы числовых данных

А теперь мы рассмотрим параметр команды форматирования после двоеточия – формат. Для числовых аргументов определен целый ряд форматов, все они описаны в таблице 1. Почти для всех форматов можно также задать точность. Например, формат для чисел с фиксированной точкой «f» по умолчанию выводит не больше двух знаков после точки. Чтобы задать 4 знака - нужно указать после обозначения формата необходимое число, «f4».

Таблица 1
Специальный символФорматОписание
c/CДенежная единицаУказывает количество десятичных знаков
d/DЦелые числаУказывает минимальное количество цифр. При необходимости добавляются нули
e/EЭкспоненциальные числаУказывает количество десятичных знаков
f/FЧисла с фиксированной точкойУказывает количество десятичных знаков
g/GФорматы e/E и g/GИспользует более короткий формат из двух: f/F и g/G
n/NЧисла с фиксированной точкой с отделением групп разрядовУказывает количество десятичных знаков
p/PПроцентыУмножает число на 100 и выводит со знаком процентов. Указывает количество десятичных знаков
r/RФормат кругового преобразования. Только фиксированная точкаФорматирует число в строку таким образом, что его можно обратно преобразовать без потерь точности
x/XШестнадцатеричные числаУказывает минимальное количество цифр. При необходимости добавляются нули

Пример использования некоторых из встроенных форматов:

Console.WriteLine("{0:c}", 5.50); // "5,50 грн."
Console.WriteLine("{0:c1}", 5.50); // "5,5 грн."
Console.WriteLine("{0:e}", 5.50); // "5,500000е+000"
Console.WriteLine("{0:d}", 32); // "32"
Console.WriteLine("{0:d4}", 32); // "0032"
Console.WriteLine("{0:p}", 0.55); // "55,00%"


Пользовательский формат числовых данных

В таблице 1 были описаны стандартные форматы для числовых данных, но иногда необходимо определить некоторый собственный формат. Для создания пользовательских форматов используются специальные символы (Таблица 2):

Таблица 2
Специальный символЗначение
0Цифра или ноль
#Цифра
.Разделитель дроби
,Разделитель тысяч
%Процент
eЭкспонента
;Определяет разделы, которые описывают форматы для положительных, отрицательных чисел и нуля
\Экранирование специальных символов. Позволяет вставлять спец-символы как текст

Пример использования пользовательских форматов:

Console.WriteLine("{0:0000.00}", 1024.32); // "1024,32"
Console.WriteLine("{0:00000.000}", 1024.32); // "01024,320"
Console.WriteLine("{0:####.###}", 1024.32); // "1024,32"
Console.WriteLine("{0:####.#}", 1024.32); // "1024,3"
Console.WriteLine("{0:#,###.##}", 1024.32); // "1 024,32"
Console.WriteLine("{0:##%}", 0.32); // "32%"
Console.WriteLine("{0:<####.###>;[####.###];ноль}", 1024.32); // "<1024,32>"
Console.WriteLine("{0:<####.###>;[####.###];ноль}", -1024.32); // "[1024,32]"
Console.WriteLine("{0:<####.###>;[####.###];ноль}", 0); // "ноль"


Здесь стоит отметить, что если количество цифр целой части числа больше чем количество символов «0» или «#» в формате, целая часть числа всё равно будет выводиться полностью.

Встроенные форматы даты и времени

Для работы с датой и временем существует отдельный набор стандартных форматов. Данные форматы наведены в таблице 3:

Таблица 3
Специальный символФорматПример
dКороткая дата30.06.2014
DДлинная дата30 июня 2014 г.
tКороткое время22:30
TДлинное время22:30:10
fДлинная дата/короткое время30 июня 2014 г. 22:30
FДлинная дата/длинное время30 июня 2014 г. 22:30:10
gКороткая дата/короткое время30.06.2014 22:30
GКороткая дата/длинное время30.06.2014 22:30:10
M/mМесяц и деньиюня 30
O/oОбратный2014-06-30T22:30:10.0000000
R/rRFC1123Mon, 30 Jun 2014 22:30:10 GMT
sДля сортировки2014-06-30T22:30:10
uЛокальное, в универсальном формате2014-06-30 22:30:10Z
UGMT30 июня 2014 г. 19:30:10
YГод и месяцИюнь 2014

Пример использования стандартных форматов даты и времени:

Console.WriteLine("{0:d}", DateTime.Now); // "30.06.2014"
Console.WriteLine("{0:D}", DateTime.Now); // "30 июня 2014 р."
Console.WriteLine("{0:t}", DateTime.Now); // "2:57"
Console.WriteLine("{0:T}", DateTime.Now); // "2:57:53"
Console.WriteLine("{0:U}", DateTime.Now); // "29 июня 2014 р. 23:57:53"
Console.WriteLine("{0:Y}", DateTime.Now); // "Июнь 2014 р."


Пользовательский формат даты и времени

Как и в случае с числовыми данными, для даты и времени можно определять пользовательский формат. Для этого используются специальные символы, которые наведены в таблице 4 (на примере даты 30.06.2014 22:30:10.1234):

Таблица 4
Специальный символЗначениeРезультат
yГод 0-94
yyГод 00-9914
yyyyГод, 4 цифры2014
MМесяц 1-126
MMМесяц 01-1206
dДень 1-310
ddДень 01-3130
hЧас 1-122
hhЧас 01-1210
HЧас 1-2422
HЧас 01-2422
mМинута 0-5930
mmМинута 00-5930
sСекунда 0-5910
ssСекунда 00-5910
f – ffffffДоли секунды12 (для ff)
F-FFFFFFДоли секунды, если они не равны 012 (для ff)
MMMСокращенное имя месяцаИюн
MMMMИмя месяцаИюнь
dddСокращенное имя дня неделиПн
ddddИмя дня неделипонедельник
ttМаркер для "AM" и "PM" 12-часового форматаPM
zzСмещение временной зоны, короткое+03
zzzСмещение временной зоны, полное+03:00
ggЭра A.D.
:Разделитель времени22:30:10
/Разделитель даты30.06.2014
\Экранирование

Пример использования пользовательских форматов даты и времени:

Console.WriteLine("{0:y yy yyy yyyy}", DateTime.Now); // "14 14 2014 2014"
Console.WriteLine("{0:d dd ddd dddd}", DateTime.Now); // "30 30 Пн понедельник"
Console.WriteLine("{0:M MM MMM}", DateTime.Now); // "6 06 Июн"
Console.WriteLine("{0:HH.mm.ss dd-MMM-yyyy}", DateTime.Now); // "03.21.22 30-Июн-2014"
Console.WriteLine("{0:z zz zzz}", DateTime.Now); // "+3 +03 +03:00"


Форматирование с использованием метода ToString

Все правила форматирования, описанные выше, могут быть использованы в перегруженном методе ToString для чисел и дат:

Console.WriteLine(DateTime.Now.ToString("dd MMM yyyy")); // 30 Июн 2014


Региональные параметры CultureInfo

В примерах выше стандартные параметры культуры. Деньги выводились в рублях, названия месяцев, дней на русском языке. CultureInfo также влияет на разделитель в числах, количество символов после точки по умолчанию и другое. Иногда возникает потребность изменить это, и для этого используется CultureInfo. По умолчанию CultureInfo соответствует настройкам Windows (например российские региональные настройки). Чтобы задать собственную культуру при форматировании, используя метод Format, необходимо в конструктор этого метода первым аргументом передать объект CultureInfo.

В примере ниже текущий день выводится с текущими настройками CultureInfo (российскими), с английскими (английский Соединенных Штатов), и с украинскими:

string formattedString = string.Format(new System.Globalization.CultureInfo("en-US"), "{0:dddd} Money - {1:c}", DateTime.Now, 15);
Console.WriteLine("{0:dddd} Money - {1:c}", DateTime.Now, 15); // "понедельник Money - 15,00 руб."
Console.WriteLine(formattedString); // "Monday Money - $15.00"
formatedString = string.Format(new System.Globalization.CultureInfo("uk-UA"), "{0:dddd} Money - {1:c}", DateTime.Now, 15);
Console.WriteLine(formattedString); // "понеділок Money - 15,00 грн."


Домашнее задание

Есть массив дат (с временем) и массив температур, и они соответствуют друг другу. Температуры в массиве имеют вид в формате: «26.3 27.1 30 24.7 25». Необходимо вывести информацию таким образом:

Июн 30 (Пн) 09:31 > 26,3 °C
Июн 30 (Пн) 10:31 > 27,1 °C
Июн 30 (Пн) 11:31 > 30,0 °C

Дробная часть температуры должна обязательно быть длиной в один знак, даже если температура целая.
Понравилась статья? Подпишись на рассылку и узнавай первым о новых уроках по почте!


Поделиться с друзьями:
30 июн 2014 22:33
nalinacag 25 июн 2017 21:25
Интересная работа с обучением, высокая оплата!

Вы работаете дома! Полностью честно и прозрачно;
Доступно для всех - неважно кто вы и какой у вас опыт работы в интернете!
Вы будете зарабатывать: свыше четырёх тысяч рублей в день!
Сложность: Несложно!
Оплата: - уже на следующий деньги у вас на счету!

Более подробная информация у нас на сайте. > realno-money.tk < Скопируйте и вставьте в адресную строку Вашего браузера.

Святослав 29 дек 2016 05:30

using System;
using System.Collections.Generic;
namespace ConsoleApplication64
{
class Program
{
static void Main(string[] args)
{
List <DateTime> dates = new List<DateTime>();

//Список дат
dates.Add(new DateTime(2014, 6, 30, 9, 31, 0));
dates.Add(new DateTime(2014, 6, 30, 10, 31, 0));
dates.Add(new DateTime(2014, 6, 30, 10, 31, 0));

//Массив температур
double[] temps = new double[3] { 26.3, 27.1, 30.0 };

Console.WriteLine("{0:MMM dd(ddd) h:mm > }" + temps[0] + "°C", dates[0]);
Console.WriteLine("{0:MMM dd(ddd) h:mm > }" + temps[1] + "°C", dates[1]);
Console.WriteLine("{0:MMM dd(ddd) h:mm > }" + "{1:f1}" + "°C", dates[2], temps[2]);
Console.ReadLine();
}
}
}

Ерлан 10 ноя 2016 04:59
string[] dtarray = new string[3];
string[] grarray = new string[3] { "26,3", "27,1", "30,0" };
DateTime ti = DateTime.Now;
string dt = String.Format("{0:MMM d}({0:ddd})", ti);
for (int i = 0; i < dtarray.Length; i++)
{
dtarray[i] = i == 0 ? ti.ToString("t") : (ti.AddHours(1)).ToString("t");
Console.WriteLine(String.Format("{0} {1} > {2} °C", dt, dtarray[i], grarray[i]));
}

Console.ReadKey();

FOX 08 ноя 2016 12:57
namespace ConsoleApplication11
{
class Program
{
static void Main(string[] args)
{
DateTime[] d = new DateTime[3];
double[] t = new double[3];

d[0] = Convert.ToDateTime("01.01.2016 15:25");
d[1] = Convert.ToDateTime("02.02.2016 17:20");
d[2] = Convert.ToDateTime("07.04.2016 22:17");
t[0] = 10.11;
t[1] = 15.36;
t[2] = 20.39;

TempDat tt = new TempDat(d,t);
tt.Vivod();
}
}
class TempDat
{
DateTime[] date=new DateTime[3];
double[] temp=new double[3];

//Конструктор класса
public TempDat(DateTime[] Date,double[] Temp)
{
date = Date;
temp = Temp;
}

//Метод класса
public void Vivod()
{
int i=0;
string formattedString;
foreach (DateTime dd in date)
{
//делаем форматирование чтоб месяц писался по русски, а градусы выводились через точку
formattedString = string.Format(new System.Globalization.CultureInfo("ru-RU"), "{0: MMMM dd (ddd) HH:mm} > ", dd);
formattedString = formattedString + string.Format(new System.Globalization.CultureInfo("us-US"), "{0:####.#}°C", temp[i]);
Console.WriteLine(formattedString);
i++;
}
Console.ReadKey();
}


}
}

Doxako 22 сен 2016 22:44
public static void Main(string[] args)
{
double[] arrayT = {22.4, 22.44, 21.25};
string[] arrayD = {"Июн 30 (Пн) 09:31", "Июн 30 (Пн) 10:31", "Июн 30 (Пн) 11:31"};
for(int i = 0; i < arrayD.Length; ++i)
Console.WriteLine("{0} > {1:f2}°C", arrayD[i], arrayT[i]);

Console.Read();
}

Александр Михалев 23 июн 2016 18:40

static void Main(string[] args)
{
string[] date = new string[3] { "Июн 30 (Пн) 09:31", "Июн 30 (Пн) 10:31", "Июн 30 (Пн) 11:31" };
string[] t = new string[3] { "26,3 °C", "27,1 °C", "30,0 °C" };
Console.WriteLine("{0} > {1}", date[0], t[0]);
Console.WriteLine("{0} > {1}", date[1], t[1]);
Console.WriteLine("{0} > {1}", date[2], t[2]);
Console.ReadLine();
}

Zuzundra 11 фев 2016 19:31
using System;
using System.Collections;
using System.Text.RegularExpressions;
using System.Collections.Generic;


namespace homeWork
{
class DatesWithTime
{
private string Month;
private string Date;
private string Day;
private string TimeX;
public DatesWithTime(string month, string date, string day, string timeX)
{
Month = month;
Date = date;
Day = day;
TimeX = timeX;
}
public string CompletingString ()
{
string compString = string.Format ("{0} {1} ({2}) {3}", this.Month.Remove(3), this.Date, this.Day.Remove(2), this.TimeX);
return compString;
}

}

class Tempretures
{
private float CurrentTempreture;
public Tempretures(float currentTempreture)
{
CurrentTempreture = currentTempreture;
}
public string CompletingStringT ()
{
string compStringT = string.Format ("> {0:0.0}", this.CurrentTempreture);
return compStringT;
}
}



class Program
{
public static void Main (string[] args)
{
List<DatesWithTime> DatesList = new List<DatesWithTime> ();
DatesList.Add(new DatesWithTime("June", "14", "Monday", "12:30"));
DatesList.Add(new DatesWithTime("September", "18", "Wednesday", "14:20"));
DatesList.Add(new DatesWithTime("November", "24", "Tuesday", "12:30"));
// DatesList.Add(new DatesWithTime("November", "23", "Tuesday", "12:30")); - добавление лишнего элемента


List<Tempretures> TempList = new List<Tempretures> ();
TempList.Add(new Tempretures(20.8f));
TempList.Add(new Tempretures(19f));
TempList.Add(new Tempretures(25.46f));

if (DatesList.Count == TempList.Count) {
foreach (DatesWithTime i in DatesList) {
int m = DatesList.IndexOf (i);
string uberString = string.Format ("{0} {1}", i.CompletingString (), TempList [m].CompletingStringT ());
Console.WriteLine (uberString);
}
}
else
Console.WriteLine ("Data is not finished");


Console.WriteLine ("hurey!");


Console.ReadKey ();

}
}
}

neronovs 18 янв 2016 14:47

static void Main(string[] args)
{
double[] temp = new double[5] { 25.1, 24.4, 26.9, 31.0, 28.7};
DateTime[] date = new DateTime[5];

date[0] = new DateTime(2015, 06, 01, 10, 0, 0);
date[1] = new DateTime(2015, 06, 11, 10, 0, 0);
date[2] = new DateTime(2015, 06, 21, 10, 0, 0);
date[3] = new DateTime(2015, 07, 01, 10, 0, 0);
date[4] = new DateTime(2015, 07, 11, 10, 0, 0);

for (int i = 0; i < temp.Length; i++)
{
Console.WriteLine(" {0:MMM dd (ddd) HH:mm} > {1:00.0} \u00B0C", date[i], temp[i]);
}

Console.ReadKey();
}

Kolsky 16 янв 2016 21:06

/*
* Сделано в SharpDevelop.
* Пользователь: Kolsky
* Дата: XX.XX.XXXX
* Время: XX:YY
*
* Для изменения этого шаблона используйте Сервис | Настройка | Кодирование | Правка стандартных заголовков.
*/
using System;

namespace n
{
class Program
{
public static void Main(string[] args)
{
double[] t_in_degC=new double[5];
t_in_degC[0]=26.3;
t_in_degC[1]=27.1;
t_in_degC[2]=30;
t_in_degC[3]=24.7;
t_in_degC[4]=25;
DateTime[]at_Time=new DateTime[5];
for(int i=0;i<5;i++)
{
at_Time[i]=new DateTime(2014,6,30,9+i,31,0);
Console.WriteLine("{0:MMM dd (ddd) HH:mm}",at_Time[i]," > "+t_in_degC+" °С");
}
Console.ReadKey(true);
}
}
}

shokirjon 19 окт 2015 18:30
9. Вывести k цифру последовательности 182764125... (кубы натуральных чисел).

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Vitalia 01 окт 2015 21:17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
DateTime[] date = new DateTime [2];
double[] temp = new double[2] {14.5,17.0};

date[0] = new DateTime (2015, 10, 1, 23,59,59);
date[1] = new DateTime(2015, 10, 2, 23, 59, 59);

for (int i = 0; i < date.Length;i++ )

{


Console.WriteLine(" {0:MMMM dd (ddd) HH:mm} температура була рівна ---- {1:00.0} °C", date[i] , temp[i]);

}
}
}
}

Mercurial 29 сен 2015 14:47
static void Main(string[] args)
{
DateTime[] date = new DateTime[3];
double[] t = new double[3];
int i = 0;
date[0] = new DateTime(2015, 12, 25, 23, 00, 00);
date[1] = new DateTime(2015, 12, 25, 23, 30, 00);
date[2] = new DateTime(2015, 12, 26, 00, 00, 00);

t[0] = 25.8;
t[1] = 27.3;
t[2] = 29.0;

foreach (DateTime inc in date)
{
Console.WriteLine(string.Format("{0:MMM dd (ddd) HH:mm} > {1:n1} °C", inc, t[i]));
i++;
}
Console.ReadKey();
}



Вадим 11 авг 2015 17:53
Сорри лишнего запостил, тащемто воть:


DateTime[] dateTime = new DateTime[3];
dateTime[0] = new DateTime(2015, 6, 30, 09, 31, 0);
dateTime[1] = new DateTime(2015, 6, 30, 10, 31, 0);
dateTime[2] = new DateTime(2015, 6, 30, 11, 31, 0);

float[] temperature = new float[3];
temperature[0] = 26.3F;
temperature[1] = 27.1F;
temperature[2] = 30.0F;

for (int i = 0; i < dateTime.Length; i++)
{
string str = String.Format("{0:MMM dd (ddd) HH:mm} > {1:n1} °C", dateTime[i], temperature[i]);
str = str.Substring(0, 1).ToUpper() + str.Remove(0,1);
Console.WriteLine(str);
}

TR 02 июн 2015 11:02
В примере - ошибка:
string formattedString = string.Format(new System.Globalization.CultureInfo("en-US"), "{0:dddd} Money - {1:c}", DateTime.Now, 15);
Console.WriteLine("{0:dddd} Money - {1:c}", DateTime.Now, 15); // "понедельник Money - 15,00 руб."

После указания CultureInfo("en-US") рубли пока не появятся. Шойгу еще только прогревает танки...

Александр_Бугай 22 май 2015 14:56
Если так?
static void Main(string[] args)
{
double []tempArray = new double[5];
string[] date = new string[5];
string datenow = DateTime.Now.ToString("MMM dd (ddd) HH:mm");
date[0] = datenow;
string newDate;
string newMinute;
int minute = Convert.ToInt32(datenow.Substring(15, 2));
newDate = date[0].Remove(15, 2);
for (int i = 0; i < 5; i++)
{
minute = minute + 1;
newMinute = Convert.ToString(minute);
date[i] = newDate + newMinute;
Console.WriteLine(date[i]);
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Input the " + i+1 + "temperature");
tempArray[i] = Convert.ToDouble(Console.ReadLine());
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(date[i] + " > " + tempArray[i] + " C");
}
Console.ReadLine();
}
}

Inna 18 мар 2015 18:10
Ошиблась строчкой:
Console.Write(dt.ToString("dd MMM (ddd) HH:mm"));
вместо:
Console.Write(dt.ToString("dd MMM (dd) HH:mm"));

Inna 18 мар 2015 17:55
class Program
{
static void Main(string[] args)
{
string[] Data = new string[10];
double[] Temperature = { 5.6, 25, 10.2, 25, 23.6, 5, 25.6, 12, 15.4, 10.2 };
DateTime dt = DateTime.Now;
for (int i = 0; i < Data.Length; i++)
{
Console.Write(dt.ToString("dd MMM (dd) HH:mm"));
Console.WriteLine(" => {0,4:0.0} °C", Temperature[i]);
dt = dt.AddHours(1);
}
Console.ReadKey();
}
}

AlexWolf 28 фев 2015 00:15
Максим
---
Спасибо. Понял. Буду пробовать.

Oper
---
Понятно. Значит не стоит заморачиваться по этому поводу. Спасибо за отзыв. )

Oper 27 фев 2015 22:36
AlexWolf
---
Я в своем любительском проекте, крайне приближенном к этому ДЗ занимался построением графика температуры за определенный период, кратко говоря мне нужно было из БД выбрать дату и температуру и передать данные джаваскрипту для отрисовки. Я в цикле выбранную дату и температуру складывал в массив формата [дата, температура] и кучу таких массивов вкладывал в массив, получался огромный массив маленьких массивов, потом это конвертировал в json и передавал джаваскрипту.
Всё это дело у меня крутится на RaspberyPi, где ресурсы крайне ограничены (1 ядро 700 MГц ARMv6), и могу сказать, что данная операция - ничто по сравнению с расходом ресурсов на выборку данных из sqlite.

Максим 27 фев 2015 18:51
AlexWolf
---
1. Предпочтительно использовать массивы для того, для чего они предназначенные, и не пытаться изворотиться и разбить многомерные данные на несколько одномерных массивов. Если вас интересует скорость и производительность, вам стоит копнуть в сторону структур данных, массив - это всего лишь один из представителей. Деревья, связные списки, и другое.
2. Cтроку нужно конвертить в DateTime, чтобы форматироваь дату.

AlexWolf 27 фев 2015 17:49
Все сделал следуя строго условиям задачи. Но мне кажется было бы интереснее, если использовать не массив дат и времени а тип DataTime.
И как всегда пара вопросов :)
1 - Что по ресурсоемкости и скорости выполнения наиболее предпочтительно, много одномерных массивов или несколько многомерных?
2 - Если указать в аргументах дату (например 12.03.2015) вручную, как тип string. Как ее форматнуть, чтобы он поменял номер месяца 03 на его название МАРТ? Или он не сможет распознать дату?

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double[] temp = new double[] { 20, 22.5, 21.3, 19.3, 17.8, 18.3, 19, 21.2 };
string[] data = new string[] { "Июнь 15 (Ср) 00:00", "Июнь 15 (Ср) 06:00", "Июнь 15 (Ср) 12:00", "Июнь 15 (Ср) 18:00", "Июнь 16 (Чт) 00:00", "Июнь 16 (Чт) 06:00", "Июнь 16 (Чт) 12:00", "Июнь 16 (Чт) 18:00" };
for (int i = 0; i < 8; i++)
{
Console.WriteLine("{0:-10} > {1:00.0 °C}", data[i], temp[i]);
}
Console.ReadKey();
}
}
}

Oper 27 фев 2015 17:13
Согласно ТЗ:
using System;

namespace L28
{
class Program
{
static void Main(string[] args)
{
string[] datesArr = { "30.06.2014 09:31", "30.06.2014 10:31", "30.06.2014 11:31", "30.06.2014 12:31", "30.06.2014 13:31", "31.12.2014 08:17" };
float[] temperaturesArr = { 26.3f, 27.1f, 30f, 24.7f, 25f, -7.291f };

for (int i = 0; i < datesArr.Length; i++)
Console.WriteLine("{0:MMM dd (ddd) HH:mm} > {1:f1} °C", DateTime.Parse(datesArr[i]), temperaturesArr[i]);
Console.ReadKey();
}
}
}

Виталий 24 фев 2015 16:10
Сделал! Оказывается неправильно форматнул в Console.WriteLine():

class Program
{
static void Main(string[] args)
{

string[] time = new string[4] { "25.02.2015 12:00", "25.02.2015 13:00", "25.02.2015 14:00", "25.02.2015 15:00" };
string[] weather = new string[4] { " + 5", " + 1", " - 3", " - 5"};
for (int i = 0; i < 4; i++)
{
string.Format("<MMM dd (ddd) H:mm>", time[i]);
string.Format("<0#.0>", weather[i]);
Console.WriteLine(time[i] + weather[i]);
Console.ReadKey();
}
}
}

Виталий 24 фев 2015 12:58
В последнее время очень много ошибок. И, конечно же, это очередная. Вопрос как и прежде: где ошибка?

class Program
{
static void Main(string[] args)
{

string[] time = new string[4] { "25.02.2015 12:00", "25.02.2015 13:00", "25.02.2015 14:00", "25.02.2015 15:00" };
string[] weather = new string[4] { "+ 5", "+1", "- 3", "- 5"};
for (int i = 0; i < 3; i++)
{
Console.WriteLine("MMM dd (ddd) H:mm" , time[i] + "00.0", weather[i]);
Console.ReadKey();
}
}
}

Lev 29 дек 2014 18:49
double[] tem = new double[] {26.3, 27.1, 30, 24.7, 25};
string d = DateTime.Now.ToString("MMM dd (ddd) H:mm");
List<DateTime> dates = new List<DateTime>();
dates.Add(DateTime.Now);
dates.Add(DateTime.Now.AddHours(2));
dates.Add(DateTime.Now.AddHours(4));
dates.Add(DateTime.Now.AddHours(6));
dates.Add(DateTime.Now.AddHours(8));
int i = 0;
while (i < dates.Count)
{
Console.WriteLine("{0} > {1} °C", dates[i].ToString("MMM dd (ddd) H:mm"), tem[i]);
i++;
}
Console.ReadKey();

Максим 29 дек 2014 13:27
pinguin-linuxoid
---
Да, вы правы, исправил

pinguin-linuxoid 28 дек 2014 17:34
Уважаемый Админ - мне показалось что по контексту наоборот - при отрицательной ширине - пробелы с права а при положительной - с лева. Я могу ошибатся.

Диманиак 05 дек 2014 13:56
только название месяца не с большой буквы

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] dtime = new string[8] { "05.12.2014 0:00", "05.12.2014 3:00", "05.12.2014 6:00", "05.12.2014 9:00", "05.12.2014 12:00" , "05.12.2014 15:00", "05.12.2014 18:00", "05.12.2014 19:00"};
double[] temp = new double[8] { -3.2, -1.1, -0.8, 0, 1.3, -2.3, -4.2, -5.9 };
for (int i = 0; i < dtime.Length; i++)
{
Console.WriteLine("{0:MMM dd (ddd) HH:mm} > {1,6:f}", DateTime.Parse(dtime.ElementAt(i)), temp.ElementAt(i));
}
Console.ReadKey();
}
}
}

beronny 11 ноя 2014 23:46
Всё, проблема решена! Просто сразу написал как должно вывести, а потом в каком формате, вот:

int a = Convert.ToInt32(textBox1.Text);
double b = 0.333333333333334;
double c = Math.Pow(a,b);
label3.Text = "= " + c;
label3.Text = string.Format("{0:#.####}", c);
label3.ForeColor = Color.Red;

beronny 11 ноя 2014 23:42
Не, тогда получается тоже самое... Этими двумя присваиваниями и имел ввиду что выводить в таком формате, но после "=" .

Максим 10 ноя 2014 19:25
beronny
---
А что это за два последоватильных присваивания?

label3.Text = string.Format("{0:#.#}", c);
label3.Text = "= " + c;

Сначала Вы записали в label формативарованный текст, а дальше заменили его на "= " + c. Может Вы хотели добавить эту часть к формативарованному тексту так:
label3.Text += "= " + c;


beronny 10 ноя 2014 00:02
Админ, хэлп!)))
как сделать нужный формат, вроде написал как нужно, а выдаёт кучу нулей после запятой!

int a = Convert.ToInt32(textBox1.Text);
double b = 0.333333333333334;
double c = Math.Pow(a,b);
label3.Text = string.Format("{0:#.#}", c);
label3.Text = "= " + c;
label3.ForeColor = Color.Red;

Максим 02 окт 2014 14:43
Firik
---
Ну да, на место 0 подставляется DateTime.Now.AddHours(i), на место 1 - Temp[i]

Firik 02 окт 2014 12:46
указывается номер аргумента?

Firik 02 окт 2014 12:37
почему тут единица? {1:00.0}

Максим 04 июл 2014 15:05
cooleo
---
Да, отлично

cooleo 04 июл 2014 11:18
Может так?

double[] Temp = new double[] { 26.3, 27.1, 30, 24.7, 25 };
for (int i = 0; i < Temp.Length; i++)
{
Console.WriteLine("{0:MMM dd (ddd) hh:mm} > {1:00.0}",DateTime.Now.AddHours(i), Temp[i]);
}
Console.ReadKey();


Добавить комментарий:

Имя (обязат.)
E-mail (обязат., не публикуется)


Для вставки ваших программ пользуйтесь кнопкой "исходный код"
Вёрстка сайта с нуля

Уникальный Видеокурс!

"Научись верстать сайты и заработай на этом!"

Получить видеокурс

Подпишись на курс по программированию, и узнавай первым о новых уроках!

RSS подписка Страничка Вконтакте Мы в Twitter

Ошибка в тексте? Выделите ее мышкой и нажмите Ctrl+Enter
Поблагодарить автора: Номер карты (ПриватБанк)
5168 7572 4170 8660
WebMoney
R372544961915 U685637142028 Z999792764387
Наверх
Система Orphus