Ребят помогите, пожалуйста, со структурами. Вот задание:
Для решения задачи разработать 3 ф-ции: -ввод и вывода. -главную ф-цию. -ф-цию обработки массива. Динам выделение памяти + файл-проект. Структура "Стадион":название; адрес; вместимость; виды спорта. Удалить элемент с заданным номером, добавить 2 элемента после элемента с указанным именем. Проблема в том, что препод требует, чтобы я сам вводил количество структур. Я пробовал переделать, но у меня, к сожалению, ничего не получилось. Помогите пожалуйста. Работу нужно сдавать 19го. Вот мой код:
ф-ция ввода и вывода
Код | #include <stdlib.h> #include <ctype.h> #include <stdio.h>
/* Описание структуры Stadium */ #include "Stadium.h"
#define MAXSIZE 100
/* Ввод информации о машине */ void NewStadium(struct Stadium *pStadium[]) { int i;
for(i = 0; i < MAXSIZE; i++) { if(pStadium[i] == NULL) { pStadium[i] = malloc(sizeof(struct Stadium));
printf("\n Enter info about Stadium:\n");
printf(" Name: "); flushall(); scanf("%s", pStadium[i]->Name);
printf(" Address: "); flushall(); scanf("%s", pStadium[i]->Address);
printf(" Sport: "); flushall(); scanf("%s", pStadium[i]->Sport);
printf(" Capacity: "); flushall(); scanf("%d", &pStadium[i]->Capacity);
return; } } }
/* Печать информации о всех машинах */ void PrintStadium(struct Stadium *pStadium[]) { int i, n;
for(i = 0, n = 0; i < MAXSIZE; i++) { if(pStadium[i] != NULL) { n++; printf("\n Stadium %d:\n", n ); printf(" Name: %s\n", pStadium[i]->Name); printf(" Address: %s\n", pStadium[i]->Address); printf(" Sport: %s\n", pStadium[i]->Sport); printf(" Capacity: %d\n", pStadium[i]->Capacity); } } } |
ф-ция обработки
Код | #include <stdlib.h> #include <string.h> #include <stdio.h>
/* Описание структуры Stadium */ #include "Stadium.h"
#define MAXSIZE 100
/* Удаляет элемент с заданным номером*/ void DelStadium(struct Stadium *pStadium[]) { int i, n, k;
do { printf("\n Enter element number for delete: "); scanf("%d", &k); } while(k < 1);
for(i = 0, n = 0; i < MAXSIZE; i++) { if(pStadium[i] != NULL) n++;
if(n == k) { pStadium[i] = NULL; printf("\n Element %d deleted!\n", n); return; } } printf("\n Element %d does not exist!!!\n", n); }
/* Добавление информации после элем. с заданным регист. ном. */ void AddStadium(struct Stadium *pStadium[]) { struct Stadium Buf; char Name[100]; int i, Position = -1;
/* Рег. номер, за которым нужно поместить новый элемент */ printf("\n Enter name for replace: "); scanf("%s", Name);
for(i = 0; i < MAXSIZE; i++) { if(pStadium[i] != NULL) { Buf = *pStadium[i]; if((strstr(Buf.Name, Name)) != NULL) Position = i; } }
if(Position == -1) /* Если элемемент с заданным регистрац. № не найден */ { printf("\n Element with name %s not found!!!\n", Name); return; }
/* Ввод данных во временную переменную Temp */ printf("\n Enter info about Stadium:\n");
printf(" Name: ");
scanf("%s", pStadium[Position + 1]->Name);
printf(" Address: "); scanf("%s", pStadium[Position + 1]->Address);
printf(" Sport: "); scanf("%s", pStadium[Position + 1]->Sport);
printf(" Capacity: "); scanf("%d", &pStadium[Position + 1]->Capacity); }
|
главная ф-ция
Код | #include <stdio.h>
/* Описание структуры Stadium */ #include "Stadium.h"
/* Максимально возможное кол-во элементов */ #define MAXSIZE 100
/* Печать информации о всех элементах */ void PrintStadium(struct Stadium *pStadium[]);
/* Ввод информации о элементе */ void NewStadium(struct Stadium *pStadium[]);
/* Удаляет элемент с заданным номером */ void DelStadium(struct Stadium *pStadium[]);
/* Добавление информации после элем. с заданным регист. ном. */ void AddStadium(struct Stadium *pStadium[]);
/* Отрисовка меню */ void Menu() { printf("\n ---------MENU--------- \n"); printf(" 0. Exit\n"); printf(" 1. New element\n"); /* Добавть запись */ printf(" 2. Remove element\n"); /* Удалить запись */ printf(" 3. Print all elements\n"); /* Вывести на экран */ printf(" 4. Add element\n"); /* Добавить после элемн. с заданным регистрационным номером */
printf(" You choice: "); }
int main() { int c; struct Stadium *pStadium[MAXSIZE] = {NULL}; /* Массив указателей */
do { Menu(); scanf("%d", &c);
/* Обработка меню */ switch(c) { case 0: break; case 1: NewStadium(pStadium); break; case 2: DelStadium(pStadium); break; case 3: PrintStadium(pStadium); break; case 4: AddStadium(pStadium); break; default: printf("\n Incorrect choice!!!\n"); } } while(c); /* Пока не введут 0 */
return 0; } |
|