Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198

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

21.05.2014, 17:09. Показов 3103. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
РАБОТА С СТРУКТУРОЙ .Дана информация о студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о старших по возрасту студентах, предполагая, что год рождения может быть одинаков.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2014, 17:09
Ответы с готовыми решениями:

Вывести данные о старших по возрасту студентах, предполагая что год рождения может быть одинаков
1. Дана информация о шести студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о старших по...

Вывести данные о старших по возрасту студентах
Дана информация о шести студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о старших...

Вывести данные о старших по возрасту студентах
Задание: Дана информация о студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о старших по...

11
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,342
Записей в блоге: 3
22.05.2014, 06:42
Не совсем понятно... Надо найти самого старшего студента? Или студентов, дата рождения которых больше какой-то определенной даты?
1
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
22.05.2014, 10:55  [ТС]
D1973, Нужно вывести страшего, но если будут одинаковые года рождения, то вывести обоих, я думаю так.
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,342
Записей в блоге: 3
22.05.2014, 20:18
Ну тогда в структуру, кроме года рождения, включить дополнительно месяц и день. Берем откуда-нибудь список студентов (считываем из файла, вводим руками, генерим рандомно и т.д.) и проходим по нему, сравнивая года рождения - банальная сортировка массива. Если год совпадает - проверяем месяц, далее день... Самого старого - на сцену. Идея понятна?
1
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
23.05.2014, 00:16  [ТС]
D1973, Пытался все-таки сделать, совсем не правильно конечно с выбором старшего студента,уже не знаю как это сделать, помогите исправить ошибку..
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
#include <clx.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 //struct.c
#include<iostream.h>
#include<windows.h>
#pragma argsused
struct student {char fam [20];char mestoroj[20];int god; char fac[20];}p[2];
int N=2;
int main(int argc, char* argv[])
{ int i, x, max; char str[50];
 for(i=0;i<N;i++)
 {CharToOem(" Введите фамилию студента:",str);
 cout<<str<<endl;cin>>p[i].fam;
 CharToOem("Введите год рождения:",str);
 cout<<str<<endl;cin>>p[i].god;
 CharToOem("Введите место рождения:",str);
 cout<<str<<endl; cin>>p[i].mestoroj;
 CharToOem("Факультет:",str);
 cout<<str<<endl; cin>>p[i].fac;
}
 max=p[i].god;
 
 for(i=0;i<N;i++)
 if(p[i].god>max)
 
     max=p[i].god;
 
 CharToOem("Старшие по возрасту студенты:",str);
 cout<<str<<x;
 cin>>x;
 system("pause");
 
 
        return 0;
}
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,342
Записей в блоге: 3
23.05.2014, 08:40
Лучший ответ Сообщение было отмечено mraZzzb как решение

Решение

Ну вот так как-то...
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "Unit4.h"
#include <vector>;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm4 *Form4;
struct TStudents {String FIO;
                  int Year;
                  String Place;
                  String Facultet;};
TStudents  st1;
int rCount = 2;
std::vector<TStudents> Stud;
std::vector<TStudents> OldStud;
//---------------------------------------------------------------------------
__fastcall TForm4::TForm4(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm4::FormCreate(TObject *Sender)
{
  StringGrid1->Cells[0][0] = "ФИО";
  StringGrid1->Cells[1][0] = "Год";
  StringGrid1->Cells[2][0] = "Место рождения";
  StringGrid1->Cells[3][0] = "Факультет";
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button1Click(TObject *Sender)
{
  unsigned short y,m,d;
  if(Edit1->Text.Trim().IsEmpty() || Edit2->Text.Trim().IsEmpty() || ComboBox1->ItemIndex == -1)
   {
      ShowMessage("Не все данные заполнены");
      return;
   }
  DecodeDate(DateTimePicker1->Date,y,m,d);
  StringGrid1->RowCount = rCount;
  st1.FIO = Edit1->Text;
  st1.Year = y;
  st1.Place = Edit2->Text;
  st1.Facultet = ComboBox1->Text;
  Stud.push_back(st1);
  StringGrid1->Cells[0][rCount-1] = st1.FIO;
  StringGrid1->Cells[1][rCount-1] = IntToStr(st1.Year);
  StringGrid1->Cells[2][rCount-1] = st1.Place;
  StringGrid1->Cells[3][rCount-1] = st1.Facultet;
  Edit1->Text = "";
  Edit2->Text = "";
  ComboBox1->ItemIndex = -1;
  Edit1->SetFocus();
  rCount++;
}
//---------------------------------------------------------------------------
void __fastcall TForm4::Button2Click(TObject *Sender)
{
  int MinYear = Stud[0].Year;
  rCount = 2;
  StringGrid2->RowCount = rCount;
  for(unsigned int i=0; i < Stud.size(); i++)
    if(Stud[i].Year < MinYear) MinYear = Stud[i].Year;
  for(unsigned int i=0; i < Stud.size(); i++)
    if(Stud[i].Year == MinYear) OldStud.push_back(Stud[i]);
  for(unsigned int i=0; i < OldStud.size(); i++)
   {
     if(rCount > 2) StringGrid2->RowCount = rCount;
     StringGrid2->Cells[0][rCount-1] = OldStud[i].FIO;
     StringGrid2->Cells[1][rCount-1] = IntToStr(OldStud[i].Year);
     StringGrid2->Cells[2][rCount-1] = OldStud[i].Place;
     StringGrid2->Cells[3][rCount-1] = OldStud[i].Facultet;
     rCount++;
   }
}
//---------------------------------------------------------------------------
Миниатюры
Структуры: вывести данные о старших по возрасту студентах, предполагая, что год рождения может быть одинаков  
2
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
23.05.2014, 11:23  [ТС]
D1973, спасибо конечно, мне желательно убрать этот tform, так как мы этого не прошли еще
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,342
Записей в блоге: 3
23.05.2014, 14:16
Лучший ответ Сообщение было отмечено mraZzzb как решение

Решение

Странно, конечно. Работа в C++ Builder как бы подразумевает прежде всего работу именно с формой.
Ну держи консольный вариант
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
#pragma hdrstop
#pragma argsused
 
#include <stdio.h>
#include <iostream>
#include<windows.h>
 
using namespace std;
 
struct TStudents {char FIO [20];
                  char Place[20];
                  int Year;
                  char Fac[20];};
int N = 3;
int main(int argc, char* argv[])
{
  int MinYear, j = 0;
  char str[50];
  TStudents Stud[3];
  TStudents OldStud[3];
  for(int i=0; i < N; i++)
   {
     cout << i + 1 << ".";
     CharToOem(" Введите фамилию студента:",str);
     cout << str << endl;
     cin >> Stud[i].FIO;
     CharToOem("Введите год рождения:",str);
     cout << str << endl;
     cin >> Stud[i].Year;
     CharToOem("Введите место рождения:",str);
     cout << str << endl;
     cin >> Stud[i].Place;
     CharToOem("Факультет:",str);
     cout << str << endl;
     cin >> Stud[i].Fac;
   }
  MinYear = Stud[0].Year;
  for(int i=0; i < N; i++)
    if(Stud[i].Year < MinYear) MinYear = Stud[i].Year;
  for(int i=0; i < N; i++)
   {
     if(Stud[i].Year == MinYear)
      {
        OldStud[j] = Stud[i];
        j++;
      }
   }
  for(int i = 0; i < j; i++)
   {
     CharToOem("%s, %d г.р., г.%s, факультет: %s \n",str);
     printf(str,OldStud[i].FIO, OldStud[i].Year, OldStud[i].Place, OldStud[i].Fac);
   }
  system("pause");
  return 0;
}
2
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
23.05.2014, 19:14  [ТС]
D1973, Ее чуть-чуть попроще нельзя сделать? Или это максимум?))
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,342
Записей в блоге: 3
23.05.2014, 19:47
Да, вроде, и тут ничего особо сложного... Наполовину это твой изначальный код - там, где вводим массив структур.
Дальше проходимся по введенному массиву и находим наименьший год (37-39 стр.). Потом ищем, сколько человек в этом году числится и добавляем этих людей во второй массив (40-47). И в финале показываем массив самых взрослых студентов (48-52).
А что, какое-то ограничение на количество строк программы или где-то что-то непонятно?
0
23 / 23 / 1
Регистрация: 06.04.2014
Сообщений: 198
23.05.2014, 21:41  [ТС]
D1973, Не могу никак разобраться со строками: 12 ,17,19,20,
0
Модератор
 Аватар для D1973
9903 / 6441 / 2454
Регистрация: 21.01.2014
Сообщений: 27,342
Записей в блоге: 3
24.05.2014, 08:10
Строки с 10 по 13 - объявление структуры TStudents, состоящей из 4-х полей: три символьных поля FIO (ФИО студента), Place (Место рождения) и Fac (Факультет), а также целочисленное поле Year (год рождения). Все это дело, естественно, можно было записать в одну строку, но я привык структуры по полям разносить для наглядности.
Строка 17. - Объявляем 2 целочисленные переменные
MinYear - сюда запишем минимальное из значений всех введенных полей Year (т.е. наименьшее значение года рождения из всех введенных).
j - переменная индекса массива старших студентов
Строки 19, 20 - объявления 2-х массивов из 3-х элементов (ну это я для примера сделал 3, чтобы при проверке много данных не вводить, при сдаче можешь сделать сколько хочешь, только тогда не забудь изменить значение переменной N в строке 14 на то же число, что и размерность массивов). Массивы состоят из структур типа TStudents. В первый массив (Stud[3]) мы вводим данные руками - это список всех студентов, во второй (OldStus[3]) - записываем структуры, которыми описаны самые старшие студенты, т.е. с минимальным значением поля Year (год рождения). Второй массив нужен как раз для того, что по условию студентов одного г.р. может быть несколько. Размерности этих массивов сделал равными, т.к., по логике, все студенты могут быть с одного года и в этом случае массивы будут просто равны
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2014, 08:10
Помогаю со студенческими работами здесь

Записи. Вывести данные о старших по возрасту студентах
1. Дана информация о шести студентах. Запись имеет вид: фамилия, год рождения, место рождения, факультет. Вывести данные о старших по...

Вывести данные о студентах: номер, фамилию, год рождения, пол, курс, вид спорта
Доброго времени суток. Помогите с задачей. Составить программу, которая вводит данные о студентах: № п/п, фамилию, год рождения, пол,...

Определить года рождения двух самых, старших по возрасту людей
PASCAL ABC В массиве хранится информация о годе рождения каждого из 30 человек. Определить года рождения двух самых, старших по возрасту...

Определить года рождения двух самых старших по возрасту людей
В массиве хранится информацыя о годе рождения каждого из 30 человек.Определить года рождения двух самых старших по возрасту людей .При...

Определить года рождения двух самых старших по возрасту людей
//В массиве хранится информация о годах рождения нескольких человек.// //Var ...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru