Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
5 / 5 / 3
Регистрация: 04.11.2013
Сообщений: 50
1

Сортировка данных двух текстовых файлов. Счетчик количества строк работает некорректно

09.04.2014, 07:26. Показов 756. Ответов 3
Метки нет (Все метки)

Задача:имеется 2 файла с данными на игроков 2 команд каждая строка состоит из имени,голов,пасов,отсортировать данные этих 2 файлов так чтобы в 3 файле были помещены 6 самых результативных игрока.
Написал код но он почему не работает,есть 2 проблемы ,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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
typedef struct com
    {
          char name[60];
          int goly;
          int pasi;
    } comanda;
    int cmp1(const void * a, const void *b) 
          {
           comanda * pa = (comanda *)a;
           comanda * pb = (comanda *)b;
 
    return ( pa->goly == pb->goly ) ? pa->pasi - pb->pasi : pa->goly - pb->goly;
          }
int main()
{
    int sch=0,n=0,i=0;
    FILE *fp1;
   fp1=fopen("dinamo.txt","a");
    FILE *fp2;
    fp2=fopen("spartak.txt","r");
     while(getc(fp2)!=EOF)
     {
        if(getc(fp2)=='\n')
        {
            n++;//schet4ik kol-va strok
        }
     }
     comanda spartak[n];
     while(i<n)
     {
fscanf (fp2, "%s%d%d", spartak[i].name,&spartak[i].goly,&spartak[i].pasi);//zapis' dannih iz fila fp2 v file fp 1
fprintf(fp1, "\n%s %d %d", spartak[i].name,spartak[i].goly, spartak[i].pasi);
i++;
    }
 
while(getc(fp1)!=EOF)
     {
        if(getc(fp1)=='\n')
        {
            sch++;//schetchik strok
        }
     }
     i=0;
     comanda obsch[sch];
    while(getc(fp1)!=EOF)
     {
fscanf (fp1, "%s%d%d",obsch[i].name,&obsch[i].goly,&obsch[i].pasi);
i++;//zapis' vseh igrokov dl9 otsortirovki
    }
    qsort(obsch, sch, sizeof(comanda), cmp1);//sortirovka(posl element samiy maksimal'niy)
    FILE *fp3;
    fp3=fopen("rezultat.txt","a");//zapis' kone4nogo rezul'tata
   for(i=sch;i<sch-6;i--)
    {
    fprintf(fp3, "\n%s %d %d", obsch[i].name,obsch[i].goly, obsch[i].pasi);
    }
         printf("%s","Done");
getch();
}
Добавлено через 4 часа 41 минуту
Ну что никто ничем помочь не может?

Добавлено через 12 часов 12 минут
up.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2014, 07:26
Ответы с готовыми решениями:

Подсчет общего количества строк всех текстовых файлов
Написать командный файл который подсчитывает общее колличество строк во всех текстовых файлах...

Проверить, совпадают строки двух данных текстовых файлов. Если не совпадают, то вернуть номер первой такой пары строк
Проверить, совпадают строки двух данных текстовых файлов. Если не совпадают, то вернуть номер...

Как записать несколько текстовых файлов с ограничением количества строк
Добрый день, необходимо записать данные в текстовый файл, но в файле не должно быть более 255...

Сортировка больших текстовых файлов размером до двух терабайт
Собственно стоит задача отсортировать большой текстовый файл (до 2тб) состоящий из строк длинной...

3
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
10.04.2014, 03:34 2
Цитата Сообщение от Ulceratio Посмотреть сообщение
1ая это то что счетчик кол-ва строк работает не верно
C++
1
2
3
4
5
6
7
while(getc(fp2)!=EOF)
     {
        if(getc(fp2)=='\n')
        {
            n++;//schet4ik kol-va strok
        }
     }
Два раза подряд читаете, поэтому и неправильно. Читайте в какую-нибудь char, а потом сравнивайте её с '\n' и EOF.
0
Заблокирован
10.04.2014, 06:28 3
Цитата Сообщение от Ulceratio Посмотреть сообщение
Задача:имеется 2 файла с данными на игроков 2 команд каждая строка состоит из имени,голов,пасов,отсортировать данные этих 2 файлов так чтобы в 3 файле были помещены 6 самых результативных игрока.
Для языка эта задача выглядит ... эм, неестественно. Обращайся к питонцам или лисперам. Есть данные. Данные -- байты. Байты -- числа. Байты можно обрабатывать (читать/писать). Начни с того, что "имеется 2 файла", эти 2 файла не текстовые. fread, fwrite. Понадобится буфер (массив) для хранение пока анализируешь.
0
5 / 5 / 3
Регистрация: 04.11.2013
Сообщений: 50
10.04.2014, 07:51  [ТС] 4
спасибо за ответы,но все уже сделал
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2014, 07:51

Сравнение двух текстовых файлов и вывод уникальных строк в третий файл
Здравствуйте необходим батник, который сравнивает два текстовых файла и выводит уникальные строки в...

Склеивание текстовых файлов и сортировка строк результирующего файла по убыванию или по возрастанию
Понимаю, что просто, но никак не могу сообразить, буду благодарна за помощь, польностью код не...

Склеивание текстовых файлов и сортировка строк результирующего файла по убыванию или по возрастанию
Здравствуйте. Помогите написать батник, к сожалению наработок нет. Вот задание: Разработать...

счетчик покупок некорректно работает
счетчик: function buyCount($id) { setcookie(&quot;id_$id&quot;, isset($_COOKIE) ? ++$_COOKIE : 1,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.