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

Текстовые файлы (На основе таблицы, содержащей данные об услугах, оказываемых компьютерной фирмой написать программу) - C++

Восстановить пароль Регистрация
 
ruspat
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 24
11.02.2013, 16:55     Текстовые файлы (На основе таблицы, содержащей данные об услугах, оказываемых компьютерной фирмой написать программу) #1
Само задание: На основе таблицы, содержащей данные об услугах, оказываемых компьютерной фирмой (название услуги, её стоимость, налог на добавленную стоимость(6%), срок выполнения)
написать программу, которая вводит эту информацию и печатает следующие данные: таблицу, расположив названия услуг в порядке неубывания их срока выполнения.
(Т.е. файл с входными данными имеет вид | услуга | стоимость | ндс | срок |)

По сути: программа работает, но я изначально прохожу по файлу, считая количество строк, затем создаю массив структур размером в количество строк. Нужно как-то оптимизировать, в частности полностью выкинуть лишний проход, чтобы данные в массив писались сразу, но у меня пока не получается, поэтому прошу сделать код более правильным.

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
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <Windows.h>
 
struct usluga {
    char nazvanie[10];
    float stoimost;
    float nds;
    int srok;
};
 
int main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    FILE *in, *out;
    int kolichestvo, i=1, flag;
    usluga *tablica, temp;
    char strend;
 
    in = fopen ("in.txt", "r");
    out = fopen ("out.txt", "w");
 
    if ((in = fopen ("in.txt", "r")) != NULL)
    {
        while (!feof (in))
        {
            fscanf (in, "%c", &strend);
            if (strend == '\n')
                i++;
        }
 
        kolichestvo = i;
        tablica = new usluga[kolichestvo];
 
        fclose (in);
        in = fopen ("in.txt", "r");
 
        i = 0;
        while (!feof (in))
        {
            fscanf (in, "%s", &tablica[i].nazvanie);
            fscanf (in, "%f", &tablica[i].stoimost);
            tablica[i].nds = tablica[i].stoimost * 0.06;
            fscanf (in, "%d", &tablica[i].srok);
            i++;
        }
    }
 
    else
    {
        printf ("\n Ошибка!");
        getch();
        return 0;
    }
 
    do
    {
        flag = 1;
        for (i = 0; i < kolichestvo - 1; i++)
            if (tablica[i].srok > tablica[i+1].srok)
            {
                flag = 0;
                temp = tablica[i];
                tablica[i] = tablica[i+1];
                tablica[i+1] = temp;
            }
    } while (!flag);
 
    for (i = 0; i < kolichestvo; i++)
        fprintf (out, "%s\t%.2f\t%.2f\t%d\n", tablica[i].nazvanie, tablica[i].stoimost, tablica[i].nds, tablica[i].srok);
    
    printf ("\n Успешно");
 
    getch();
    fclose (in);
    fclose (out);
    delete [] tablica;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 16:55     Текстовые файлы (На основе таблицы, содержащей данные об услугах, оказываемых компьютерной фирмой написать программу)
Посмотрите здесь:

C++ Текстовые файлы
C++ Текстовые файлы
C++ Текстовые файлы
C++ Классы. Файлы. Топ файлов написать программу
Как из С++ передать данные в текстовый файл? и как читать текстовые файлы в С++? C++
C++ Текстовые файлы
C++ Написать программу, формирующую из одной строки, содержащей фамилию, имя и отчество строку с фамилией и инициалами
Написать программу для работы с базой данных, содержащей записи со сведениями о студентах C++
Написать программу работы с поездами, на основе класса Train C++
C++ Написать программу на основе алгоритма RLE (сжатие/восстановление массива)
C++ Написать программу, которая вводит фактические данные из таблицы
C++ Написать программу, которая на основе матрицы А nxm

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 23:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru