Напишите программу, создающую линейный динамический список - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Парни помогите кое что подправить. Вот написал программу по требованиям: 1. Напишите программу, создающую линейный динамический список, указанный в задании. Значения элементов вводятся с консоли. Вам понадобятся функции «создать», «добавить», «удалить список», «просмотр списка», а также переменная-указатель на начало списка. 2. Реализуйте указанную в задании функцию и продемонстрируйте ее работу. Односвязный список. Поиск минимального элемента в списке. Вот все написал, но думаю что нужно в функциях что то передавать, а что и как понять не могу, потому что и так все работает.
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
 
struct Student  {
    char name[55];
    char group[55];
    float ses[5];
    float rat;
};
 
Student mas[2],x;
void stud();
void sort();
void rait();
void rait_2();
int read_file();
int prin_file();
 
//функция ввода данных с клавы
void stud() {
    for(int i=0;i<2;i++)    {
        printf("                               Student %i",i+1," .");
        printf("\n SeName:  ");
        scanf("%s ",mas[i].name);
        printf(" Group:  ");
        scanf("%s",mas[i].group);
        printf("\n Ratting:\n");
        for(int j=0;j<5;j++)    {
            printf("%i.  ",j+1," ");
            scanf("%f",&mas[i].ses[j]);
        }
    }
}
 
//функция сортировки по среднему баллу сессии
void sort() {
    printf("                                Spisok.");
    for(int i=0;i<2;i++)    {
        for(int j=i;j<2;j++)    {
            if((mas[i].rat)>(mas[j].rat))   {
                x=mas[i];
                mas[i]=mas[j];
                mas[j]=x;
            }
        }
            printf("\n%i ",i+1);
            printf("SeName: %s\n",mas[i].name);
            printf("Group: %s\n",mas[i].group);
            rait_2();
            printf("S.bal: %.1f\n",mas[i].rat);
            /*for (int j=0; j<5; j++){
                printf("%.0f\n",mas[i].ses[j]);
            }*/
    }
    
}
//присваивание рейтинга каждому студенту
void rait_2()   {
    int r;
    float s,m;
        for(int i=0;i<2;i++)    {
        m=0;s=0;
        for(int j=0;j<5;j++)    {
            s=s+mas[i].ses[j];
        }
        m=s/5; mas[i].rat=m;
    }
}
 
//печать на консоль
void rait() {
    int r;
    float s,m;
    printf("                                Session.\n");
    for(int i=0;i<2;i++)    {
        m=0;s=0;
        for(int j=0;j<5;j++)    {
            s=s+mas[i].ses[j];
        }
        m=s/5;
        if(m>4.0)   {
            r=+1;
            printf("\n Srednyi ball bol'she '4' y:  %s",mas[i].name);
            printf("\n");
        }
 
    }
    if(r==0)
        printf("\n\n Net studentov, nabravshih srednyi ball bol'she '4'.");
}
 
//чтение из файла
int read_file() {
    char fn[20];
    FILE* f;
    printf("\nEnter File name: ");
    scanf("\n%[^\n]",fn);
    f=fopen (fn,"r");
    if (!f) {
        printf("\nWarning: no such file. Using stdin.\n");
        f=stdin;
 
    }
    for (int i=0; i<2; i++) {
        fscanf(f,"%[^\t]\t%[^\t]\t %f %f %f %f %f\n", mas[i].name, mas[i].group,(&mas[i].ses[0]),(&mas[i].ses[1]),(&mas[i].ses[2]),(&mas[i].ses[3]),(&mas[i].ses[4]));
    }
    fclose(f);
    return 0;
}
 
//запись в файл
int prin_file() {
    char fn[20];
    FILE* f;
    printf("\nEnter File name: ");
    scanf("\n%[^\n]",fn);
    f=fopen (fn,"w");
    if (!f) {
        printf("\nWarning: no such file. Using stdin.\n");
        f=stdin;
    }
    for (int i=0; i<2; i++) {
        fprintf(f,"\nSeName: %s\nGroup: %s\nS.bal: %.1f\nSsesion: \n%.0f\n%.0f\n%.0f\n%.0f\n%.0f",mas[i].name,mas[i].group,mas[i].rat,mas[i].ses[0],mas[i].ses[1],mas[i].ses[2],mas[i].ses[3],mas[i].ses[4]);
    }
 
    return 0;
}
 
//ну а тут сама функция
int main()  {
    int result=0,result2=0,br=0;
 
    for(;result!=1;)    {
        int answer, n;
        printf("\n Stud. - Enter 1\n Info. - Enter 2\n Sess. - Enter 3\n File - Enter 4\n Exit. - Enter 0\n\n You answer: ");
        scanf("%i",&answer);
        switch(answer)  {
        case 1:{
            while ((result2!=1)&&!(br)) {
                printf("\n   Read:\n   File. - Enter 1\n   Cons. - Enter 2\n   Exit. - Enter 0\n\n You answer: ");
                scanf("%i",&n);
                switch(n){
                    case 1:{read_file();result2=0;break;}
                    case 2:{stud();result2=0;break;}
                    case 0:{br=1;break;}
                }
            }
            if (br) continue;
        case 2:{sort();result=0;break;}
        case 3:{rait();result=0;break;}
        case 4:{prin_file();result=0;break;}
        default:{exit(0);}
               }
        }
    }
}
И еще массив должен быть динамическим как его сделать знаю, но тоже как передавать не знаю. Помогите!!!!

Решение задачи: «Напишите программу, создающую линейный динамический список»

textual
Листинг программы
Student mas[2],x;

Объяснение кода листинга программы

  1. Объявляется массив из двух элементов типа Student с именем mas.
  2. В цикле for перебираются все элементы массива mas.
  3. Внутри цикла for создается переменная x типа Student и инициализируется значением текущего элемента массива mas.
  4. Выводится значение переменной x.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы