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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ruspat
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 24
#1

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

11.02.2013, 16:55. Просмотров 379. Ответов 0
Метки нет (Все метки)

Само задание: На основе таблицы, содержащей данные об услугах, оказываемых компьютерной фирмой (название услуги, её стоимость, налог на добавленную стоимость(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++
Задача такая: у меня есть текстовый файл, в котором из матлаба передано некоторое число N. как теперь это число прочитать? потом...

Написать программу для работы с базой данных, содержащей записи со сведениями о студентах - C++
Написать программу для работы с базой данных, содержащей записи со сведениями о студентах: ФИО, возраст, пол, курс, успеваемость, в...

Написать программу, формирующую из одной строки, содержащей фамилию, имя и отчество строку с фамилией и инициалами - C++
Написать программу, формирующую из одной строки, содержащей фамилию, имя и отчество строку с фамилией и инициалами

Написать программу, которая на основе матрицы А nxm - C++
Написать программу, которая на основе матрицы А nxm (заполненная псевдослучайными числами) строит матрицу Bnxmза следующим правилом. Bij (i...

Написать программу работы с поездами, на основе класса Train - C++
Написать программу работы с поездами, на основе класса Train. Программа предлагает ввести с клавиатуры: - Количество поездов; -...

Написать программу на основе алгоритма RLE (сжатие/восстановление массива) - C++
Массив из 0 и 1 целых чисел. Массив надо сжать, а затем восстановить массива. Надо написать программу по алгоритму RLE. Спасибо заранее ...

Классы. Файлы. Топ файлов написать программу - C++
Создать класс File. Добавить метод, который считает сколько файлов на определённом диске. Создать метод Competition. Он...

Текстовые файлы - C++
#pragma argsused #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;iterator&gt;- Что вот это за библиотека? и зачем...

Текстовые файлы. - C++
Дано целое число N и текстовый файл с именем Name1, содержащий один абзац текста, выровненный по левому краю. Отформатировать текст так,...

Текстовые файлы в C++ - C++
Помогите пожалуйста написать прогу по файлам в С++. Вот задание:

Текстовые файлы - C++
В файле находятся вещественные числа. Определить количество чисел в наиболее длинной возрастающей последовательности элементов файла. ...


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

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

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