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

Массивы структур - C++

Восстановить пароль Регистрация
 
hotborsh
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 18
26.12.2010, 23:42     Массивы структур #1
Написать консольную программу на языке 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;
}
Как дальше не знаю (
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 23:42     Массивы структур
Посмотрите здесь:

Массивы структур C++
C++ Массивы структур
C++ Массивы структур
C++ Массивы структур
Массивы структур C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
haosino
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;
}

что-то типа
Сделал сортировку по весу, но если не так, то думаю не сложно будет переделать.
Skjame
 Аватар для Skjame
26 / 16 / 3
Регистрация: 20.12.2010
Сообщений: 88
28.12.2010, 03:02     Массивы структур #3
haosino, да ну ты что! гораздо компакней это делается)
haosino
1 / 1 / 0
Регистрация: 09.02.2010
Сообщений: 8
28.12.2010, 03:16     Массивы структур #4
Ну блин, я только только начал с++ изучать, только основы и знаю, написал как сумел
Skjame
 Аватар для Skjame
26 / 16 / 3
Регистрация: 20.12.2010
Сообщений: 88
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 минуты
ну вот как-то так, да я сам билдер только начал изучать, но так извращаться как ты в своём решении, я не доконца вникал, но там и кейс и сортировка, перебор одним словом
hotborsh
0 / 0 / 0
Регистрация: 25.12.2010
Сообщений: 18
28.12.2010, 13:17  [ТС]     Массивы структур #6
Ооо, спасибо большое, реально спасли ).
Yandex
Объявления
28.12.2010, 13:17     Массивы структур
Ответ Создать тему
Опции темы

Текущее время: 12:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru