Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2020, 12:57   #1
Асдин
 
Регистрация: 01.04.2020
Сообщений: 9
По умолчанию динамические структуры(списки). односвязные списки c++

Необходимо составить программу, которая бы формировала данные из другой программы (код прилагаю) в виде списка.
Меню: добавление записи
1.1 в начало списка
1.2 в конец списка
1.3 после первой записи, удовлетворяющей некоторому условию( придумать самому)
Подскажите, пожалуйста, как сделать, хотя бы один из этих пунктов или что можно почитать, чтобы понять, как работать со списками. Мне бы пример увидеть как это делать, а дальше сам может быть разберусь...
Код:
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
        const int M=30;
        struct STUDENT
        {
            char fio[M+1];
             char i[2];
              char o[2];
            int group;
            int progress[5];
        };
        int i, j, N;
        int m, h=5.0, g=1.0;
        cout<< "Введите, количество студентов ";
        cin>>N;
        if (N<0||N>10)
        {
            cout <<"Неверные исходные данные";
        return -1;
        }
        STUDENT MAS[N];
        for ( i = 0; i <N; i ++ )
        {
            cout << "Введите данные о студенте номер " << i+1 << " : " << endl;
            cout << "Введите фамилию и инициалы : " << endl;
            cin >> MAS[i].fio;
            cin >>  MAS[i].i;
            cin >>  MAS[i].o;
            cout << "Введите номер группы: " << endl;
            cin >> MAS[i].group;
            if(MAS[i].group<0)
            {
                cout<<"Неверные исходные данные ";
                       return -1;
            }
            cout << "Введите успеваемость студента: " << endl;
            for ( j = 0; j < 5; j ++ )
            {
                cout << "Оценка "<<j+1 << " "<<endl;
                cin >> MAS[i].progress[j];
                if(MAS[i].progress[j]>h || MAS[i].progress[j]<g)
                {
                    cout<<"Неверные исходные данные, пятибалльная система!!!";
                    return -1;
                }
            }
        }
        int mod=i;
        for(i=0; i<mod-1; i++)
        {
            int min=i;
            for(j=i+1; j<mod; j++)
                if(MAS[j].group<MAS[min].group)min=j;
            {
                STUDENT m=MAS[i];
                MAS[i]=MAS[min];
                MAS[min]=m;
            }
        }
        double avg[i];
        for(int i = 0; i <N; i++)
           {
            double s = 0.;
            for(int j = 0; j < 5; j++)
               {
                s +=MAS[i].progress[j];
                avg[i] = s / 5.0;
               }
           }
        cout<<endl;
        cout<<"Список студентов упорядоченных по возрастанию номеров групп: "<<endl;
        for(i=0; i<N; i++)
        {
            cout<<"Фамилия и инициалы: "<<MAS[i].fio<< " "<<MAS[i].i << " "<< MAS[i].o <<endl;
            cout<<"Номер группы: "<<MAS[i].group <<endl;
            cout<<"Успеваемость: "<<endl;
            for (j=0;j<5; j++ )
            {
                cout<<"Оценка "<<j+1<<" "<<MAS[i].progress[j]<<endl;
            }
            cout<<endl;
            cout<<"Средний балл: "<<(avg[i])<<endl;
            cout<<endl;
        }
        int cnt=0;
        cout<<"Студенты, у которых средний балл >4.0";
        for(i=0; i<N; i++)
        {
            if (avg[i]>4)
            {
                cnt++;
                cout<<endl<<"фамилия и инициалы: " <<MAS[i].fio<< " "<<MAS[i].i << " "<< MAS[i].o <<endl;
                cout<<"Номер группы: "<<MAS[i].group <<endl;
            }
        }
        if(cnt==0)
     {
         cout<<", отсутствуют";
     }
    return 0;
}
Асдин вне форума Ответить с цитированием
Старый 16.07.2020, 12:28   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Односвязный список Это структура которая содержит одну ссылку на следующий элемент.
В вашем студне не хватает ссылки типа студент которая будет указывать на следующего студня.
Вроде информации по спискам тьма, да и сама тема элементарная.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 16.07.2020, 14:18   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Вот лежит перед мной книжка: Т.А. Павловская, Программирование на ЯВУ. С/С++, 2008 г.
На стр. 155 параграф "Линейные списки". стр. 116, 117 - код, в котором реализованы функции для работы со списком. Далее, качественные пояснения к коду.
Потратьте время, скачайте книгу (она была в Сети) и разберитесь.
Это во много крат лучше, даже если вы будущий бухгалтер.

PS: Мой любимый автор.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных (списки) Boogeman Помощь студентам 0 02.06.2017 06:48
Динамические структуры данных. Списки TImRik Помощь студентам 0 22.12.2013 18:12
Динамические структуры. Списки gst_tirada Помощь студентам 0 28.05.2012 11:38
Динамические структуры данных. Списки. dmit365 Помощь студентам 1 20.12.2009 23:12