10.2 Құрылым массивін қолдану
Компьютер жадысында ақпаратты көрсетудің жиі қолданылатын формаларының бірі - жазбалар массиві түрінде деректерді ұйымдастыру. 10.1 есебін мысалға ала отырып деректерді өңдейтін, жазбалар массиві түрінде көрсетілген кейбір алгоритмдерді қарастырайық.
10.1-есеп. Студенттер туралы кездейсоқ 20 жазбалар массивін құру. Әрбір жазба студенттің тегі (алты кездейсоқ әріп, біріншісі бас әріп) мен "Физика. Тарих. Матем. Бағдарл. Информ." пәндерінің бес кездейсоқ бағаларынан тұрады.
Құрылған жазбалар массивін шығару. Әрбір студент бойынша бағалар қосындысын есептейтін және шығаратын өңдеу жұмысын орындау керек.
Емтиханнан ең үлкен және ең кіші бағалар алған студенттерді монитор экранына шығару керек.
Кодтар кестесінде бас әріптер (кириллица) 1040 – 1071 нөмерлерінде, ал кіші әріптер 1072 – 1102 аралығында орналасады. Сондықтан студент тегін жазғанда бірінші әріп бірінші диапазоннан, ал қалған бес әріп екінші диапазоннан алынады.
Бағдарлама коды:
using System;
namespace ConsoleApplication1
{
class Program
{
public struct stydent
{
public string fio;
public int[] ocen;
};
public static stydent[] styd = new stydent[20];
public static void sozd()
{
char c;
string s;
int k, j = 0;
char[] buka = new char[6];
Random rd = new Random();
for (int i = 0; i < 20; i++)
{
styd[i].ocen = new int[6];
j = rd.Next(32) + 1040;
buka[0] = (char)(j);
s = buka[0].ToString();
for (int m = 1; m < 6; m++)
{
j = rd.Next(32) + 1072;
buka[m] = (char)(j);
s = s + buka[m].ToString();
k = rd.Next(4) + 2;
styd[i].ocen[m - 1] = k;
}
styd[i].fio = s;
}
Console.WriteLine("Studentter tizimi kyrildi");
}
public static void printz()
{
Console.Write("Nomer \t");
Console.Write("Ati-zhoni \t");
Console.Write("Fizika \t");
Console.Write("Tarih. \t");
Console.Write("Matem. \t");
Console.Write("Bagdarl. \t");
Console.Write("Informat. \t");
Console.WriteLine();
for (int i = 0; i < 20; i++)
{
Console.Write("{0}\t{1}\t", i + 1, styd[i].fio);
for (int m = 0; m < 5; m++)
Console.Write("{0}\t", styd[i].ocen[m]);
Console.WriteLine();
}
Console.WriteLine();
}
public static void stat()
{
int k, j;
Console.Write("ФИО \t");
Console.WriteLine("Ball kosindisi");
for (int i = 0; i < 20; i++)
{
k = 0;
for (j = 0; j < 5; j++)
k = k + styd[i].ocen[j];
Console.WriteLine("{0} {1}", styd[i].fio, k);
styd[i].ocen[5] = k;
}
Console.WriteLine();
}
public static void maxmin()
{
int k = 0, j = 0;
int maxi = -100;
int mini = 150;
for (int i = 0; i < 20; i++)
{
if (maxi < styd[i].ocen[5])
{ maxi = styd[i].ocen[5]; j = i; }
if (mini > styd[i].ocen[5])
{ mini = styd[i].ocen[5]; k = i; }
}
Console.WriteLine();
Console.WriteLine("{0} - Maksimal baldi {1} aldi", maxi, styd[j].fio);
Console.WriteLine("{0} - Manimal baldi {1} aldi", mini, styd[k].fio);
}
static void Main(string[] args)
{ sozd();
printz();
stat();
maxmin();
Console.ReadLine();
}
}
}
Бағдарлама жұмысы:
Studentter tizimi kyrildi
Nomer Ati-zhoni Fizika Tarih. Matem. Bagdarl. Informat.
1 Юаьоюю 2 2 4 2 4
2 Тфютьз 3 3 3 2 3
3 Прилюс 5 5 3 4 4
4 Ьлшвйъ 3 4 4 4 5
5 Алъпам 5 3 4 3 5
6 Фсбфтз 4 5 2 2 2
7 Яшфылф 2 4 3 4 3
8 Чппюов 3 5 5 4 2
9 Ьчзждц 5 4 5 2 4
10 Алъщчх 2 5 4 2 3
11 Дътфцс 2 3 2 4 5
12 Щыыжоу 3 3 2 4 5
13 Жондщю 2 2 2 5 4
14 Стеъюа 5 2 3 3 5
15 Гтслхг 2 5 3 4 4
16 Лфппфу 4 5 2 5 5
17 Йкэджк 4 3 2 4 5
18 Злзжмй 4 4 4 3 3
19 Щзтььд 3 4 5 4 3
20 Дйъвпр 5 2 3 3 3
ФИО Ball kosindisi
Юаьоюю 14
Тфютьз 14
Прилюс 21
Ьлшвйъ 20
Алъпам 20
Фсбфтз 15
Яшфылф 16
Чппюов 19
Ьчзждц 20
Алъщчх 16
Дътфцс 16
Щыыжоу 17
Жондщю 15
Стеъюа 18
Гтслхг 18
Лфппфу 21
Йкэджк 18
Злзжмй 18
Щзтььд 19
Дйъвпр 16
21 - Maksimal baldi Прилюс aldi
14 - Manimal baldi Юаьоюю aldi
Бағдарламада әрбір студент бағасының қосындысын сақтау үшін массивте қосымша бағана қолданылған.
Достарыңызбен бөлісу: |