Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Домашнее задание 3 индивидуальное для каждого студента. Номер варианта соответствует последней цифре вашего студенческого билета. Фамилию, номер студенческого билета и номер варианта укажите в



Домашнее задание 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 с.

mybiblioteka.su - 2015-2024 год. (0.012 сек.)