Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2017, 22:09   #1
LeBwa
Новичок
Джуниор
 
Регистрация: 22.03.2017
Сообщений: 2
Восклицание Найти ошибку в коде

Код:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct sport { char name[10]; int number; int kol; } sp;
void input(FILE *); // создание нового файла 
void print(FILE *); // просмотр файла 
void app(FILE *); // добавление в файл
void del(FILE *); // удаление игрока с наименьшим количеством очков
int main(void)
{
    char c;
    FILE *fp; 
    while (1)
    {
 
        puts(" 1 – новый файл");
        puts(" 2 – просмотр файла");
        puts(" 3 – добавление в файл");
        puts(" 4 – удаление игрока с наименьшим количеством очков");
        puts(" 0 - выход");
        c = getchar();
        switch (c)
        {
        case '1':input(fp); break;// вот тут ошибка
        case '2':print(fp); break;
        case '3':app(fp); break;
        case '4':del(fp); break;
        case '0':return 0;
        default: puts("неверный режим");
        }
    }
}
void input(FILE *fp)
{
    char ch;
    fp = fopen("file1.dat", "wb"); // открытие бинарного файла для записи
 
    printf("\n Введите информацию о спортсменах \n");
    do
    {
        printf("\n Фамилия: "); scanf("%s", sp.name);
        printf(" Номер: "); scanf("%d", &sp.number);
        printf(" Количество очков: "); scanf("%d", &sp.kol);
        fwrite(&sp, sizeof(sp), 1, fp); // запись в файл одной структуры sp
        printf("\n Закончить?  y/n  ");
        ch = getchar();
    } while (ch != 'y');
    fclose(fp);
}
void print(FILE *fp)
{
    int i;
 
    fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения
    i = 1;
    fread(&sp, sizeof(sp), 1, fp); // чтение из файла одной структуры sp
    while (!feof(fp))
    {
        printf("\n  %3d спортсмен %-10s номер %d   очков %d", i, sp.name, sp.number, sp.kol);
        fread(&sp, sizeof(sp), 1, fp);
        i++;
    }
    getchar();
}
void app(FILE *fp)
{
    char ch;
    fp = fopen("file1.dat", "ab"); // открытие бинарного файла для добавления
 
    printf("\n  Введите информацию о спортсменах \n");
    do
    {
        printf("\n Фамилия: "); scanf("%s", sp.name);
        printf(" Номер: "); scanf("%d", &sp.number);
        printf(" Количество очков: "); scanf("%d", &sp.kol);
        fwrite(&sp, sizeof(sp), 1, fp);
        printf("Закончить?  y/n  ");
        ch = getchar();
    } while (ch != 'y');
    fclose(fp);
}
void del(FILE *fp)
{
    char ch; // ВОТ ТУТ ОШИБКА
    int i, j, n, h;
    sport *s, p;
 
    fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения
    // подсчет числа записей в файле
    n = 0;
    fseek(fp, 0, 2);
    n = ftell(fp) / sizeof(sport);
    rewind(fp);
    s = (sport *)malloc(n*sizeof(sp));
    // заполнение массива
    for (i = 0, h = 1; i<n; ++i)
    {
        fread(&sp, sizeof(sp), 1, fp);
        s[i] = sp;
        printf("\n %3d спортсмен %-10s номер %d   очков %d", h, sp.name, sp.number, sp.kol);
        h++;
    }
    fclose(fp);
    fp = fopen("file1.dat", "wb"); // открытие бинарного файла для записи
    j = 1;
    while (j)
    {
        j = 0;
        for (i = 0; i<n - 1; i++)
        {
            if (s[i].kol<s[i + 1].kol)
            {
                p = s[i];
                s[i] = s[i + 1];
                s[i + 1] = p;
                j = 1;
            }
        }
    }
    for (i = 0; i<n - 1; ++i)
        fwrite(&s[i], sizeof(sp), 1, fp);
    printf("\n\n   Спортсмен с наименьшим количеством очков: %5s (%d) удален. ", s[n - 1].name, s[n - 1].kol);
    getchar();
    free(s); // Освобождение выделенной по адресу s памяти
    fclose(fp);
}
LeBwa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ошибку в коде. (С++) Onyx1 Помощь студентам 17 09.01.2017 21:43
Найти ошибку в коде (Для данной целочисленной матрицы размером n*m найти матрицу из 0 и 1...) код на C camel5 Помощь студентам 1 26.11.2013 06:11
найти ошибку в коде anghela БД в Delphi 6 28.05.2013 16:12
Найти ошибку в коде,С++ ! Aaaaaa111 Помощь студентам 1 16.02.2012 11:10