|
Домашнее задание 3
Потоковый ввод/вывод
Домашнее задание 3 индивидуальное для каждого студента. Номер варианта соответствует последней цифре вашего студенческого билета. Фамилию, номер студенческого билета и номер варианта укажите в комментариях в тексте программы (в файле main.cpp).
Результат (папка с проектом) отправьте на электронную почту sergiusnick@yandex.ru с темой «домашнее задание 3».
Срок сдачи: 1 июня
Пример оформления программы.
Вариант 0
Функция стандартной библиотеки system(char *command) позволяет выполнить команду системы, как если бы она запускалась через командную строку cmd.exe. Примером такой команды является команда ping, которая позволяет выполнить проверку связи с указанным узлом в сети. Например, команда ping ya.ru –n 7 выполняет проверку связи с сайтом ya.ru, отправляя 7 пакетов-запросов.
Напишите программу, которая запрашивает у пользователя адрес сайта и количество пакетов для проверки, затем формирует текстовую строку и передает ее в качестве параметра функции system(). Пример взаимодействия с программой.
Вариант 1
Рассмотрите пример «правильного» ввода чисел с консоли, учитывающего возможные ошибки пользователя при вводе.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int i;
cin.unsetf(ios::skipws);
while(true)
{
cout<<"Введите число: ";
cin>>i;
if(cin.good())
{
cin.ignore(10, '\n');
break;
}
cin.clear();
cout<<"Неправильный ввод"<<endl;
cin.ignore(10, '\n');
}
cout<<"Вы ввели: "<<i<<endl;
return 0;
}
Организуйте ввод в виде отдельной функции CinInt, имеющей такой прототип:
int CinInt(char *HelpText, char *ErrorText, istream &in, ostream &out, unsigned short MaxAttempts);
HelpText – текст, который выводится пользователю в качестве подсказки (вместо "Введите число: ")
ErrorText - текст, который выводится пользователю, если он допустил ошибку при вводе (вместо "Неправильный ввод")
in - ссылка на поток ввода (вместо cin)
out - ссылка на поток вывода (вместо cout)
MaxAttempts - количество неудачных попыток ввода, после которого система автоматически генерирует исключение MaxAttemptsError
Пример функции main для проверки работы программы
int main()
{
setlocale(LC_ALL, "Russian");
try
{
if(CinInt("2*2?", "Неправильный ввод", cin, cout, 10)==4)
cout<<"Верно"<<endl;
else
cout<<"Неверно. Учи матчасть"<<endl;
}
catch(MaxAttemptsError)
{
cout<<"Превышено количество попыток"<<endl;
}
return 0;
}
Вариант 2
CSV – текстовый формат, предназначенный для представления табличных данных (http://ru.wikipedia.org/wiki/CSV). Столбцы таблицы в русской локали разделяются точкой с запятой. Например, фрагмент
Иван Иванов;40
Петр Петров;30
Будет выглядеть так:
Иван Иванов | |
Петр Петров |
Просматривать и редактировать CSV-файлы можно, например, с помощью MS Excel.
В программе есть класс Student.
class Student
{
private:
char name[80]; //имя студента
int number; //номер студенческого билета
public:
Student (): age(0)
{
name[0]='\0';
}
Student (char *name, int number): number (number)
{
strcpy(this->name, name);
}
};
Добавьте в класс Student перегруженный оператор << для потокового вывода переменных типа Student в формате CSV. Для этого в качестве разделителя между именем и номером студенческого билета используйте точку с запятой.
В функции main создайте по одной переменной типа Student на каждого студента вашей группы. Организуйте вывод этих переменных в файл «Students.csv». Для проверки откройте получившийся файл в MS Excel.
Вариант 3
Возьмите за основу класс Time из домашнего задания №1.
В одном решении создайте два проекта.
В первом проекте перегрузите оператор << для потокового вывода переменной типа Time в формате «ЧЧ:ММ:СС», используя флаги или манипуляторы потоков, то есть часы, минуты и секунды должны указываться 2-мя знаками, даже если равны 0. Продемонстрируйте работу программы на 5-6 примерах. Вывод организуйте на экран и в файл «times.txt».
Во втором проекте перегрузите оператор >> для потокового ввода переменной типа Time. Прочитайте получившийся файл «times.txt». Прочитанные переменные типа Time выведите на консоль.
Вариант 4
Скопируйте содержимое текстового файла «data.txt» (любого размера) в строку (то есть массив типа char) в программе. Выведите строку на консоль.
Примечание: поскольку изначально количество символов неизвестно, память под строку нужно выделять динамически в зависимости от размера файла.
Вариант 5
Используйте класс Fraction из домашнего задания №1. В файле записаны обыкновенные дроби в текстовом виде.
Прочитайте файл и найдите произведение дробей.
Вариант 6
Создайте в программе массив из 1000 чисел типа int и заполните его случайными числами. Выведите содержимое массива в два файла: в текстовом формате (для разделителя используйте пробел) и в двоичном. Затем определите размеры получившихся файлов и определите, какой и них больше.
Вариант 7
В программе есть класс Student.
class Student
{
private:
char name[80]; //имя студента
int number; //номер студенческого билета
public:
Student (): age(0)
{
name[0]='\0';
}
Student (char *name, int number): number (number)
{
strcpy(this->name, name);
}
};
Добавьте в класс Student перегруженный оператор << для потокового вывода переменных типа Student. В качестве разделителя между именем и номером студенческого билета используйте символ табуляции.
В функции main создайте по одной переменной типа Student на каждого студента вашей группы. Каждую переменные выведите в отдельный файл. Имя файла соответствует имени студента плюс расширение txt.
Примечание: для копирования строк можно использовать функцию strcpy, для склеивания – функцию strcat.
Вариант 8
Напишите программу, которая дописывает к существующему текстовому файлу строку текста, вводимую с консоли. Имя файла также вводится с консоли.
Вариант 9
Напишите программу для склеивания двух текстовых файлов, разделяя их содержимое пустой строкой. Имена файлов задаются в тексте программы.
Дата добавления: 2015-11-04; просмотров: 36 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
Итак,тут будет небольшой рассказ об этом персонаже:кто он такой,кто его придумал,а также его биография. | | | 1.Селевко Г.К. Педагогические технологии на основе активизации, интенсификации и эффективного управления УВП. - М.: НИИ школьных технологий, 2005. - 288 с. |