0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 18
1

Массивы структур

26.12.2010, 23:42. Показов 1030. Ответов 5
Метки нет (Все метки)

Написать консольную программу на языке C++ с использованием структур. Программа должна позволять пользователю добавлять данные в массив структур, просматривать этот массив, а также выполнять дополнительную операцию в соответствии с индивидуальным заданием:
Поля структуры: персональный код, фамилия, вес. Операция: найти фамилию человека, у которого наибольший вес.

Помогите решить пожалуйста (.

Добавлено через 15 минут
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
#include <iostream>
#include <string.h>
using namespace std;
struct DANNIE{
    char PersKod[100];
    char Familija[100];
    char Ves[100];
}; 
int main()
{
    int count=0;
    int i=0;
    DANNIE *workers= new DANNIE [count];
 
    cout <<" Vvedite Kol-vo rabotnikov : ";
    cin >> count;
 
    for(i=0;i < count;i++) {
        cout << "Vvedite Personaljnij Kod : ";
        cin >> workers[i].PersKod;
        cout << "Vvedite Familiju : ";
        cin >> workers.Familija;
        cout << "Vvedite Ves : ";
        cin >> workers.Ves;
        cout << workers.PersKod <<" "<< workers.Familija <<" "<< workers.Ves << endl << endl;
    }
    
    for(i=0;i < count;i++) {
        cout << workers[i].PersKod; // proverka dannih 
    }
    return 0;
}
Как дальше не знаю (
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2010, 23:42
Ответы с готовыми решениями:

Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур.
Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую...

Структуры, массивы, указатели, динамические массивы структур
Помогите с решением задачи (прикрепляю условие). Заранее спасибо.

Массивы структур и массивы строк
Студенты, у которых рейтинг меньше 3 что не верно делаю?! #include &lt;iostream&gt; #include...

Массивы структур и массивы строк
1. Сформировать динамический массив из элементов структурного типа. Структурный тип определен в...

5
1 / 1 / 0
Регистрация: 09.02.2010
Сообщений: 8
28.12.2010, 02:46 2
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
126
127
128
129
130
131
132
133
134
135
136
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>
struct sotrudniki {        
        char name[40]; 
        int perscod; 
        int ves;
        int busy; // занятость ячейки
} A[150];
 
void SortingbyVes (sotrudniki *p) //Сортировка по Весу
{int i,n,x,cn;
printf ("# \t Фамилия: \t Персональный код: \t Вес:\n");
int B[150];
for (x=0; x<150; x++)
    B[x]=-1;
for (i=0; p[i].busy==1; i++)
    {for (n=0, cn=0; p[n].busy==1;n++)
        {if ((p[n].ves)<(p[i].ves)) cn++;}
        if (B[cn]!=-1) {for ( ; B[cn]!=-1; ) cn++;}
        if (B[cn]==-1) B[cn]=i;
        }
for (cn=0; p[B[cn]].busy==1; cn++)
    {printf ("%d \t %s \t %d \t\t\t %d\n", B[cn]+1, p[B[cn]].name, p[B[cn]].perscod, p[B[cn]].ves);
}
getch();}
 
 
 
//Основные функции
void ScanText (sotrudniki *p) //Функция ввода
{int i,z;
printf ("Заполнить таблицу сначала или добавить?\n0-заполнить сначала\n1-добавить\n");
printf("Ваш Выбор: ");
scanf ("%d", &z);
if (z==0) {printf ("Введите имя, персональный код, вес\nВведите 0 в поле имя для окончания заполнения таблицы\n");
for (i=0; i<150; i++)
{
    printf ("#%d\n",i+1);
printf ("Имя:");fflush (stdin); gets(p[i].name);
if (*(p[i].name)=='0') break;
printf ("Персональный код:"); scanf ("%d", &(p[i].perscod));
printf ("Вес:"); scanf ("%d",&(p[i].ves));
p[i].busy=1;}}
if (z==1) {
    for (i=0; p[i].busy==1; )
        i++;
    for (; i<150; i++)
{
    printf ("#%d\n",i+1);
printf ("Имя:");fflush (stdin); gets(p[i].name);
if (*(p[i].name)=='0') break;
printf ("Персональный код:"); scanf ("%d", &(p[i].perscod));
printf ("Вес:"); scanf ("%d",&(p[i].ves));
p[i].busy=1;}}
}
void ReadText (sotrudniki *p) // Функция вывода
{int i;
if (p[0].busy==0) printf ("Список пуст!\n");
if (p[0].busy==1){
printf ("Введите 0 для вывода всего списка , либо введите номер сотрудника:\n");
printf("Ваш Выбор: ");
scanf ("%d", &i);
if (i!=0) {if (p[i].busy==0) i=0;
printf ("#%d\nИмя: %s\nПерсональный код: %d\nВес: %d\n", i, p[i-1].name, p[i-1].perscod, p[i-1].ves);}
if (i==0) {
    printf ("# \t Имя: \t Персональный код: \t Вес:\n");
    for (i=0; i<150; i++)
    {if (p[i].busy==0) break;
        printf ("%d \t %s \t %d \t\t\t %d \n", i+1, p[i].name, p[i].perscod, p[i].ves);
    }}
}
getch();
}
 
 
 
 
// Главная функци
int main ()
{
    const int maxMenu = 4;      //число строк меню
    char *pMenu[maxMenu] =      //меню
    {
        "1. Заполнение таблицы\n",
        "2. Вывести на экран\n",
        "3. Сортировка\n",
        "4. Выход\n"
    };
    int i;
    char    ch;
    BOOL    fContinue = TRUE;       //флаг продолжения основного цикла
 
    SetConsoleCP(1251);         //необходимо для отображения русских букв в консоли
    SetConsoleOutputCP(1251);
    sotrudniki *s;
    s=A;
 
    while (fContinue)               //бесконечный цикл
    {
        for (i=0; i<maxMenu; i++)   //выведем меню
            printf("%s",pMenu[i]);
        
        printf("Ваш Выбор: ");      //приглашение к выбору пункта меню
        do
        { 
            ch = getch();               //вводим символ без отображения
            switch (ch)                 //проанализируем
            {
                case '1':               
                    printf("%c\n",ch);//Отобразим введенный символ
                    ScanText(s);
                    break;
                case '2':               
                    printf("%c\n",ch);//Отобразим введенный символ
                    ReadText (s);
                    break;
                case '3':               
                    printf("%c\n",ch);//Отобразим введенный символ
                    SortingbyVes (s);
                    break;
                case '4':               
                    printf("%c\n",ch);//Отобразим введенный символ
                    fContinue = FALSE;
                    break;
                default:
                    continue;           //все остальное приведет к ожиданию "нужных" символов '1'-'10'
            }
            ch = 0x7f;                  //приведут к выходу из цикла do-while
        } while (0x7f != ch);       //  и выводу меню
    }
    
    return 0;
}

что-то типа
Сделал сортировку по весу, но если не так, то думаю не сложно будет переделать.
1
86 / 45 / 11
Регистрация: 20.12.2010
Сообщений: 216
Записей в блоге: 1
28.12.2010, 03:02 3
haosino, да ну ты что! гораздо компакней это делается)
0
1 / 1 / 0
Регистрация: 09.02.2010
Сообщений: 8
28.12.2010, 03:16 4
Ну блин, я только только начал с++ изучать, только основы и знаю, написал как сумел
0
86 / 45 / 11
Регистрация: 20.12.2010
Сообщений: 216
Записей в блоге: 1
28.12.2010, 03:19 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
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
struct strc{
          char kod[50];
          char fio[50];
          double ves;
          };
int n,i,maxi,max;
strc *mcl;
cout<<"vvedite kol-vo ludey"<<endl;
cin>>n;
mcl=new strc[n];
for(i=0;i<n;i++)
 {
 cout<<"------------------------------------------------------------------------"<<endl;
 cout<<"kod:"<<endl;
 cin>>mcl[i].kod;
 cout<<"fio"<<endl;
 cin>>mcl[i].fio;
 cout<<"ves"<<endl;
 cin>>mcl[i].ves;
 cout << mcl[i].kod <<" "<< mcl[i].fio <<" "<< mcl[i].ves<<endl << endl;
 }
max=-1;
for(i=0;i<n;i++)
 {
  if (mcl[i].ves>max) {max=mcl[i].ves; maxi=i;}
 }
cout<<"========================================================================="<<endl;
cout<<"rezultat"<<endl;
cout<<"samiy t9jeliy 4elovek: "<<endl;
cout<<mcl[maxi].kod<<" "<<mcl[maxi].fio<<" "<<mcl[maxi].ves<<endl;
getch();
return 0;
}
//---------------------------------------------------------------------------
Добавлено через 2 минуты
ну вот как-то так, да я сам билдер только начал изучать, но так извращаться как ты в своём решении, я не доконца вникал, но там и кейс и сортировка, перебор одним словом
1
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 18
28.12.2010, 13:17  [ТС] 6
Ооо, спасибо большое, реально спасли ).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2010, 13:17
Помогаю со студенческими работами здесь

Массивы структур, массивы векторов
Разработайте тип данных «Вектор в трехмерном пространстве» в виде структуры, поля которой —...

Массивы структур и массивы строк
Здравствуйте. Возникла проблема с одной работой: Постановка задачи: 1. Сформировать динамический...

Массивы структур
Ввести координаты начала и конца N отрезков на плоскости.Написать функцию определяющую пересекаются...

Массивы структур
Дан массив структур о магазинах: название, кол-во работников, профиль, а также 6 полей - прыбыль за...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru