Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Конвертирование текстового файла в двоичный - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод вставки http://www.cyberforum.ru/cpp-beginners/thread241159.html
Расположение массива в порядке убывания методом вставки!!! Как это? Я просто саму задачу не понимаю, решить, думаю, смогу??? По убыванию - это легко, а что за "метод вставки"?
C++ Глупый вопрос по указателям? Здравствуйте! Подскажите как это работает? Правильно ли я понимаю? struct A { }; struct B: public A { int var1; int var2; http://www.cyberforum.ru/cpp-beginners/thread241149.html
Перевод чисел из арабских в римские. Пределы int C++
Есть программа: #include <stdio.h>; #include <conio.h>; int roman(int,int,char); main() { int a,z; clrscr(); while (z!=1){ printf("Введите число (1-32767): \nАрабское число: ");
Переместить нулевые элементы в конец массива C++
Добрый день! Я уже к вам за помощью обращалась и вот пишу в очередной раз. Пишу код программы, но программма отказывается его выполнять так как имеются ошибки в коде. Задача состоит в следующем:...
C++ число в степени http://www.cyberforum.ru/cpp-beginners/thread241075.html
Выведите число 2 в степени N. Нужно решить циклом for. Знаю, это лёгкая задача, но я совсем забыла цикл for.
C++ В заданном интервале натуральных чисел определить все простые числа из заданного интервала натуральных чисел определить все простые числа подробнее

Показать сообщение отдельно
wertrix
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 49
11.02.2011, 14:56  [ТС]
Поменял, ничего не изменилось... Вот весь код:
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
#include <iostream>
#include <conio.h>
#include <fstream>
 
extern struct tabl {
    int pob, por, nich, zab, prop, och;
    char name[15];
};
 
tabl *q;
 
void convert(int a);
 
void main() {
    setlocale(LC_ALL,"RUS");
    tabl *b,tmp;
    FILE *bin;
    int i=0,n,fl=0,r;
    char s[15];
    puts (" Данная программа на основе таблицы чемпионата\n"
        "по футболу составит итоговую таблицу чемпионата,\n"
        "подсчитав число очков для каждой команды и\n"
        "расположение их в порядке невозрастания.");
    std::cout << "Введите кол-во команд: "; std::cin >> n;
    b=new tabl[n];
    std::cout<<"\nВведите имя исходного текстового файла: "; convert(n);
    b:std::cout<<"\nТеперь введите еще раз имя бинарного файла: "; std::cin>>s;
    if((bin=fopen(s,"rb"))==NULL)
    {std::cout<<"Нет такого файла, введите название ещё раз!\n" << std::endl; goto b;}
    while(!feof(bin))
    {
        fscanf(bin,"%s%d%d%d%d%d%d",b[i].name,&b[i].pob,&b[i].por,&b[i].nich,&b[i].zab,&b[i].prop,&b[i].och);
    }
    a:for(i=0; i<n-1; i++) {
        if(b[i].och<b[i+1].och) {
            tmp=b[i];
            b[i]=b[i+1];
            b[i+1]=tmp;
            fl=1;
        }
    }
    if(fl==1)
    {fl=0; goto a;}
    puts("Итоговая таблица:");
    std::cout<<"----------------------------------------------------------------------------"<<std::endl;
    std::cout<<"Название\tПобеды\tПоражения\tНичьи\tЗабитые\tПропущенные\tОчки"<<std::endl;
    std::cout<<"----------------------------------------------------------------------------"<<std::endl;
    for(i=0; i<n; i++) {
        std::cout << b[i].name << "\t\t";
        std::cout << b[i].pob << "\t";
        std::cout << b[i].por << "\t\t";
        std::cout << b[i].nich << "\t";
        std::cout << b[i].zab << "\t";
        std::cout << b[i].prop << "\t\t";
        std::cout << b[i].och << std::endl;
    }
    std::cout<<"----------------------------------------------------------------------------"<<std::endl;
    getch ();
    return;
}
 
void convert(int a)
{
    FILE *in,*bin;
    char s[15], d[15]; int i;
    q = new tabl[a];
    metka:std::cin>>s;
    if((in=fopen(s,"r"))==NULL)
    {std::cout<<"Нет такого файла, введите название ещё раз!" << std::endl; goto metka;}
    else
    {
        std::cout<<"Сейчас программа будет конвертировать данные из файла "<<s<<" в бинарный файл."<<std::endl;
        std::cout<<"Введите имя бинарного файла: "; std::cin>>d;
        bin=fopen(d,"w+b");
        for(i=0; i<a; i++)
        {
            fscanf(in,"%s%d%d%d%d%d",q[i].name,&q[i].pob,&q[i].por,&q[i].nich,&q[i].zab,&q[i].prop);
            q[i].och = 2*q[i].pob + q[i].nich;
            fwrite(&q,sizeof(q),1,bin);
        }
        std::cout<<"Данные успешно сконвертированы."<<std::endl;
    }
    fclose(in);
    fclose(bin);
}
Вот содержание текстового файла:
Sparta 10 2 4 13 15
CSKA 11 11 1 1 1
Zenit 9 9 9 9 9
Arsenal 6 6 6 6 6
Russia 10 10 10 10 10
Albania 1 0 1 0 1

Добавлено через 45 минут
Ураааа!!! Нашёл ошибку! Вот исправленный код:
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
#include <iostream>
#include <conio.h>
#include <fstream>
 
extern struct tabl {
    int pob, por, nich, zab, prop, och;
    char name[15];
};
 
tabl *q;
 
void convert(int a);
 
void main() {
    setlocale(LC_ALL,"RUS");
    tabl *b,tmp;
    FILE *bin;
    int i=0,n,fl=0,r;
    char s[15];
    puts (" Данная программа на основе таблицы чемпионата\n"
        "по футболу составит итоговую таблицу чемпионата,\n"
        "подсчитав число очков для каждой команды и\n"
        "расположение их в порядке невозрастания.");
    std::cout << "Введите кол-во команд: "; std::cin >> n;
    b=new tabl[n];
    std::cout<<"\nВведите имя исходного текстового файла: "; convert(n);
    b:std::cout<<"\nТеперь введите еще раз имя бинарного файла: "; std::cin>>s;
    if((bin=fopen(s,"rb"))==NULL)
    {std::cout<<"Нет такого файла, введите название ещё раз!\n" << std::endl; goto b;}
    else
    for(i=0; i<n; i++)
        fread(b,n*sizeof(b[i]),1,bin);
    a:for(i=0; i<n-1; i++) {
        if(b[i].och<b[i+1].och) {
            tmp=b[i];
            b[i]=b[i+1];
            b[i+1]=tmp;
            fl=1;
        }
    }
    if(fl==1)
    {fl=0; goto a;}
    puts("Итоговая таблица:");
    std::cout<<"----------------------------------------------------------------------------"<<std::endl;
    std::cout<<"Название\tПобеды\tПоражения\tНичьи\tЗабитые\tПропущенные\tОчки"<<std::endl;
    std::cout<<"----------------------------------------------------------------------------"<<std::endl;
    for(i=0; i<n; i++) {
        std::cout << b[i].name << "\t\t";
        std::cout << b[i].pob << "\t";
        std::cout << b[i].por << "\t\t";
        std::cout << b[i].nich << "\t";
        std::cout << b[i].zab << "\t";
        std::cout << b[i].prop << "\t\t";
        std::cout << b[i].och << std::endl;
    }
    std::cout<<"----------------------------------------------------------------------------"<<std::endl;
    getch ();
    return;
}
 
void convert(int a)
{
    FILE *in,*bin;
    char s[15], d[15]; int i;
    q = new tabl[a];
    metka:std::cin>>s;
    if((in=fopen(s,"r"))==NULL)
    {std::cout<<"Нет такого файла, введите название ещё раз!" << std::endl; goto metka;}
    else
    {
        std::cout<<"Сейчас программа будет конвертировать данные из файла "<<s<<" в бинарный файл."<<std::endl;
        std::cout<<"Введите имя бинарного файла: "; std::cin>>d;
        bin=fopen(d,"w+b");
        for(i=0; i<a; i++)
        {
            fscanf(in,"%s%d%d%d%d%d",q[i].name,&q[i].pob,&q[i].por,&q[i].nich,&q[i].zab,&q[i].prop);
            q[i].och = 2*q[i].pob + q[i].nich;
            fwrite(&q[i],sizeof(q[i]),1,bin);
        }
        std::cout<<"Данные успешно сконвертированы."<<std::endl;
    }
    fclose(in);
    fclose(bin);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru