Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
5 / 5 / 0
Регистрация: 21.12.2009
Сообщений: 69

Лабораторная "Работа с файлами и структурами данных" - обсуждение

12.06.2010, 16:20. Показов 3157. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, Есть такое задание:

Составить программу со следующими свойствами:

1)вводится неограниченное количество строк таблицы;
2)выводится таблица на экран;
3)сохранения таблицы в файл;
4)чтения таблицы из файла;
5)все данные таблицы хранятся при помощи динамических структур.

и есть код:
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
#include<iostream.h>
struct node {
    char *os, *subd;
    double minop, minvp;
    int cost;
    bool nt;
    node *next;
};
int main() {
    node *phead, *p;
    phead = new (node);
    p = phead;
    cout
            << "ввод строк, для продолжения ввода - 1;для окончания - любой другой символ ";
    int n = 2, i = 1;
    for (i; i < n; i++) {
        cout << "\n" << i << " ОС" << endl;
        p->os = new char;
        cin >> p-> os;
        cout << "\n" << i << " СУБД" << endl;
        p-> subd = new char;
        cin >> p->subd;
        cout << "\n" << i << " Мин. ОП." << endl;
        cin >> p-> minop;
        cout << "\n" << i << " Мин. ВП." << endl;
        cin >> p-> minvp;
        cout << "\n" << i << " Цена" << endl;
        cin >> p -> cost;
        p->next = new node;
        cout << "следующая строка?" << endl;
        cin >> p->nt;
        if (p->nt != 1) {
            p->next = NULL;
            n = i;
        } else {
            p = p->next;
            ++n;
        }
 
    }
    FILE *f = fopen("таблица.txt", "wt");
    if (f == 0) {
        perror("Не могу открыть файл для записи");
        return 1;
    }
    char string_1[] = "Конфигурация програмных средств информационных систем";
    char string_2[] =
            "ОС       СУБД      Мин. ОП.       Мин. ВП.        Цена";
    char string_3[] = "";
    fprintf(f, "%s \n", string_1);
    fprintf(f, "%s \n", string_2);
    for (p = phead; p != NULL; p = p->next) {
        fprintf(f, "%s", p->os);
        fprintf(f, "%s \t ", string_3);
        fprintf(f, "%s", p->subd);
        fprintf(f, "%s \t\t", string_3);
        fprintf(f, "%.lf", p->minop);
        fprintf(f, "%s \t\t", string_3);
        fprintf(f, "%.lf", p->minvp);
        fprintf(f, "%s \t", string_3);
        fprintf(f, "%d", p->cost);
        fprintf(f, "%s \n", string_3);
 
        FILE *f = fopen("таблица.txt", "wt");
    }
 
    fclose (f);
    FILE *g = fopen("таблица.txt", "rt");
    char *line, *result;
    line = new char;
    while (result != NULL) {
        result = fgets(line, 100, g);
        cout << result;
    }
    fclose(g);
    return 0;
 
}
хотелось бы услышать комментарии по нему, что может быть не совсем верно, что можно упростить и т.д... (работу еще не сдал, но все вроде бы работает как надо)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2010, 16:20
Ответы с готовыми решениями:

Работа с файлами и структурами данных
Как правильно считать с файла структуру данных. Например дана структура: #define N 5 FILE *fail_gr; struct knigi { ...

Работа со структурами и файлами. Методы сортировки и поиска данных.
Данные хранятся в файле на диске.Есть матрица m*n, где m и n – целые числа. Упорядочить ее за ростом методом минимумов. Методами...

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

8
16 / 16 / 2
Регистрация: 31.07.2009
Сообщений: 54
12.06.2010, 16:48
А вы это компилировали?
0
5 / 5 / 0
Регистрация: 21.12.2009
Сообщений: 69
12.06.2010, 16:57  [ТС]
ну да, конечно
0
16 / 16 / 2
Регистрация: 31.07.2009
Сообщений: 54
12.06.2010, 18:41
Я бы сделал так -

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
86
87
88
89
90
91
92
#include "stdafx.h"
 
struct node {
        node()
        {
            os = new char;
            subd = new char;
            next = NULL;
        }
        char *os, *subd;
        double minop, minvp;
        int cost;
        node *next;
};
 
 
int _tmain(int argc, _TCHAR* argv[])
{
        node *phead, *p;
        phead = new (node);
        p = phead;
        std::cout<< "Enter lines, 1 - to continue; anything else to finish. ";
                
        while (true)
        {
            int i = 0;
            ++i;
            std::cout << "\n" << i << " OS" << std::endl;
            std::cin >> p->os;
            std::cout << "\n" << i << " SUBD" << std::endl;
            std::cin >> p->subd;
            std::cout << "\n" << i << " Min. OP." << std::endl;
            std::cin >> p->minop;
            std::cout << "\n" << i << " Min. VP." << std::endl;
            std::cin >> p->minvp;
            std::cout << "\n" << i << " Price" << std::endl;
            std::cin >> p->cost;
            std::cout << "Next?" << std::endl;
            {
                int nt;
                std::cin >> nt;
                if (nt == 1) break;
                else
                {
                    p->next = new node();
                    p = p->next;
                }
 
            }
            
        }
        FILE *f = fopen("таблица.txt", "wt");
        if (f == 0) {
                perror("Failed to open a file.");
                return 1;
        }
        char string_1[] = "Configuration:";
        char string_2[] = "OS       SUBD      Min. OP       Max. OP        Price";
        char string_3[] = "";
        fprintf(f, "%s \n", string_1);
        fprintf(f, "%s \n", string_2);
 
        for (p = phead; p != NULL; p = p->next) 
        {
                fprintf(f, "%s", p->os);
                fprintf(f, "%s \t ", string_3);
                fprintf(f, "%s", p->subd);
                fprintf(f, "%s \t\t", string_3);
                fprintf(f, "%.lf", p->minop);
                fprintf(f, "%s \t\t", string_3);
                fprintf(f, "%.lf", p->minvp);
                fprintf(f, "%s \t", string_3);
                fprintf(f, "%d", p->cost);
                fprintf(f, "%s \n", string_3);
        }
        fclose (f);
 
        ///Read
        FILE *g = fopen("таблица.txt", "rt");
        char *line, *result;
        line = new char;
        while (true) 
        {
                result = fgets(line, 100, g);
                if (result == NULL) break;
                std::cout << result;
        }
        fclose(g);
        system("PAUSE");
        return 0;
 
}
Добавлено через 17 минут
И ессесно 1- to finish...
И выровнять.

Добавлено через 9 минут
И

static int i = 0; в первом цикле чтобы номерки менялись)
1
5 / 5 / 0
Регистрация: 21.12.2009
Сообщений: 69
12.06.2010, 18:52  [ТС]
я не смог проверить этот вариант... возможно дело в подключаемой библиотеке, хотя могу ошибаться. все программы делаю и запускаю в Eclipse
0
16 / 16 / 2
Регистрация: 31.07.2009
Сообщений: 54
12.06.2010, 18:55
Да всё тоже самое, никаких других библиотек я не подключал, кроме Ваших.
std перед cout уберите и system(PAUSE). Ну и int main() свой возьмите.

Сам в VS 2008 Express делал.
0
5 / 5 / 0
Регистрация: 21.12.2009
Сообщений: 69
12.06.2010, 18:56  [ТС]
да, дело именно в этом. просто отсутствует такая библиотека. ладно, потом попробую в билдере. Спасибо запредложенный вариант)
0
16 / 16 / 2
Регистрация: 31.07.2009
Сообщений: 54
12.06.2010, 18:59
И вместо stdafx - свои хедеры поставьте.
1
5 / 5 / 0
Регистрация: 21.12.2009
Сообщений: 69
12.06.2010, 19:08  [ТС]
хорошо, сейчас попробую

Добавлено через 8 минут
действительно, все работает. еще раз спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2010, 19:08
Помогаю со студенческими работами здесь

«Структуры. Массивы структур» Лабораторная работа 5 «Работа со структурами»
Задание. Написать программу, которая записывает с клавиатуры в файл структуру согласно выданному варианту задания. В качестве разделителя...

Работа со структурами и файлами
Помогите найти ошибку. Задание: Читая данные из файла и используя массив структур решить следующую задачу. В справочной аэропорта...

Работа с файлами и структурами
Здравствуйте, есть код в котором почему то возникает такая ошибка: Вызвано исключение по адресу 0x7BA2E63C (ucrtbased.dll) в...

Работа с файлами и структурами
Доброго времени суток. Начал делать работу по созданию БД на Си. Для начало надо сделать основные функции (добавление записи, удаление...

Работа с файлами и структурами.
Помогите плз с программой,3 часа просидел и не хрена не получилось: Поля записи: код животного, название, количество еды в день (кг)....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru