Напишите программу, создающую линейный динамический список - 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.