Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
HEAD5
0 / 0 / 1
Регистрация: 08.01.2014
Сообщений: 46
1

Структурный тип данных

13.06.2014, 01:07. Просмотров 592. Ответов 4
Метки нет (Все метки)

Ученики школы характеризуются данными: фамилия, улица, дом, квартира. Обеспечить ввод и вывод информации о 3х учениках. a) Определить, сколько учеников живет на улице Горького. b) Определить учеников, живущих в доме номер 45. Вот код:
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
115
116
117
118
119
120
121
122
123
124
125
//$$---- Form CPP ----
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
struct school
{
    AnsiString Surname;
    AnsiString Street;
    int House;
    int Flat;
};
school P1,P2,P3;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
   if(Edit1->Text!="" && Edit2->Text!="" && Edit3->Text!="" && Edit4->Text!="")
    if(StrToInt(Edit3->Text)>0 && StrToInt(Edit4->Text)>0)
    {
      P1.Surname=Edit1->Text;
      P1.Street=Edit2->Text;
      P1.House=StrToInt(Edit3->Text);
      P1.Flat=StrToInt(Edit4->Text);
      Edit1->Clear();
      Edit2->Clear();
      Edit3->Clear();
      Edit4->Clear();
    }
       else
        ShowMessage("Невозможно");
  else
      ShowMessage("Заполните все поля");
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
   if(Edit1->Text!="" && Edit2->Text!="" && Edit3->Text!="" && Edit4->Text!="")
      if(StrToInt(Edit3->Text)>0 && StrToInt(Edit4->Text)>0)
  {
      P2.Surname=Edit1->Text;
      P2.Street=Edit2->Text;
      P2.House=StrToInt(Edit3->Text);
      P2.Flat=StrToInt(Edit4->Text);
      Edit1->Clear();
      Edit2->Clear();
      Edit3->Clear();
      Edit4->Clear();
  }
       else
        ShowMessage("Невозможно");
  else
      ShowMessage("Заполните все поля");
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
    if(Edit1->Text!="" && Edit2->Text!="" && Edit3->Text!="" && Edit4->Text!="")
       if(StrToInt(Edit3->Text)>0 && StrToInt(Edit4->Text)>0)
  {
      P3.Surname=Edit1->Text;
      P3.Street=Edit2->Text;
      P3.House=StrToInt(Edit3->Text);
      P3.Flat=StrToInt(Edit4->Text);
      Edit1->Clear();
      Edit2->Clear();
      Edit3->Clear();
      Edit4->Clear();
  }
       else
         ShowMessage("Невозможно");
  else
      ShowMessage("Заполните все поля");
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{
   ShowMessage("Ученик: "+P1.Surname+ "\nУлица: "+P1.Street+ "\nДом №: "+IntToStr(P1.House)+ "\nКвартира №: "+IntToStr(P1.Flat));
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button5Click(TObject *Sender)
{
   ShowMessage("Ученик: "+P2.Surname+ "\nУлица: "+P2.Street+ "\nДом №: "+IntToStr(P2.House)+ "\nКвартира №: "+IntToStr(P2.Flat));
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button6Click(TObject *Sender)
{
    ShowMessage("Ученик: "+P3.Surname+ "\nУлица: "+P3.Street+ "\nДом №:"+IntToStr(P3.House)+ "\nКвартира №: "+IntToStr(P3.Flat));
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button7Click(TObject *Sender)
{
    AnsiString List="";
    if(P1.House==45)
    {
              List+="\nУченик:"+(P1.Surname);
    }
    if(P2.House==45)
        {
              List+="\nУченик:"+(P2.Surname);
        }
    if(P3.House==45)
              List+="\nУченик: "+(P3.Surname);
    if(List!="")
        ShowMessage("Ученики, живущие в доме 45:"+List);
    else
        ShowMessage("Нет таких учеников");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::Button8Click(TObject *Sender)
{
 
}
//---------------------------------------------------------------------------
Всё работает правильно.
Вопрос такой:
Каким кодом можно определить сколько учеников живёт на улице Горького?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2014, 01:07
Ответы с готовыми решениями:

Динамический структурный масив
#include&lt;iostream&gt; using namespace std; struct student {char*name; int kurs; float raiting;};...

Тип данных ф-ции.
Привет всем. При написании сего кода: void clc(TObject* Sender) { ShowMessage(&quot;FUCK...

Точный тип данных
Подскажите пожаоуйста самый точный тип данных в который можно перевести из AnsiString В вопросах,...

Тип данных float
Здравствуйте. У меня проблема с типом данных. С текстового файла я считываю цифры типа 0.00300,...

Тип данных 6 байт
занялась виртуальной машиной, а у меня там целый и дробный тип данных имеет размер 6 байт. причём у...

4
D1973
Модератор
4100 / 2948 / 1420
Регистрация: 21.01.2014
Сообщений: 12,591
Записей в блоге: 3
Завершенные тесты: 1
13.06.2014, 06:13 2
Да точно таким же, как Вы определяли, сколько учеников живет в доме 45, только вместо
C++
1
if(P1.House == 45)
укажите
C++
1
if(P1.Street == "Горького")
И т.д. для всех учеников
Хотя на Вашем месте я бы сделал через массив структур; код был бы намного оптимальнее.
0
HEAD5
0 / 0 / 1
Регистрация: 08.01.2014
Сообщений: 46
13.06.2014, 11:11  [ТС] 3
В первом коде, при нажатии кнопки определялись ученики, живущие в доме 45.
В условие а) этот код не пройдёт, так как там надо вывести количество учеников, живущих на Горького, а не самих учеников.
Получается только через массив структур можно сделать? Другого способа я не вижу((
0
D1973
Модератор
4100 / 2948 / 1420
Регистрация: 21.01.2014
Сообщений: 12,591
Записей в блоге: 3
Завершенные тесты: 1
13.06.2014, 11:52 4
Цитата Сообщение от HEAD5 Посмотреть сообщение
Другого способа я не вижу((
C++
1
2
3
4
5
6
7
8
    int Count = 0;
    if(P1.Street=="Горького") Count++;
    if(P2.Street=="Горького") Count++;
    if(P3.Street=="Горького") Count++;  
    if(Count!=0)
        ShowMessage("Количество учеников, живущих на улице Горького: "+ IntToStr(Count));
    else
        ShowMessage("Нет таких учеников");
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
27184 / 18178 / 7198
Регистрация: 22.10.2011
Сообщений: 32,031
Записей в блоге: 6
13.06.2014, 11:59 5
Зачем же три if-а?
C++
1
2
3
4
    int Count =
        (P1.Street == "Горького") +
        (P2.Street == "Горького") +
        (P3.Street == "Горького");
0
13.06.2014, 11:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 11:59

Тип данных струкруры
помогите разобраться с типом данных делаю курсовую задания на структуры у меня вышло что все...

Создать свой тип данных
Приветствую всех. Мне необходимо создать свой тип данных - сетевой адрес прибора. Физически адрес...

Тип данных учетверенной точности в C/C++
Подскажите, имеется ли в C/C++ тип данных учетверенной точности (16 байт), т.е. удвоенной по...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru