Напишите программу, создающую линейный динамический список - 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;
Объяснение кода листинга программы
- Объявляется массив из двух элементов типа
Student
с именемmas
. - В цикле
for
перебираются все элементы массиваmas
. - Внутри цикла
for
создается переменнаяx
типаStudent
и инициализируется значением текущего элемента массиваmas
. - Выводится значение переменной
x
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д