|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Файловый ввод |
|
C/C++ - [решено] Файловый ввод
|
Новый участник Сообщения: 33 |
Профиль | Отправить PM | Цитировать Доброго времени суток, прежде всего хочется отметить, что пример. который я приведу - экзаменационный вопрос, который мне совершенно не требуется решить, просто он в в какой-то степени удачно описывает мой вопрос о вводе.
Как обеспечить ввод и символьных переменных(буквы, пробелы и т.д.) и числовых так сказать. Трудно объяснить, к чему я и привел этот билет: В файле операционной системы "Task4.in" хранится в текстовой форме ведомость сдачи экзаменов студентами некоторой группы. Каждая строка этого файла содержит сведения об одном студенте, представленные в следующем формате: позиции 1...2 - порядковый номер студента в группе; позиция 3 - пробельная литера; позиции 4...22 - фамилия студента длиной не более 19 символов в произвольном месте поля; позиция 23 - пробельная литера; позиция 24 - четыре оценки по четырем предметам, разделенные не менее чем одной пробельной литерой. Количество студентов в группе равно 16. Пример строк указанного файла: 01 Андреев 5 4 5 5 02 Быков 5 5 5 5 ... 16 Яковлев 4 4 5 4 1.1. Написать объявление массива структур для хранения указанной ведомости. 1.2. Написать фрагмент программы, который заполнит экзаменационную ведомость данными, вводимыми из файла операционной системы "Task4.in". Ввод данных должен осуществляться в текстовом режиме средствами языка С или С++ по усмотрению экзаменуемого. 1.3. Написать фрагмент программы, который вычисляет среднюю экзаменационную оценку по всем предметам и студентам (т.е. среднюю оценку из 64 оценок), а затем выводит значение этого показателя в файл операционной системы "Task4.out". Примечание. Закрыть открытые файлы, как только они станут не нужны. Предусмотреть контроль корректности значений, возвращаемых функциями библиотеки Си "fopen", "fscanf". Указать какие включаемые файлы требуeт представленный фрагмент. Аналогичные действия предусмотреть и при использовании средств ввода-вывода языка С++. мое решение (далеко не первое, просто предыдущих уже не осталось) main #include <iostream> #include <fstream> #include <cstdlib> #include "rus8.h" #include "student.h" using namespace std; int main(int argc, char *argv[]) { rus(); if (argc < 3) { cout << "Ошибка 0 : введены не все аргументы командной строки" << endl; exit(0); } stud *arr = new stud[r]; ifstream in(argv[1], ios::binary); read_list(in, arr); in.close(); ofstream out(argv[2]); write_list(out, arr); out.close(); return 0; } #include <iostream> #include <fstream> #include <cstdlib> using namespace std; const int n = 2; const int size = 12; const int m = 14; const int r = 4; struct stud { int num[n]; char name[size]; int p1, p2, p3; }; void read_list(istream &, stud *); void write_list(ostream &, stud *); #ifndef _RUS_H #define _RUS_H #include <locale.h> inline void rus( void ) { setlocale( LC_CTYPE, ".1251" ); setlocale( LC_MONETARY, ".1251" ); return; } #endif #include "student.h" void read_list(istream &in, stud *arr) { char temp[m]; for(int i = 0; i < r; i++) { for(int p = 0; p<n; p++) { in >> arr[i].num[p]; } for(int z = 0; z<m; z++) in >> temp[z]; in >> arr[i].p1 >> arr[i].p2 >> arr[i].p3; for(int q = 0; q < size; q++) { arr[i].name[q] = temp[q+1]; } } } void write_list(ostream &out , stud *arr) { for(int i = 0; i < r; i++) { for(int q = 0; q < n; q++) out << arr[i].num[q]; out << " "; for(int w = 0; w < size; w++) out << arr[i].name[w]; out << " " << arr[i].p1 << " " << arr[i].p2 << " " << arr[i].p3 << endl; } } буду благодарен за ответ (если еще и пару строк кода, отвечающего за считывание будет - буду на седьмом небе от радости)) ), и совсем не обязательно чтоб он был привязан к этому примеру, просо хочу разобраться в принципе считывания. |
|
Отправлено: 01:44, 20-01-2010 |
Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать |
Отправлено: 05:40, 20-01-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Из простого компа в файловый сервер..... | Bullet-Avalon | Хочу все знать | 13 | 02-10-2009 16:27 | |
[Решено] Ввод компьютера в домен | Tyran | Microsoft Windows NT/2000/2003 | 12 | 20-11-2008 21:16 | |
C++ Builder || Файловый ввод/вывод | Sir Z | Программирование и базы данных | 7 | 04-11-2006 17:41 | |
Основы C++ | Файловый ввод | Skrip | Программирование и базы данных | 12 | 05-08-2005 18:52 | |
Файловый ввод-вывод в ring0 | wano | Программирование и базы данных | 13 | 12-11-2002 18:21 |
|