Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ton4ik
2 / 2 / 0
Регистрация: 14.10.2009
Сообщений: 28
#1

Структуры. - C++

19.11.2009, 16:15. Просмотров 521. Ответов 4
Метки нет (Все метки)

Постановка задачи. Разработать программу, выполняющую следующие функции:
• ввод данных об n объектах в массив структур (1<=n<=50);
• сортировка массива структур по одному из полей структуры;
• вывод данных об объектах на экран в упорядоченном виде;
• поиск объекта по значению одного из полей.

Объект:Квартиросъемщик (номер финансового счета, ФИО, адрес, количество комнат, площадь)
Поле, по которому выполняется упорядочивание и поиск: Номер финансового счета


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
#include <iostream.h>
#include <conio.h>
#include <string.h>
struct lodger
{
int number;
int quantity;
char name;
char address;
float area;
};
void main()
{
lodger l[1000];
int i,k,n;
lodger x;
cout<<"Input n"<<endl<<"n="; cin>>n;
for (i=0;i<n;i++)
 {
  cout<<"Financial account number:"; cin>>l[i].number; cout<<endl;
  cout<<"Name:"; cin>>l[i].name; cout<<endl;
  cout<<"Address:"; cin>>l[i].address; cout<<endl;
  cout<<"Quantity of rooms:"; cin>>l[i].quantity; cout<<endl;
  cout<<"Area:"; cin>>l[i].area; cout<<endl;
 }
for (k=1;k<n;k++)
 for (i=0;i<n-k;i++)
   {if (l[i].number<l[i+1].number)
   { x=l[i]; l[i]=l[i+1]; l[i+1]=x;}}
   for (i=0;i<n;i++)
   cout<<l[i].number<<" "<<l[i].name<<" "<<l[i].address<<" "<<l[i].quantity<<" "<<l[i].area<<endl;
getch();
}

немогу ввести данные, она както подвисает, сначало нормально по строчкам можно ввести, а потом сразу выкидывает все строчки которые нужно было бы ввести и ждет последнего нажатия любой кнопочки и все.( я незнаю как точно объяснгить)
добавил скриншотик, думаю по нему понятнее будет вникнуть в суть проблемы.
Миниатюры
Структуры.  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2009, 16:15     Структуры.
Посмотрите здесь:

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Функция внутри структуры использует указатель, как поле этой структуры - C++
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...

Динамическое изменение структуры таблицы для организации древовиднойой структуры - MS Access
Доброго времени суток. У меня такой вот вопрос: Необходимо сделать возможность добавления записей в таблицу определнным образом (через...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) - C++
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

Динамические структуры данных, списковые структуры (надо разобраться что делает программа) - Delphi
дана программа, надо помочь выяснить что в ней делает каждая подпрограмма unit Unit6; interface uses Windows,...

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

Управляющие структуры. Программирование алгоритмов разветвляющейся структуры. - Delphi
как это в delphi выполнить?((( Вычислить объем и площадь полной поверхности цилиндра, если известны высота и радиус основания V=пr^2*h,...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;, &quot;w&quot;); в переменной f содержится...

Структуры. Работа с файлами, содержащими структуры - C++
2) Дана совокупность сведений, каждое из которых состоит из следующих рекви-зитов: фамилия и инициалы автора – 25 знаков; название книги –...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
19.11.2009, 18:57     Структуры. #2
ton4ik, стек не резиновый и столько не вместит.
Вместо этого
C++
1
lodger l[1000];
нужно, так (как у тебя в задании говорится)
C++
1
lodger l[50];
или через динамическую память..

+

в структуре lodger переменные name и address хранят только один символ?
Если нет, то использюй string:
C++
1
2
3
4
5
6
7
8
9
#include <string>
struct lodger
{
    int number;
    int quantity;
    string name;
    string address;
    float area;
};
, но тогда для ввода нужно будет использовать getline:
C++
1
getline(cin,/*имя переменной*/);
или используй массив символов.
ton4ik
2 / 2 / 0
Регистрация: 14.10.2009
Сообщений: 28
20.11.2009, 00:20  [ТС]     Структуры. #3
теперь я написал вот так:
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 <iostream.h>
#include <conio.h>
#include <string.h>
struct lodger
{
int number;
char name[];
char address[];
int quantity;
float area;
};
void main()
{
lodger *l;
int i,k,n;
lodger x;
cout<<"Input n"<<endl<<"n="; cin>>n;
l = new lodger [n];
for (i=0;i<n;i++)
 {
  cout<<"User:"<<i+1<<endl;
  cout<<"Financial account number:"; cin>>l[i].number;
  cout<<"Name:"; cin.get(); cin.getline(l[i].name,30);
  cout<<"Address:"; cin.getline(l[i].address,35);
  cout<<"Quantity of rooms:"; cin>>l[i].quantity;
  cout<<"Area:"; cin>>l[i].area; cout<<endl;
 }
  cout<<"Sorted lodgers:"<<endl;
for (k=1;k<n;k++)
 for (i=0;i<n-k;i++)
   {if (l[i].number<l[i+1].number)
   { x=l[i]; l[i]=l[i+1]; l[i+1]=x;}}
   for (i=0;i<n;i++)
   cout<<l[i].number<<" "<<l[i].name<<" "<<l[i].address<<" "<<l[i].quantity<<" "<<l[i].area<<endl;
getch();
delete [] l;
}
и на выводе, там где я задавал строчки син.гетлайн выдает какие то символы типо сердечка смайлика или еще чегонибудь, вот скриншотик для лучшего объясениния опять прикреплю
в чем ошибочка?
Миниатюры
Структуры.  
insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
20.11.2009, 01:54     Структуры. #4
ton4ik, в структуре lodger ты пытался объявить массивы
char name[];
char address[];
, но нужно же и указывать сколько элементов в массиве:
C++
1
2
3
4
5
6
7
8
9
const int LEN = 80;
struct lodger
{
    int number;
    int quantity;
    char name[LEN];
    char address[LEN];
    float area;
};
и при вводе делать так(например, переменная name):
C++
1
cin.getline(l[i].name,LEN);
ton4ik
2 / 2 / 0
Регистрация: 14.10.2009
Сообщений: 28
25.11.2009, 22:15  [ТС]     Структуры. #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
cout<<"Input search element: "; cin>>y; cout<<endl;
   left=0;
   right=n-1;
   m=(left+right)/2;
   while(left<=right && y!=l[m].number)
   if (y<l[m].number)
    right=m-1;
   else
    left=m+1;
   if(left<=right)
    cout<<l[m].number<<" "<<l[m].name<<" "<<l[m].address<<" "<<l[m].quantity<<" "<<l[m].area<<endl;
   else
    cout<<l[m-1].number<<" "<<l[m-1].name<<" "<<l[m-1].address<<" "<<l[m-1].quantity<<" "<<l[m-1].area<<endl;
а в чем здесь ошибочка? поиск какбэ неработает..
вот вся программа:
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
#include <iostream.h>
#include <conio.h>
#include <string.h>
struct lodger
{
int number;
char name[85];
char address[85];
int quantity;
float area;
};
void main()
{
lodger *l;
int i,j,k,y,n,m,left,right;
lodger x;
cout<<"Input n"<<endl<<"n="; cin>>n;
l = new lodger [n];
for (i=0;i<n;i++)
 {
  cout<<"User: "<<i+1<<endl;
  cout<<"Financial account number:"; cin>>l[i].number;
  cout<<"Name:"; cin.get(); cin.getline(l[i].name,85);
  cout<<"Address:"; cin.getline(l[i].address,85);
  cout<<"Quantity of rooms:"; cin>>l[i].quantity;
  cout<<"Area:"; cin>>l[i].area; cout<<endl;
 }
 clrscr();
  cout<<"Sorted lodgers:"<<endl;
for (k=1;k<n;k++)
 for (i=0;i<n-k;i++)
   {if (l[i].number>l[i+1].number)
   { x=l[i]; l[i]=l[i+1]; l[i+1]=x;}}
   for (i=0;i<n;i++)
   cout<<l[i].number<<" "<<l[i].name<<" "<<l[i].address<<" "<<l[i].quantity<<" "<<l[i].area<<endl;
   cout<<"Input search element: "; cin>>y; cout<<endl;
   left=0;
   right=n-1;
   m=(left+right)/2;
   while(left<=right && y!=l[m].number)
   if (y<l[m].number)
    right=m-1;
   else
    left=m+1;
   if(left<=right)
    cout<<l[m].number<<" "<<l[m].name<<" "<<l[m].address<<" "<<l[m].quantity<<" "<<l[m].area<<endl;
   else
    cout<<l[m-1].number<<" "<<l[m-1].name<<" "<<l[m-1].address<<" "<<l[m-1].quantity<<" "<<l[m-1].area<<endl;
   getch();
delete [] l;
}
Yandex
Объявления
25.11.2009, 22:15     Структуры.
Ответ Создать тему
Опции темы

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