Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
1

нужно переделать код (из Файлы текстовые (FILE*) в Файлы текстовые (потоки))

20.12.2011, 21:13. Просмотров 1293. Ответов 5
Метки нет (Все метки)

вот задание для программы:
6. Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине подстроку, состоящую из одинаковых символов латинского алфавита. Заглавные и строчные буквы не различаются. Если таких строк несколько, найти первые 10. Результат вывести на консоль в форме, удобной для чтения.
и вот код этой программы с использованием Файлы текстовые (FILE*) :
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
#include <iostream>
#include <cstdio>
#include <cstring>
 
using namespace std;
 
const int MAXN = 1000;
 
int main() {
FILE* fin;
char *current_string = new char[MAXN + 1];
char* answers[10];
int max_len_in_file = 0, number_of_answers = 0;
 
if ((fin = fopen("input.txt", "r")) == NULL) {
cout << "File can't be opened" << endl;
return 0;
}
fgets(current_string, MAXN, fin);
if (feof(fin)) {
cout << "File is empty" << endl;
system("pause");
return 0;
}
 
// ????? ?????? ??????? ?? ?????, ???? ??? ?? ??????????
 
do {
// ??? ??? ? ??? ????????? ????? ???????
int length = strlen(current_string);
if (length == 0) {
fgets(current_string, MAXN, fin);
continue;
}
 
char* copy_of_string = new char[length + 1];
 
strcpy(copy_of_string, current_string);
// ???????? ? ??????? ????????
strlwr(copy_of_string);
 
int maxlen = 0;
for (int begin = 0; begin < length; ++begin) {
// ?? ????? - ?????????? ????? ??????
if (!isalpha(copy_of_string[begin])) continue;
 
for (int end = begin + 1; end < length; ++end)
if (copy_of_string[end] != copy_of_string[begin]) {
int newlen = end - begin;
if (newlen > maxlen) {
maxlen = newlen;
}
break;
}
}
 
if (maxlen > max_len_in_file) {
for (int i = 0; i < number_of_answers; ++i) delete [] answers[i];
 
number_of_answers = 1;
max_len_in_file = maxlen;
 
answers[0] = new char[length + 1];
strcpy(answers[0], current_string);
 
fgets(current_string, MAXN, fin);
delete [] copy_of_string;
continue;
}
 
if (maxlen == max_len_in_file && number_of_answers < 10) {
answers[number_of_answers] = new char[length + 1];
strcpy(answers[number_of_answers], current_string);
number_of_answers++;
}
 
delete [] copy_of_string;
fgets(current_string, MAXN, fin);
} while (!feof(fin));
delete [] current_string;
 
cout << "Max length = " << max_len_in_file << endl;
cout << "Number of answers = " << number_of_answers << endl;
 
for (int i = 0; i < number_of_answers; ++i) cout << answers[i];
system ("pause");
return 0;
}

помогите пожалуйста переделать код с использованием Файлы текстовые (потоки)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2011, 21:13
Ответы с готовыми решениями:

Нужно, чтобы VB загружал отдельные текстовые файлы или другие в код программы
Здравствуйте уважаемые товарищи программисты! Вообщем сабж.

Текстовые файлы и потоки ввода/вывода
Доброго времени суток. Уважаемый гуру, не могли бы вы мне помочь с решением данной программы....

Текстовые файлы, нужно вывести ответ в сам блокнот...
Создать в программе Блокнот текстовый файл. Написать программу, которая высчитывает количество слов...

по теме текстовые файлы.нужно перевести в паскаль,пожалуйста
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; using namespace std; int main() { ...

5
25 / 14 / 4
Регистрация: 11.11.2011
Сообщений: 94
20.12.2011, 21:20 2
C++
1
2
3
4
5
 ifstream in;
        in.open("input.txt");
        ofstream  out;
        out.open("output.txt"); 
        in>>x>>y;


так можно +
C++
1
#include <fstream>
0
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
20.12.2011, 21:21  [ТС] 3
спасибо, но мне нужно заменить все функции на потоковые
0
591 / 529 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
20.12.2011, 21:28 4
вы используете всего 1 функцию fgets
---> http://www.cplusplus.com/refer... m/getline/
0
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
20.12.2011, 21:45  [ТС] 5
то есть только одну функцию я могу заменить в своей программе?
0
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
26.12.2011, 21:40  [ТС] 6
какие еще функции возможно заменить?

Добавлено через 5 часов 1 минуту
подскажите пожалуйста
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2011, 21:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Почему не отправляются файлы docx, txt и прочие текстовые файлы?
Архивы и картинки проверял- отправляются на сервер, а текстовые файлы- нет. Что нужно, чтоб они...

Текстовые файлы. Создать новый файл, объединив исходные файлы
даны текстовые файлы Name1 и Name2 .создать Name3 файл объединив Name1 и Name2 текстовые файлы

Текстовые файлы. Полный код большой программы.одна маленькая ошибка
Здравствуйте. Есть программа, решающие такие две задачи. 1. Указать относительную...

Текстовые файлы
В исходном файле float–числа в формате с фиксированной точкой (5 знаков после запятой). Создать из...

Текстовые файлы
глупый вопрос по txt файлам .. есть такое понятие как массив текстовых файлов? :D просто возник...

Текстовые файлы
Даны 2 текстовых файла. Один из них надо встать с другой, чередуя абзацы.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.