Какие указать параметры при обращении к функции? - C (СИ)

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

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

Подскажите пожалуйста какие следует указать параметры при обращении к функции RedaktInfo() или, может, в самой функции я формальные параметры неверно указала? структура:
struct Spisok { 
char FIO[20];
char number[5];
float ball; 
int dohod;
} pSTUDENT;
Сама функция:
void RedaktInfo(Spisok *pSTUDENT)
{
goto redact;
char StudFaind[20];//студент, данные которого нужно изменить
Stud=fopen("d:\\Stud.txt","a");
printf("Bведите ФИО студента для редактирования:  ");
scanf("%s", StudFaind);
for (int i=0; i<q; i++) {
      fscanf(Stud, "%s %s %f %d" , pSTUDENT->FIO, pSTUDENT->number, &pSTUDENT->ball, &pSTUDENT->dohod);
      printf("%s %s %f %d" , pSTUDENT->FIO, pSTUDENT->number, pSTUDENT->ball, pSTUDENT->dohod);
      if (strcmp(pSTUDENT->FIO, StudFaind)==0) {
          redact: printf("Какие данные студента %s следует изменить?\n   1-ФИО;\n    2-номер группы;\n    3-средний балл;\n    4-доход на одного члена семьи.\n", StudFaind);
          int e;//для выбора информации, которую следует изменить
          scanf("%d", &e);
          switch (e) {
            case 1: printf("Введите новые данные(ФИО):  ");
                scanf("%s", pSTUDENT->FIO);//или создаать новую структуру X, а потом  присв-ть
                break;
            case 2: printf("Введите новые данные(номер группы):  ");
                scanf("%s", pSTUDENT->number);
                break;
            case 3: printf("Введите новые данные(средний балл):  ");
                scanf("%f", &pSTUDENT->ball);
                break;
            case 4: printf("Введите новые данные(доход на одного члена семьи):  ");
                scanf("%d", &pSTUDENT->dohod);
                break;
            default:
                printf( "Неверный ввод.\n" );
          }
          printf( "\nПродолжить редактирование данных данного студента? 1-да, 2-нет\n " );
          int a;
          scanf( "%d", &a );
          switch ( a ) {
                case 1: goto redact;//продолжаем редактировать данные студента
                    break;
                case 2: printf("Данные были изменены!");
                    break;
                default:
                    printf( "Неверный ввод.\n" );
          }
      }
      break;//досрочно выходим из цикла сверки фамилий
}
if (i=q) {
    printf("Студент %s в списке не найден.", StudFaind);
}
else {
    for (i=0; i<q; i++) {
        fprintf(Stud, "%s %s %f %d" , pSTUDENT->FIO, pSTUDENT->number, pSTUDENT->ball, pSTUDENT->dohod);
    }
}
fclose(Stud);
}
[/C] Обращение к функции
printf( "8.Выход в меню 1-го уровня;\n" );
printf( "Ваш выбор: " );
int c;
scanf( "%d", &c );
switch ( c ) {
    case 1: FileOpen();// 1.Создание/открытие файла с данными;-параметры-
        break;
    case 2: AddInfo();// 2.Добавление записи;
        break;
    case 3: RedaktInfo();// 3.Редактирование записи; ???????????????????
        break;
Спасибо!

Решение задачи: «Какие указать параметры при обращении к функции?»

textual
Листинг программы
void AdminMenu (struct Spisok *pSTU)
{
char StudFaind[20];//студент, данные которого нужно изменить
struct Spisok STU;
Stud=fopen("d:\\Stud.txt","r+");
q=4;
printf("Bведите ФИО студента для редактирования:  ");
scanf("%s", StudFaind);
for (i=0; i<q; i++) {
      Spisok *pSTU=(Spisok*)malloc(sizeof(Spisok));//выделяем память под список студентов
      fscanf(Stud," %s %s %f %d" , 
          pSTU->FIO, pSTU->number, &pSTU->ball, &pSTU->dohod);
      if (strcmp(pSTU->FIO, StudFaind)==0) {
          redact: printf("Какие данные студента %s следует изменить?\n   1-ФИО;\n    2-номер группы;\n    3-средний балл;\n    4-доход на одного члена семьи.\n", StudFaind);
          int e;//для выбора информации, которую следует изменить
          scanf("%d", &e);
          switch (e) {
            case 1: printf("Введите новые данные(ФИО):  ");     
                scanf("%s", pSTU->FIO);//или созд
                break;
            case 2: printf("Введите новые данные(номер группы):  ");
                scanf("%s", pSTU->number);
                break;
            case 3: printf("Введите новые данные(средний балл):  ");
                scanf("%f", &pSTU->ball);
                break;
            case 4: printf("Введите новые данные(доход на одного члена семьи):  ");
                scanf("%d", &pSTU->dohod);
                break;
            default:
                printf( "Неверный ввод.\n" );
          }
          printf( "\nПродолжить редактирование данных данного студента? 1-да, 2-нет\n " );
          int a;
          scanf( "%d", &a );
          switch ( a ) {
                case 1: goto redact;//продолжаем редактировать данные студента
                    break;
                case 2: printf("Данные успешно изменены!");
                    goto vixod;
                    break;
                default:
                    printf( "Неверный ввод.\n" );
          }
      }
}
vixod: if (i<q) {
for (i=0; i<q; i++) {//В этом месте перестает работать, как иначе перезаписать данные в файл?
    fprintf(Stud,"%s %s %f %d" , 
        pSTU->FIO, pSTU->number, pSTU->ball, pSTU->dohod);
    }
}
else {
    printf("Студент %s в списке не найден.", StudFaind);
    }
fclose(Stud);
}

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

  1. В функции объявлен массив StudFaind для хранения ФИО студента, который нужно изменить, и переменная q для количества студентов в списке.
  2. Функция считывает данные из файла Stud.txt в структуру Spisok через указатель pSTU.
  3. Переменная i используется как счетчик в цикле для обхода всех записей в списке.
  4. Если ФИО текущего студента совпадает с ФИО студента, данные которого нужно изменить, то начинается процесс редактирования.
  5. Пользователю предлагается выбрать, какие данные следует изменить, и вводится соответствующий номер.
  6. В зависимости от выбранного номера, пользователю предлагается ввести новые данные для соответствующего поля.
  7. Если пользователь решил продолжить редактирование, то происходит возврат к шагу 4.
  8. Если пользователь решил сохранить изменения, то данные студента записываются обратно в файл Stud.txt.
  9. Если студент с указанным ФИО не найден в списке, то выводится сообщение об ошибке.
  10. Функция закрывает файл Stud перед выходом.

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


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

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

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