• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Осталась Одна Ошибка Не Могу Исправить

  • Автор темы samich
  • Дата начала
S

samich

извиняюсь за повторы при создании темы вылазила белая страница с ошибкой поэтому думал что тема не создалась



[sql]1. Структура "Абитуриент":
- фамилия, имя, отчество;
- год рождения;
- оценки вступительных экзаменов (3);
- средний балл аттестата.
Удалить элемент с указанным номером, добавить элемент после элемента с указанной фамилией


#include "iostream"
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct
{ // здесь данные для ввода
char surname[64];
char name[64];
char sname[64];
char god[64];
int ozenka;
int bal;
} employee;

employee userInput(void)
{
employee res;
cout << "Enter surname: ";
cin >> res.surname;
cout << "Enter name: ";
cin >> res.name;
cout << "Enter second name: ";
cin >> res.sname;
cout << "Enter post: ";
cin >> res.god;
cout << "Enter age: ";
cin >> res.ozenka;
cout << "Enter price: ";
cin >> res.bal;

return res;
}

void userOutput(employee emp)
{
setlocale(LC_ALL, "russian");
cout << "Фамилия: " << emp.surname << "\n";
cout << "Имя: " << emp.name << "\n";
cout << "Отчество: " << emp.sname << "\n";
cout << "Год: " << emp.god << "\n";
cout << "Оценка: " << emp.ozenka << "\n";
cout << "Средний бал: " << emp.bal << "\n"; // тут оказывается нужно чтоб еще он сам выдвал средний бал из минимум 3 оценок, чтоб оценки не превышали от 1-5 . Ккуда и как записать тоже не знаю

cout << "\n";
}

void mainInput(void)
{
FILE *fp;
if ((fp = fopen("t.txt", "w")) == NULL)
{
perror("\nCan't open file");
int fake_stop;
cin >> fake_stop;
exit(0);
}

bool canContinue = true;
while (canContinue)
{
employee emp = userInput();
fwrite(&emp, sizeof(employee), 1, fp);

cout << "\Continue (y/n)";
char ans;
cin >> ans;
canContinue = (ans == 'y');
}
fclose(fp);
}

void outputFile(void)
{
FILE *fp;
if ((fp = fopen("t.txt", "r")) == NULL)
{
perror("\nCan't open file");
int fake_stop;
cin >> fake_stop;
exit(0);
}

employee emp;
fread(&emp, sizeof(employee), 1, fp);
while (!feof(fp))
{
userOutput(emp);
fread(&emp, sizeof(employee), 1, fp);
}
fclose(fp);
}

void getEmpArr(employee *empmas)
{

}

void delRecord(int cutindex) // для удаления номера студента
{
FILE *fp;
if ((fp = fopen("t.txt", "r")) == NULL)
{
perror("\nCan't open file");
int fake_stop;
cin >> fake_stop;
exit(0);
}

employee savearr[255];
employee emp;
int index = 0;
fread(&emp, sizeof(employee), 1, fp);
while (!feof(fp))
{
savearr[index++] = emp;
fread(&emp, sizeof(employee), 1, fp);
}
fclose(fp);

int n = index;

if ((fp = fopen("t.txt", "w")) == NULL)
{
perror("\nCan't open file");
int fake_stop;
cin >> fake_stop;
exit(0);
}

for (index = cutindex; index < n; index++)
{
fwrite(&savearr[index], sizeof(employee), 1, fp);
}

fclose(fp);
}

void addRecord(employee newemp,char surname[]) //добавление после указанной фамилии
{
FILE *fp;
if ((fp = fopen("t.txt", "r")) == NULL)
{
perror("\nCan't open file");
int fake_stop;
cin >> fake_stop;
exit(0);
}

employee savearr[255];
employee emp;
int index = 0;
fread(&emp, sizeof(employee), 1, fp);
while (!feof(fp))
{
savearr[index++] = emp;
fread(&emp, sizeof(employee), 1, fp);
}
fclose(fp);

int n = index;

if ((fp = fopen("t.txt", "w")) == NULL)
{
perror("\nCan't open file");
int fake_stop;
cin >> fake_stop;
exit(0);
}

for (index = 0; index < n; index++)
{
emp = savearr[index];
if (strcmp(emp.surname, surname) != 0)
fwrite(&emp, sizeof(employee), 1, fp);
}
fclose(fp);
}


void main(void)
{
setlocale(LC_ALL, "russian");
mainInput();
outputFile();

char cutindex;
cout << "Удалить элемент с указаным номером: ";
cin >> cutindex;

delRecord(int (cutindex));
outputFile();

int addindex;
cout << "Укажите фамилию после которой добавить:";
cin >> addindex;

employee newemp = userInput();

addRecord(newemp, (addindex[]));// вот тут пишет ошибку после addindex[] Кажется в самом алгоритме что то не то. чувствую :)
outputFile();

int fake_stop;
cin >> fake_stop;
}[/sql]
 
W

Whatka

даааа в алгоритме

у тебя функция addRecord(employee newemp,char surname[])
принимает вторым параметром массив символов а ты передаёшь число!
 
S

samich

но как исправить код? кто поможет не за бесплатно, завтра уже сдавать
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!