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

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

09.04.2014, 07:26. Просмотров 516. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 07:26
Ответы с готовыми решениями:

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

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

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

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

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

3
alsav22
5450 / 4845 / 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
alkagolik
Заблокирован
10.04.2014, 06:28 3
Цитата Сообщение от Ulceratio Посмотреть сообщение
Задача:имеется 2 файла с данными на игроков 2 команд каждая строка состоит из имени,голов,пасов,отсортировать данные этих 2 файлов так чтобы в 3 файле были помещены 6 самых результативных игрока.
Для языка эта задача выглядит ... эм, неестественно. Обращайся к питонцам или лисперам. Есть данные. Данные -- байты. Байты -- числа. Байты можно обрабатывать (читать/писать). Начни с того, что "имеется 2 файла", эти 2 файла не текстовые. fread, fwrite. Понадобится буфер (массив) для хранение пока анализируешь.
0
Ulceratio
5 / 5 / 3
Регистрация: 04.11.2013
Сообщений: 50
10.04.2014, 07:51  [ТС] 4
спасибо за ответы,но все уже сделал
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
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 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru