Форум программистов, компьютерный форум, киберфорум
Наши страницы

Форматирование поток ввода\вывода - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Слова предложения, содержащие две или более одинаковые буквы переместить в другое предложение http://www.cyberforum.ru/cpp-beginners/thread367469.html
Здраствуйте. Помогите пожалуйста с написанием программы на С (не ++). "Введите предложение. Слова предложения, содержащие две или более одинаковые буквы переместить в другое предложение." ...
C++ Массив для новичков прошу объяснить и помочь с решением задачи 1) дан массив А(50).найти сумму и кол-во нечетных положительных элементов,следующих за первым по порядку нулевым элементом. 2) Дан массив А.построить... http://www.cyberforum.ru/cpp-beginners/thread367465.html
C++ Проблема с приравниванием. Компилятор ругается на разные типы данных, хотя я вроде как задаю одинаковые.
Начал изучать c++, пробую написать класс, имитирующий очередь. уже на данном этапе столкнулся с проблемой. код: class Que { public: Task * list; int begin; int end; int count; Que () {
вводит с клавиатуры все элементы массива а(10), а выводит только четные. C++
Прошу помоч написать программу на языке С в борланде. Условие: Напишыте программу (полностью), которая вводит с клавиатуры все элементы массива а(10), а выводит только четные.
C++ Циклически сдвинуть строки массива вниз http://www.cyberforum.ru/cpp-beginners/thread367457.html
Здравствуйте!!! Подскажите, пожалуйста, где ошибка. Нужно циклически сдвинуть строки вниз и записать измененные три массива в 3-х мерный массив. Вот есть вот такая программа, которая выдает...
C++ Оператор switch Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной. Добавлено через 21 час 50 минут ага... ну... подробнее

Показать сообщение отдельно
Stormfire
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 43

Форматирование поток ввода\вывода - C++

16.10.2011, 22:23. Просмотров 1949. Ответов 7
Метки (Все метки)

Здравствуйте, прощу объяснить и помочь дописать небольшой кусочек программы.

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

Проблема:
Определил, записал в текстовый и бинарный файлы, но вот с форматированием не очень понимаю.
С шириной еще разобрался
Не пугайтесь размерам СППшника. Интересует только функция Doit,а точнее строкии 89-92. Насколько я понял, форматирование нужно указывать именно там. Если с width еще кое-как разобрался, то как точность, заполнители и так далее сделать?
p.s. комментарии на Украинском, не пугайтесь.

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
135
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <string.h>
#include <conio.h>
#include <iomanip>
using namespace std;
 
struct stud
{
char name[20]; //ім'я студента
char scholarship[20]; //стипендія
char mark[20];//середній бал
};
 
struct student                 
{
    stud studentt[15];
    int stnum; //кількість студентів
};
 
stud student;
 
ifstream f1; //файловий потік введення
ofstream f2; //файловий потік виведення
 
void input() //введення даних
{ 
f2.open("binar.dat", ios::out|ios::binary); //відкрити вхідний потік
 
    if(!f2) //якщо файл не існує 
    {
    cout<<"Error in source file "<<endl; //вивести повідомлення
    }  
    else
    {           
    char answer_stud; //параметр закінчення введення даних про студента
               
        int j=0; //початкове значення лічильника кількості студентів
            
            do  
            {
            //введення даних про студента
            cout<<"\nStudent\'s name: "; 
            cin>>student.name;
            f2<<student.name<<endl;
            fflush(stdin);
 
            cout<<"Student\'s scholarship: ";
            cin>>student.scholarship;
            f2<<student.scholarship<<endl;
            fflush(stdin);
 
            cout<<"Student\'s mark: ";
            cin>>student.mark;
            f2<<student.mark<<endl;
            fflush(stdin);
 
            j++; //перехід до наступного студента
 
            cout<<"\nDo you want to add another student? y/n"<<endl;
            answer_stud = getch();
            }
            while(answer_stud != 'n'); //кінець введення даних про студента 
                    }
    f2.close(); //закриття файлу
    }
int doit(const char *source, const char *dest) //копіювання
{ 
char c; //символ, що зчитується з файлу
 
f1.open(source,ios::in); //відкрити вхідний потік
 
if(!f1) //якщо файл не існує 
{
cerr<<"Error in source file "<<source<<endl; return -1;} //вивести повідомлення
 
f2.open(dest,ios::out); //відкрити вихідний потік
 
if(!f2) //якщо потік відкрити неможливо
{
cerr<<"File already exist "<<dest<<endl; return -1;}
 
while(f1) //поки не кінець вхідного потоку
{
f1.get(c); //зчитувати з потоку по одному символу
f2.width(2);//мінімальна ширина поля виведення
 
f2<<c; //записати символ у вихідний потік
} 
 
cout<<endl<<"File created and its size is"; //вивести повідомлення
long size=f2.tellp();     
cout<<" "<<size<<" bytes\n";//вивести розмір створенного файлу
cout<<"Goodbit checking(No errors in bits if 1): "<<cin.good()<<endl<<endl;//перевірка на помилки в бітах
getch();
f1.close(); //закрити файли
f2.close();
cin.clear();//очищення потоку
return 1;
}
int main()
 
{
    char s[50] = "binar.dat", d[50];
    int result=-1;  
 
    // цикл меню
    while(true)
    {
        system("cls");
        cout<<"1. Input binar file"<<endl;
        cout<<"2. Create text file with formating"<<endl;
        cout<<"0. Exit"<<endl;
        cout<< "Chosen menu item: ";
        int key; //номер пункту меню
        cin>>key; //вибір потрібного пункту меню
 
        // вибір пунктів меню
        switch(key)
        {
           case 1: {input();break;}  // запис у файл
           case 2: {while(result!=1)
                 {
                 cout<<"\n"<<"Enter name for txt file: ";
                 cin>>d; //ввести ім’я вихідного файлу
                 result = doit(s, d); //скопіювати файл
                 }break;}
           case 0: {exit(0);break;}  // вихід
           default: {cout<<"Choose another"<<endl;;break;}
        }
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.