Форум программистов, компьютерный форум CyberForum.ru

Сколько всего пропущено уроков и сколько пропущено всего по уважительной причине - C++

Восстановить пароль Регистрация
 
Ganz1846
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 38
21.06.2014, 23:33     Сколько всего пропущено уроков и сколько пропущено всего по уважительной причине #1
Написать программу на файл написать Ф. И. О., месяц пропусков, сколько всего пропущено уроков и сколько пропущено всего по уважительной причине уроков. Нужно чтобы над списком можно было проводить эти операции: создание, до запись, печать, удаление, корректировка.
Вот код программы в TurboPascal
Создание, до запись:
Pascal
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
uses crt;
type a1=record
fio,m,pv,py:string;
end;
var a:a1; fa:file of a1;
n:integer;
begin system.filemode:=2; assign(fa,'prop26');{$i-}reset(fa);{$i+}
if ioresult=0 then begin
                          writeln('До запись'); seek(fa,filesize(fa));reset(fa);
                        end
                   else begin
                           writeln('Создание');
                           rewrite(fa);
                        end;
with a do
while true do begin
writeln;
writeln('Ф. И. О.');readln(fio);
if fio='*' then begin close(fa); break end;
writeln('Месяц');readln(m);
writeln('Пропущено всего дней');readln(pv);
writeln('Пропущено по уважительной причине');readln(py);
writeln; n:=n+1;
writeln(n,'. Запись введена');
write(fa,a);
end;
readkey;
end.

Печать:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses crt;
type a1=record
fio,m,pv,py:string;
end;
var a:a1; fa: file of a1;
n:integer;
begin clrscr; system. filemode:=2;
assign(fa,'prop26');
reset(fa); seek(fa,0);
while not eof (fa) do begin
read(fa,a);
writeln(a.fio:5, a.m:10, a.pv:15, a.py:20);
end;
readkey;
end.

Удаление:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses crt;
type a1=record
number,fio,m,pv,py:string; end;
var a:a1; fa:file of a1;
k,n:integer;
begin clrscr; system. filemode:=2; assign (fa,'prop26');
reset(fa);
with a do
while not eof(fa) do begin
read(fa,a);
writeln('#',filepos(fa)+1,fio:15,m:16,pv:15,py:15);
writeln('Удалить? Да(1)/Нет(0)');
readln(k);
n:=filepos(fa)-1;writeln(number);
if k=1 then begin seek(fa,filesize(fa)-1); read(fa,a); writeln(number);
                  seek(fa,n); write(fa,a);
                  seek(fa,filesize(fa)-1); truncate(fa); writeln('Удалено');
                  end;writeln;
                  end;close(fa);
end.
Корректировка:
Pascal
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
uses crt;
type a1=record
fio,m,pv,py:string;
end;
var a:a1; fa:file of a1;
k,n:integer;
begin system. filemode:=2; assign(fa,'prop25');reset(fa);
with a do
while not eof (fa) do begin
read(fa,a);
writeln(a.fio:5, a.m:10, a.pv:15, a.py:20);
writeln('Нужна корректировка Да(1)/Нет(0)');
readln(k);
if k=1 then begin
writeln('Выбор корректировки');
writeln('1. Ф. И. О.');
writeln('2. Месяц');
writeln('3. Пропущено всего дней');
writeln('4. Пропущено уважительных дней');
writeln('5. Все поля компонентов');
readln(n);
case n of
1: begin writeln('Введи Ф. И. О.'); readln(fio);end;
2: begin writeln('Введи месяц'); readln(m);end;
3: begin writeln('Введи пропущенных всего дней'); readln(pv);end;
4: begin writeln('Введи пропущенных по уважительной причине'); readln(py);end;
5: begin writeln('Ф. И. О.'); readln(fio);
         writeln('Месяц'); readln(m);
         writeln('Пропущено всего дней');readln(pv);
         writeln('Пропущено по уважительной причине');readln(py);end;
         end;
seek(fa,filepos(fa)-1);
write(fa,a);
end;end;
readkey;
end.
Добавлено через 4 часа 21 минуту
help me

Добавлено через 1 час 47 минут
help
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2014, 23:33     Сколько всего пропущено уроков и сколько пропущено всего по уважительной причине
Посмотрите здесь:

C++ Подсчитать, сколько в трёх различных строках буквенных символах, а сколько цифровых
Определить сколько раз слова встречаются в тексте и сколько непосредственно друг за другом. C++
C++ определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности)
C++ Нужно найти сколько всего чисел и среднее арифметическое чисел максимального и минимального
C++ Определить, сколько процентов от всего количества элементов последовательности целых чисел составляют нечетные элементы
C++ Задан массив целых чисел. Определить, сколько процентов от всего количества элементов исходного массива составляют нечётные элементы
Определить, сколько среди чисел четных и сколько нечетных C++
C++ Составить программу, которая вычисляет, сколько всего зёрен оказалось на шахматной доске
Определить, сколько процентов от всего количества элементов последовательности целых чисел составляют нечетные C++
C++ Выяснить сколько всего заданных слов в предложении
C++ Как посчитать сколько на указанном пользователем диске всего файлов и папок?
Ввести массив А(10), подсчитать сколько в нем четных, сколько нечетных элементов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GuGo1991
267 / 261 / 93
Регистрация: 02.08.2012
Сообщений: 609
22.06.2014, 02:11     Сколько всего пропущено уроков и сколько пропущено всего по уважительной причине #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ganz1846, учитывать, что ФИО вводится через пробел (Иванов Борис Львович), файл должен иметь
шесть элементов в строке ( Ф, И, О, месяц пропусков, сколько всего пропущено уроков, сколько пропущено всего
по уважительной причине). Иначе будут нестыковки с корректировкой.
Кликните здесь для просмотра всего текста
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>
#include <cstdlib>
#include <conio.h>
 
int whatToDo();
void funcList(int choice);
void check(std::string str);
std::string str;
char* fileName;
 
int main()
{
    setlocale(LC_ALL,"Russian");
    int choice;
    choice = whatToDo();
    
    while(choice != 6)
    {
        switch(choice)
        {
            case 1:
                 funcList(1);
                 break;
            case 2:
                 funcList(2);
                 break;
            case 3:
                 funcList(3);
                 break;
            case 4:
                 funcList(4);
                 break;
            case 5:
                 funcList(5);
                 break;
        }
        choice = whatToDo();
    }
    
    delete [] fileName;
    std::cout << "\nOperation succeeded\n";
    getch();
    return 0;
}
 
int whatToDo()
{
    int choice;
    std::cout << "\n1 - ñîçäГ*ГІГј\n"
              << "2 - äîáГ*ГўГЁГІГј\n"
              << "3 - Г*Г*ГЇГҐГ·Г*ГІГ*ГІГј\n"
              << "4 - êîððåêòèðîâГ*ГІГј\n"
              << "5 - ГіГ¤Г*ëèòü\n"
              << "6 - âûõîä\nГ‚Г*Гё âûáîð: ";
    
    std::cin >> choice;
    return choice;
}
 
void funcList(int choice)
{
    if(choice == 1)
    {
        std::string temp;
        std::cout << "Ââåäèòå èìÿ ГґГ*éëГ* *.txt: ";
        std::cin >> str;
        if((str.size() > 4 && str.substr(str.size() - 4) != ".txt") ||
           (str.size() <= 4))
            str += ".txt";
        
        fileName = new char[str.size() + 1];
        strcpy(fileName, str.c_str());
        std::fstream file(fileName, std::ios::out);
        file.flush();
        std::cout << "\nГ”Г*éë áûë ГіГ±ГЇГҐГёГ*Г® ñîçäГ*Г*.\n";
        file.close();
    }
    if(choice == 2)
    {
        check(str);
        std::ofstream output(fileName, std::ios_base::app);
        std::string name, month, days_missed, missed_by_valid_reason;
        std::cin.ignore();
        std::cout << "1 - ÔÈÎ: ";                     getline(std::cin, name); 
        std::cout << "2 - ГЊГҐГ±ГїГ¶: ";                   std::cin >> month;
        std::cout << "3 - ÏðîïóùåГ*Г® ГўГ±ГҐГЈГ® Г¤Г*ГҐГ©: ";    std::cin >> days_missed;
        std::cout << "4 - ГЏГ® ГіГўГ*æèòåëüГ*îé ïðè÷èГ*ГҐ: "; std::cin >> missed_by_valid_reason;
        output << name << ' ' << month << ' ' << days_missed << ' ' << missed_by_valid_reason << std::endl;
        output.close();
    }
    if(choice == 3)
    {
        check(str);
        std::ifstream print_out(fileName);
        std::string line;
        while(getline(print_out, line)) { std::cout << line << std::endl; };
        print_out.close();
    }
    if(choice == 4)
    {
        check(str);
        std::ifstream file(fileName);
        std::string line, name, month, days_missed, missed_by_valid_reason;
        int n = 0, index, counter = 0;
        std::vector<std::string> data;
        while(getline(file, line)) { data.push_back(line); }
        file.close();
        for(int i = 0; i < data.size(); i++) std::cout << " " << i + 1 << " - " << data[i] << std::endl;
        while(n < 1 || n > data.size()) { std::cout << "Ââåäèòå Г*îìåð ñòðîêè: "; std::cin >> n; }
        std::cout << "   Âûáîð êîððåêòèðîâêè\n"
                  << "   1 - ÔÈÎ\n"
                  << "   2 - ГЊГҐГ±ГїГ¶\n"
                  << "   3 - ÏðîïóùåГ*Г® ГўГ±ГҐГЈГ® Г¤Г*ГҐГ©\n"
                  << "   4 - ГЏГ® ГіГўГ*æèòåëüГ*îé ïðè÷èГ*ГҐ\n"
                  << "   5 - Âñå ïîëÿ êîìïîГ*ГҐГ*òîâ\n   Г‚Г*Гё âûáîð: ";
        std::cin >> index;
        switch(index)
        {
            case 1:
                std::cin.ignore();
                std::cout << "     ÔÈÎ: "; getline(std::cin, name);
                break;
            case 2:
                std::cout << "     ГЊГҐГ±ГїГ¶: "; std::cin >> month;
                break;
            case 3:
                std::cout << "     ÏðîïóùåГ*Г® ГўГ±ГҐГЈГ® Г¤Г*ГҐГ©: "; std::cin >> days_missed;
                break;
            case 4:
                std::cout << "     ГЏГ® ГіГўГ*æèòåëüГ*îé ïðè÷èГ*ГҐ: "; std::cin >> missed_by_valid_reason;
                break;
            case 5:
                std::cin.ignore();
                std::cout << "     ÔÈÎ: ";                     getline(std::cin, name); 
                std::cout << "     ГЊГҐГ±ГїГ¶: ";                   std::cin >> month;
                std::cout << "     ÏðîïóùåГ*Г® ГўГ±ГҐГЈГ® Г¤Г*ГҐГ©: ";    std::cin >> days_missed;
                std::cout << "     ГЏГ® ГіГўГ*æèòåëüГ*îé ïðè÷èГ*ГҐ: "; std::cin >> missed_by_valid_reason;
                data[n - 1] =  name + ' ' + month + ' ' + days_missed + ' ' + missed_by_valid_reason;
                break;
        }
        
        if(index != 5)
        {
            line = data[n - 1];
            char* chStr = new char[line.size() - 1];
            strcpy(chStr, line.c_str());
            char* p = strtok(chStr, " ");
            std::vector<std::string> arr;
            
            while(p != NULL)
            {
                arr.push_back(p);
                p = strtok(NULL, " ");
            }
            delete [] chStr;
            
            data[n - 1].clear();
            if(index == 1) data[n - 1] += name   + ' ' + arr[3] + ' ' + arr[4] + ' ' + arr[5];
            if(index == 2) data[n - 1] += arr[0] + ' ' + arr[1] + ' ' + arr[2] + ' ' + month  + ' ' + arr[4]      + ' ' + arr[5];
            if(index == 3) data[n - 1] += arr[0] + ' ' + arr[1] + ' ' + arr[2] + ' ' + arr[3] + ' ' + days_missed + ' ' + arr[5];
            if(index == 4) data[n - 1] += arr[0] + ' ' + arr[1] + ' ' + arr[2] + ' ' + arr[3] + ' ' + arr[4]      + ' ' + missed_by_valid_reason;
        }
        
        std::ofstream output(fileName);
        for(int i = 0; i < data.size(); i++) output << data[i] << std::endl;
        output.close();
    }
    if(choice == 5)
    {
        check(str);
        std::ifstream file(fileName);
        std::string line;
        int n;
        std::vector<std::string> data;
        while(getline(file, line)) { data.push_back(line); }
        file.close();
        for(int i = 0; i < data.size(); i++) std::cout << " " << i + 1 << " - " << data[i] << std::endl;
        std::cout << "Ââåäèòå Г*îìåð ñòðîêè äëÿ ГіГ¤Г*ëåГ*ГЁГї: "; std::cin >> n;
        std::ofstream output(fileName);
        for(int i = 0; i < data.size(); i++)
            if(i != n - 1)
                output << data[i] << std::endl;
        output.close();
    }
}
 
void check(std::string str)
{
    if(str.empty())
    {
        std::cout << "\nГ”Г*éë ïîêГ* Г*ГҐ ñîçäГ*Г*\n";
        getch();
        exit(0);
    }
}
Ganz1846
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 38
22.06.2014, 16:52  [ТС]     Сколько всего пропущено уроков и сколько пропущено всего по уважительной причине #3
Ты крут!
Yandex
Объявления
22.06.2014, 16:52     Сколько всего пропущено уроков и сколько пропущено всего по уважительной причине
Ответ Создать тему
Опции темы

Текущее время: 10:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru