Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для samarcs
0 / 0 / 2
Регистрация: 01.08.2012
Сообщений: 82

Использование структур struct

08.01.2013, 21:59. Показов 1129. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Писал код по методичке, потом уже вконец запутался и не могу понять как сделать правильно. Подскажите хорошо растолкованную тему по структурам.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <vcl.h>
#include <tchar.h>
#include <iostream.h>
#include <math.h>
#include <string.h>
#pragma argsused
#pragma hdrstop
/*
6.Дан массив структур, в котором содержатся сведения вида:
шифр  кафедры,  кол-во студентов, кол-во отличников, кол-во не аттестованных.
Требуется подсчитать об-щее количество неаттестованных.
*/
//Тип структуры Info с информацией о студентах и шифре кафедры.
struct Info
{
    char shifr[20];
    char costud[40];
    char otstud[40];
    char nostud[40];
};
//Создание массив структур для инициализации данных
Info InitList[5] = {{100400,30,15,15},{200400,40,20,20},
                   {300400,20,10,10},{400400,30,15,15},
                   {500400,10,5,5}};
//Прототипы
void CinN (int &n);  //Ввод n - кол-ва структур
void GetListFromInit(Info* List, int n); //Значения из InitList
void GetListFromScreen(Info* List, int n);  //Ввод значений
void PuListToScreen(Info* List, int n);   //Вывод на экран
float NoAt(Info* List, int n); //Поиск кол-во неаттестованных
 
 
//Ввод n
void CinN (int &n)  //Ввод n
{
// Параметры:
// n - Количество структур
    cout<<"Enter n"<<endl;
    cin>>n;
}
 
void GetListFromInit(Info* List, int n) //присвоить значения из InitList
{
//Параметры:
// List  - указатель на массив структур - входной, значения на выход
//n - количество структур - входной
   for(int i=0;i<n;i++)
    {
     //strcpy - копировать строку в строку - обычное присваивание невозможно
     // strcpy(List[i].shifr, InitList[i].shifr);
      //strcpy(List[i].Address, InitList[i].Address);
       strcpy(List[i].shifr, InitList[i].shifr);
       strcpy(List[i].costud, InitList[i].costud);
       strcpy(List[i].otstud, InitList[i].otstud);
       strcpy(List[i].nostud, InitList[i].nostud);      //обычное присваивание
     }
}
 
void GetListFromScreen(Info* List, int n)  //ввести значения с экрана -
{
//Параметры:
// List  - указатель на массив структур - входной, значения на выход
//n - количество структур - входной
 
   for(int i=0;i<n;i++)
     {
        cout<<"Enter:"<<endl;
        cin>>List[i].shifr;
        cin>>List[i].costud;
        cin>>List[i].otstud;
        cin>>List[i].nostud;
     }
}
 
void PuListToScreen(Info* List, int n)   //печать или вывод на экран
{
//Параметры:
// List  - указатель на массив структур - входной
//n - количество структур - входной
   cout<<"Shifr"<<"    "<<"Col-vo Studentov"<<"   "<<"Otlichniki col-vo"<<"Neuspevaushie col-vo"<<endl;
   cout<<"____________________________"<<endl;
   for(int i=0;i<n;i++)
     {
        cout<<List[i].shifr<<"  ";
        cout<<List[i].costud<<"  ";
        cout<<List[i].otstud<<"  ";
        cout<<List[i].nostud<<endl;
     }
}
 
float NoAt(Info* List, int n)   //Поиск кол-во неаттестованных
{
//Параметры:
// List  - указатель на массив структур - входной
//n - количество структур - входной
//возвращает средний возраст
   float Sum = 0; //подготовка ячейки для суммирования
   for(int i=0;i<n;i++)
     Sum += List[i].nostud;
   return (float)Sum/n; // вернуть среднее
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    Info List[5];     // описание массива структур из 5 элементов
    GetListFromInit(List,5);   //присвоить значения из инициализированного массива
    GetListFromScreen(List,5);   //ввести значения с экрана
    PuListToScreen(List,5);   //напечатать значения элементов массива структур
    float S = NoAt(List,5);  //
    system("pause");
    return 0;
 
}
Вроде бы простейшая задачка, но вот структуры рубят((
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2013, 21:59
Ответы с готовыми решениями:

Использование Struct
Условие: Создать массив структур, используя данные из задания. Создать программное приложение, которое включает его обработку с...

использование vector и struct
недавно пересел на С++, пытаюсь сделать программу, которую я делал на паскале struct elem { long Li; long Ri; }; int...

Использование строк.Использование структур
Задачка: Дана строка,состоящая из групп нулей и едениц. Найти и вывести на экран группы с нечетным количеством символов. И еще одна: ...

5
ComfyMobile
 Аватар для Nixy
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
08.01.2013, 23:57
C++
1
2
3
4
5
6
7
struct Info
{
    char shifr[20];
    char costud[40];
    char otstud[40];
    char nostud[40];
};
а вы уверены что рационально все эти поля содержать как массив символов, не лучше было их в числовые типы перевести?

Добавлено через 4 минуты
единственное что шифр еще куда ни шло, но вот количество , сразу напрашивается int, я вот заменил у вас это и все прекрасно работает

Добавлено через 1 минуту
C++
1
  float S = NoAt(List,5);  //
и еще вы посчитали, не забудьте вывести
1
 Аватар для samarcs
0 / 0 / 2
Регистрация: 01.08.2012
Сообщений: 82
09.01.2013, 06:19  [ТС]
Цитата Сообщение от Nixy Посмотреть сообщение
C++
1
2
3
4
5
6
7
struct Info
{
    char shifr[20];
    char costud[40];
    char otstud[40];
    char nostud[40];
};
а вы уверены что рационально все эти поля содержать как массив символов, не лучше было их в числовые типы перевести?

Добавлено через 4 минуты
единственное что шифр еще куда ни шло, но вот количество , сразу напрашивается int, я вот заменил у вас это и все прекрасно работает

Добавлено через 1 минуту
C++
1
  float S = NoAt(List,5);  //
и еще вы посчитали, не забудьте вывести
изначально все и было в int, но на этом этапе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void GetListFromInit(Info* List, int n) //присвоить значения из InitList
{
//Параметры:
// List  - указатель на массив структур - входной, значения на выход
//n - количество структур - входной
   for(int i=0;i<n;i++)
    {
     //strcpy - копировать строку в строку - обычное присваивание невозможно
     // strcpy(List[i].shifr, InitList[i].shifr);
      //strcpy(List[i].Address, InitList[i].Address);
       strcpy(List[i].shifr, InitList[i].shifr);
       List[i].costud= InitList[i].costud;
       List[i].otstud= InitList[i].otstud;
       List[i].nostud= InitList[i].nostud;      //обычное присваивание
     }
}
начинаются проблемы, пишет Lvalue required, почитал форум везде советы в char перевести((
0
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
09.01.2013, 08:28
Цитата Сообщение от samarcs Посмотреть сообщение
изначально все и было в int
Так было?
C++
1
2
3
4
5
6
7
struct Info
{
    char shifr[30];
    int costud;
    int otstud;
    int nostud;
};
Если да, то функция нормально компилируется:
C++
1
2
3
4
5
6
7
8
9
10
void GetListFromInit(Info* List, int n)
{
    for(int i=0;i<n;i++)
    {
        strcpy(List[i].shifr, InitList[i].shifr);
        List[i].costud = InitList[i].costud;
        List[i].otstud = InitList[i].otstud;
        List[i].nostud = InitList[i].nostud; 
    }
}
Массив только инициализируете значениями не тех типов:
C++
1
2
3
Info InitList[5] = {{"100400",30,15,15},{"200400",40,20,20},
                   {"300400",20,10,10},{"400400",30,15,15},
                   {"500400",10,5,5}};
1
ComfyMobile
 Аватар для Nixy
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
09.01.2013, 10:07
Цитата Сообщение от samarcs Посмотреть сообщение
ачинаются проблемы, пишет Lvalue required, почитал форум везде советы в char перевести((
какие то советчики плохие или вы не правильно сформулировали для них вопрос
Schizorb, все верно расписал, и не забудьте про среднее )
C++
1
float S = NoAt(List,5);  //
0
 Аватар для samarcs
0 / 0 / 2
Регистрация: 01.08.2012
Сообщений: 82
09.01.2013, 19:06  [ТС]
Спасибо всем) но я уже сделал на занятии)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2013, 19:06
Помогаю со студенческими работами здесь

Использование структур
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; #include&lt;stdio.h&gt; #include&lt;windows.h&gt; using...

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

с++ Использование структур
Даны сведения о кубиках: размер кубика, его цвет, материал.Найти количество кубиков каждого из перечисленных цветов и их суммарный объем.

Использование структур
Здравствуйте. Помогите решить нижеследующую задачу. В данный момент нужно переделать данную задачу с использованием структур. Целый день...

Использование структур
В прайс-листе с.ц. находится информация о номере модели телефона, номеров комплектующих деталей и их стоимости. Вывести список...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru