Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
 Аватар для Abomination_25
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246

Структура + функции + операция с файлами(задача)

20.09.2017, 22:30. Показов 1768. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно имеется такая задача:
1)Создать структуру с 3-мя типами данных(Фамилия,Предмет,Оценка)
2)Запросить у пользователя ввод этих данных, записав их в структуру.Вывести на экран результат и тому подобное.
Затем сохранить данные в файл.
Затем считать эти же данные в другой массив и снова его показать.

Собственно почти сделал много уже, но я делал Структуру через String?, а не через Char[]... То есть когда вводил данные в структуру, то со String все ОК получалось, даже с пробелами. А в Char[] Попробовал с пробелом написать - Первая часть до пробела в одну переменную пошла, вторая часть после пробела пошла в другую... Как с этим бороться??? Вот код:

Еще не очень понимаю, как из .txt файла обратно записать красиво все в виде таблички в структурный массив? Может у кого какая идея есть?
Моё задание по-научному вот так звучит:
Действия, выполняемые программой:
1. Чтение данных из файла в динамический массив.
2. Просмотр данных, хранящихся в массиве.
3. Корректировка данных заданной строки.
4. Вычисления.
5. Сохранение данных в новом файле (имя файла вводится с клавиатуры)

8 вариант
Количество строк: 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
 
struct student
{
    char last_name[25];
    char subject[25];           // Тут раньше был String - с ним все прекрасно работало, но задание увы другое
    int mark;
};
 
void input(student *a,int n)
{
    for (int i=0;i<n;i++){
    cout << setw(35) << "Enter the name of student "  << i+1 << ":";
    cin >> a[i].last_name;
    cout << setw(35) << "Enter the subject of student " << i+1 << ":";
    cin >> a[i].subject;
    cout << setw(35) << "Enter the mark of student " << i+1 << ":";
    cin >> a[i].mark;
    }
    cout << endl;
}
 
void output(student *a,int n)
{
    cout << setw(20) << "Last name" << "|" << setw(18) << "Subject" << "|" << setw(7) << "Mark" << endl;
    for (int i=0;i<n;i++){
    cout << setw(20) << a[i].last_name << "|" << setw(18) << a[i].subject <<  "|" << setw(7) << a[i].mark << endl;
    }
}
 
int sum(student *a,int n)
{
    int q=0;
    for (int i=0;i<n;i++)
    {
        if(a[i].mark==2)
            q++;
    }
    return q;
}
 
void file_output(student *a,int n,char* m)
{
   ofstream fout;
   fout.open(m);
   fout << setw(20) << "Last name" << "|" << setw(18) << "Subject" << "|" << setw(7) << "Mark" << endl;
   for (int i=0;i<n;i++){
   fout << setw(20) << a[i].last_name << "|" << setw(18) << a[i].subject <<  "|" << setw(7) << a[i].mark << endl;
   }
   fout.close();
}
 
 
void file_input(student *a,int n,char* m)
{
    ifstream fin;
    fin.open(m);  // Тут считывание из файла....Помогите :D
 
}
 
 
 
int main()
{
    student a[5],c[5];
    char ch;
    char path_out[50],path_in[50];
    do{
        char ch_1;
        do{
        cout << "Do you want to open or create text file(0-open,1-create)? ";
        cin >> ch_1;
        while(ch_1!='0' && ch_1!='1')
        {
            cout << "Error, try again! ";
            cin >> ch_1;
        }
        if(ch_1=='0')
        {
        cout << "Enter the path to your existing file(E:\\text_file.txt): ";
        cin >> path_in;
        file_input(c,5,path_in);
        }
        else
        {
        char ch_2;
        do{
            input(a,5);
            output(a,5);
            cout << "Amount of '2' marks is " << sum(a,5) << endl;
            cout << endl << setw(50) << "Do you want to enter data again(0-yes,1-no)? ";
            cin >> ch_2;
            while(ch_2!='0' && ch_2!='1')
            {
                cout << "Error, try again! ";
                cin >> ch_2;
            }
        }while(ch_2!='1' && ch_2=='0');
 
        char ch_3;
        do{
            cout << "Do you want to save your file(0-yes,1-no)? ";
            cin >> ch_3;
            if(ch_3=='0')
            {
                cout << "Enter the path to your file(E:\\text_file.txt): ";
                cin >>path_out;
                file_output(a,5,path_out);
            }
            while(ch_3!='0' && ch_3!='1')
            {
                cout << "Error, try again! ";
                cin >> ch_3;
            }
        }while(ch_3!='0' && ch_3!='1');
        }
        }while(ch_1!='0' && ch_1!='1');
 
 
        //Заключительная часть
 
        cout << "Do you want to exit(0-yes,1-no)? ";
        cin >> ch;
        while(ch!='0' && ch!='1')
        {
            cout << "Error, try again! ";
            cin >> ch;
        }
        }while(ch!='0' && ch=='1');
    return 0;
}
Добавлено через 45 минут
Да, походу разобрался с Char[] - просто cin не разрешает ему печатать через пробел. Использовал вот так, но теперь не дает фамилию ввести...
C++
1
2
3
4
5
6
7
8
9
10
11
12
void input(student *a,int n)
{
    for (int i=0;i<n;i++){
    cout << setw(35) << "Enter the name of student "  << i+1 << ":";
    cin.getline(a[i].last_name,25);
    cout << setw(35) << "Enter the subject of student " << i+1 << ":";
    cin.getline(a[i].subject,25);
    cout << setw(35) << "Enter the mark of student " << i+1 << ":";
    cin >> a[i].mark;
    }
    cout << endl;
}
Просто проскакивает этот момент....
Да. И почитал насчёт чтения из файла. Я как понял, записать все в массив моей структуры у меня вряд ли получился так легко сделать. И мне надо считать файл без String обязательно. Там еще трабл в том, что нужно использовать динамическую память для чтения массива...Вообще мозг кипит... хелп !
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2017, 22:30
Ответы с готовыми решениями:

Функции seekg, clear и операция передачи в поток при работе с файлами
Приветствую. Только начал работать с файлами, выполняю задание по созданию и изменению последовательного файла. Поэтому вместо функции...

Структура while. Операция деления без остачи
Нужно написать програму, кторая предлагаєт ввести положительное целое число. И используя операцию деления без остачи, берёт остачу от...

операция над файлами
1) Имеются два файла.Первый содержит следующую информацию о пассажирах поезда: -ФИО; -номер вагона; -номер места; пункт назначения....

1
 Аватар для Abomination_25
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
20.09.2017, 22:41  [ТС]
Вот задание, может кому-то станет ясно, что от меня требуют...
Вложения
Тип файла: pdf Lab1_TP (1).pdf (97.4 Кб, 10 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2017, 22:41
Помогаю со студенческими работами здесь

Структура и работа с файлами
Имеется информация по итогам экзаменов в институте всего в списке N человек. По каждому из студентов имеются следующие сведения:...

Структура Train. Работа с файлами
&quot;Расписание поездов Москва-С. Петербург&quot; Сформировать файлы: 1.Список поездов, отправляющихся из Москвы после часа введенного с...

Структура. Работа с файлами. Автобусы
Доброго времени суток! Всё работает, однако очень часто (с вероятностью в 90%) программа выдаёт ошибку: _Block_Type_Is_Valid...

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

Задача на перестановку операция сложегия, вычитания. инкремента и т.д.
Есть код: #include&lt;iostream&gt; using namespace std; int main() { int a,b=20; for(a=0,a&lt;b;a--)


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru