Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 3
Регистрация: 09.10.2016
Сообщений: 155
1

Удалить из списка информацию о спортсмене с наименьшим количеством очков

21.03.2017, 23:08. Показов 1209. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Запись имеет вид: фамилия спортсмена, его номер, количество набранных очков. Удалить из списка информацию о спортсмене с наименьшим количеством очков.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>*
#include <locale.h>
struct sportsmen{
    char FirstName[32];
    int number[10], points[128];
};
void read(struct sportsmen *sportsmen, int i)
{
    for (int j = 0; j < i; j++){
        printf("enter FirstName \n");
        scanf("%s", &sportsmen[j].FirstName);
        printf("enter number \n");
        scanf("%i", &sportsmen[j].number);
        printf("enter points \n");
        scanf("%i", &sportsmen[j].points);
    }
}
int main()
{
    setlocale(LC_ALL, "ukr");
    struct sportsmen sportsmen[5];
    read(sportsmen, 5);
    FILE *f, *fdell;
    if ((f = fopen("f.txt ", "wb")) == NULL)
    {
        printf("Помилка при відкритті файлу");
        return 1;
    }
 
 
}

Нашел в интернете код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
 
char c;
struct sports { char fam[20]; int number, score; } spr;
void inputdata(FILE *);
void updatedata(FILE *);
void printdata(FILE *);
void deletedata(FILE *);
 
void inputdata(FILE *st)
{
    char ch;
    st = fopen("file1.dat", "wb");
    do
    {
        printf("\nВведите данные спортсмена через пробел - фамилия, номер, количество набранных очков.\n");
        scanf("%s%d%d", spr.fam, &spr.number, &spr.score);
        fwrite(&spr, sizeof(spr), 1, st);
        printf("\nЗакончить ввод данных?\n");
        ch = getch();
    } while (ch != 'y');
    fclose(st);
    system("cls");
    printf("Данные о спортсменах записаны!\n");
}
 
void printdata(FILE *st)
{
    system("cls");
    int i;
    st = fopen("file1.dat", "rb");
    i = 1;
    fread(&spr, sizeof(spr), 1, st);
    while (!feof(st))
    {
        printf("\n%d. Фамилия спортсмена: %s, номер: %d, количество очков: %d", i, spr.fam, spr.number, spr.score);
        fread(&spr, sizeof(spr), 1, st);
        i++;
    }
    printf("\n\nНажмите любую клавишу для выхода в меню.\n");
    getch();
    system("cls");
}
 
void updatedata(FILE *st)
{
    char ch;
    st = fopen("file1.dat", "ab");
    do
    {
        printf("\nВведите данные о спортсмене через пробел - фамилия, номер, количество набранных очков.\n");
        scanf("%s%d%d", spr.fam, &spr.number, &spr.score);
        fwrite(&spr, sizeof(spr), 1, st);
        printf("\nЗакончить добавление данных? y/n\n");
        ch = getch();
    } while (ch != 'y');
    fclose(st);
    system("cls");
}
 
void deletedata(FILE *st)
{
    system("cls");
    char ch;
    int i, n, min;
    sports *p, temp;
    st = fopen("file1.dat", "rb");
    n = 0;
    fseek(st, 0, 2);
    n = ftell(st) / sizeof(sports);
    fseek(st, 0, 0);
    p = (sports *)malloc(n*sizeof(sports));
    for (i = 0; i<n; ++i)
    {
        fread(&spr, sizeof(spr), 1, st);
        p[i] = spr;
    }
    fclose(st);
    st = fopen("file1.dat", "wb");
    min = 0;
    for (i = 1; i<n; ++i)
        if (p[i].score<p[min].score)
            min = i;
    for (i = 0; i<n; ++i)
        if (i != min)
            fwrite(&p[i], sizeof(spr), 1, st);
    getch();
    free(p);
    fclose(st);
}
 
 
main()
{
    FILE *st;
    system("cls");
    while (1)
    {
        printf("\n1. Ввести данные о спортсменах.\n");
        printf("2. Вывести список спортсменов.\n");
        printf("3. Добавить данные о новом спортсмене.\n");
        printf("4. Удалить данные о спортсмене с минимальным количеством очков.\n");
        printf("5. Выход.\n");
        c = getch();
        switch (c)
        {
        case '1':inputdata(st); break;
        case '2':printdata(st); break;
        case '3':updatedata(st); break;
        case '4':deletedata(st); break;
        case '5':return 0; break;
        default:system("cls"); printf("\nНеверно выбран пункт меню!\n\n");
        }
    }
}
Но выдаёт ошибки следующие :
Удалить из списка информацию о спортсмене с наименьшим количеством очков


Помогите разобраться в чём проблема.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2017, 23:08
Ответы с готовыми решениями:

Удалить из списка информацию о спортсмене с наименьшим количеством очков
Доброго времени суток! Попалась задачка, которая уже второй день не поддаётся решению. В программе...

Удалить из списка информацию о спортсмене с наименьшим количеством очков
Запись имеет вид: фамилия спортсмена, его номер, количество набранных очков. Удалить из списка...

Дописать программу так, чтобы выдавала информацию о спортсмене по какому-либо результату
Есть часть программы нужно чтоб программа еще выдавала информацию о спортсмене по какому-либо...

Удалить из матрицы строку с наименьшим количеством отрицательных элементов
1 В матрице напечатать все элементы стоящие на пересечении строк и столбцов, сумма элементов...

1
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
28.03.2017, 11:13 2
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
 
#define NUMBER_OF_ATHLETES 10
 
struct Athlete
{
  char name[16];
  unsigned int number, points;
};
 
int compFunc(const void *a, const void *b);
 
int main()
{
  struct Athlete athlete[NUMBER_OF_ATHLETES];
 
  for (size_t i = 0; i < NUMBER_OF_ATHLETES; ++i) {
    printf("Name, number, points: ");  
    scanf("%s%u%u", &athlete[i].name, &athlete[i].number, &athlete[i].points);
  }
 
  qsort(athlete, NUMBER_OF_ATHLETES, sizeof(struct Athlete), compFunc); 
   
  for (size_t i = 0; i < NUMBER_OF_ATHLETES - 1; ++i) {
    printf("Name, number, points: %s, %u, %u \n", athlete[i].name, athlete[i].number, athlete[i].points);
  }
}
 
int compFunc(const void *a, const void *b)
{
  struct Athlete *ath1 = (struct Athlete *)a; 
  struct Athlete *ath2 = (struct Athlete *)b; 
 
  return ath1->points < ath2->points;
}
0
28.03.2017, 11:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2017, 11:13
Помогаю со студенческими работами здесь

Удалить из списка команды,имеющие 0 очков
Помогите решить задачи на экзамен:cry: 2)Имеются сведения о нескольких спортивных...

Строки: вывести слова с наименьшим количеством букв; удалить слова, начинающиеся с маленькой буквы
Здравствуйте. Помогите, пожалуйста сделать программу... Задание: Составить программу, которая...

Написать friend функцию, которая выведет информацию о самом легком спортсмене в команде
Здравствуйте помогите написать функцию друг которая выводит информацию о самом легком спотсмене...

Удалить из списка информацию (структуры) и записать в бинарный файл
Вообщем есть информация о 5 спортсменах в виде 1) Фамилия 2) номер 3) очки (что я и сделал в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru