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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
#1

Выполнить обработку текста - C++

12.06.2011, 21:47. Просмотров 793. Ответов 17
Метки нет (Все метки)

Друзья, помогите пожалуйста:
Выполнить обработку текста из внешнего текстового файла, созданного в редакторе. Результаты обработки поместить во внешний файл.Определить количество слов в каждой строке, сжать каждую строку, удалив все лишние пробелы.
Вот я сделал, только эта программа при записи в другой файл, удаляет первые символы строк.
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
#include "StdAfx.h"
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <iostream>
#include <string>
#include <fstream>
#include <conio.h>
using namespace std;
int a,b,c;
string str1, str2;
ifstream file("C:/1.txt");
ofstream fileout("C:/2.txt");
int i;
int main()
{
    setlocale (LC_CTYPE,"rus");
    b=1;
    while(!file.eof())
    { 
        str2="";
        str1="";
        getline(file, str1); 
        for (i=1; i<str1.length(); i++)
        {
            if(str1[i]!=' ') str2=str2+str1[i]; 
            if(((str1[i]==' ')&&(str1[i-1])!=' ')) str2=str2+' '; 
            }
    a=1;
     for (i=1; i<str2.length(); i++)
 
    if((str2[i]!=' ')&&(str2[i-1]==' ')) a++;
 
     if (str2.length()==0) a=0;
    cout<<"В "<<b<<"  строке "<<a<<"  слов"<<endl;
    b++;
    fileout<<str2<<endl;
    };
getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2011, 21:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выполнить обработку текста (C++):

Создать файл («БД») и выполнить его обработку - C++
Формат данных: Поиск в базе данных вида «Фамилия, имя, группа, дата рождения, средний рейтинг» всех студентов, чей средний рейтинг в списке...

Предусмотреть в программе просмотр бинарного файла и выполнить его обработку - C++
Имеется информация о телевизорах на складе: наименование, фирма изготовитель, стоимость, размер экрана, количество на складе. Для описания...

Задача на обработку текста (sos) - C++
Задана фраза - последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 букв; между соседними словами - не менее...

Выполнить транслитерирование текста - C++
Ввести с клавиатуры строку текста на русском языке. Выполнить транс-литерирование и вывести результат на экран (Транс-литерация - замена...

Выполнить шифрование и дешифрование текста, выбрав любой способ шифрования - C++
Собственно надо - &quot;Выполнить шифрование и дешифрование текста, выбрав любой способ шифрования&quot;. Я написала какое-то подобие Цезаря. Но...

Выполнить статистику текста: подсчитать количество букв, знаков препинания, слов, предложений, абзацев. - C++
1. Дан текстовый файл. Выполнить статистику текста: подсчитать количество букв, знаков препинания, слов, предложений, абзацев. ...

17
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
12.06.2011, 21:53 #2
Мне кажется, что это из-за того, что i=1
C++
1
for (i=1; i<str2.length(); i++)
, потому и нулевой символ не записывается в строку 2.
1
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
12.06.2011, 21:54  [ТС] #3
Это понятно) но при исправления получается что выходит за приделы строки. Помогите пожалуйста это исправить.
0
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
12.06.2011, 22:01 #4
Мне кажется нулевой символ обеих строк не участвует. Я думаю надо использовать идентификаторы [i-1] вместо [i].
1
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
12.06.2011, 22:06  [ТС] #5
АААААА.... Пожалуйста, помогите... Очень нужно

Добавлено через 4 минуты
Цитата Сообщение от Fghjkl Посмотреть сообщение
Мне кажется нулевой символ обеих строк не участвует. Я думаю надо использовать идентификаторы [i-1] вместо [i].
Тогда это нарушит работу алгоритма.
0
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
12.06.2011, 22:14 #6
C
1
if(str1[i-1]!=' ') str2=str2+str1[i-1];
Я вот тут так сделал и вроде все работает. На одной строке точно.
C
1
for (i=1; i<=str1.length(); i++)
- и здесь границы включил.
1
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
12.06.2011, 22:16  [ТС] #7
Цитата Сообщение от Fghjkl Посмотреть сообщение
C
1
if(str1[i-1]!=' ') str2=str2+str1[i-1];
Я вот тут так сделал и вроде все работает. На одной строке точно.
C
1
for (i=1; i<=str1.length(); i++)
- и здесь границы включил.
но тогда если строка имеет 0-ую длину то неработает
0
Fghjkl
6 / 6 / 1
Регистрация: 04.06.2011
Сообщений: 10
12.06.2011, 22:18 #8
Ну тогда лучше условие проверки длины строки вставить?
1
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
12.06.2011, 23:09  [ТС] #9
Не получается, удаляет последний символ(((((
ПОМОГИТЕ!!!!!!!!!
0
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
12.06.2011, 23:12 #10
может так(не смотрел ваш код)
C++
1
for (i=0; i<=str1.length()-1; i++)
0
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
12.06.2011, 23:26  [ТС] #11
да ладно... закрыли тему...
0
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
12.06.2011, 23:29 #12
проблема то решена?
1
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
12.06.2011, 23:36  [ТС] #13
Нет.
Вы откомпилируйте... и увидите, что программа не будет корректно работать:
проблемы которые возникают:
1.удаляет первый символ строки
2.удаляет последний символ строки
3. выход за приделы строки
4.не удаляет все пробелы(оставляет в конце строки)
5.проблемы с пустыми строчками
0
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
12.06.2011, 23:42 #14
лан ща попробую в вижал студио че нить помутить

Добавлено через 48 секунд
Цитата Сообщение от sannee Посмотреть сообщение
"StdAfx.h"
что это за библиотека

Добавлено через 43 секунды
и можно пример содержания 1.txt
1
sannee
Просто хороший человек
366 / 159 / 12
Регистрация: 26.04.2011
Сообщений: 421
Завершенные тесты: 4
12.06.2011, 23:48  [ТС] #15
Это библиотека по моему для предварительного компилирования заголовков
не обязательна

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
fdhkljhhlkdjhflkdsjlkfjdsfsdf sdkfhdklsfh kldsfhlkdshflkdshflk fdlkhlkfshflkds
     
fdhkljhhlkdjhflkdsjlkfjdsfsdf sdkfhdklsfh kldsfhlkdshflkdshflk fdlkhlkfshflkds
       
fdhkljhhlkdjhflkdsjlkfjdsfsdf sdkfhdklsfh kldsfhlkdshflkdshflk fdlkhlkfshflkds
    fdgf           fdgf 
fdhkljhhlkdjhflkdsjlkfjdsfsdf sdkfhdklsfh kldsfhlkdshflkdshflk fdlkhlkfshflkds
 
fdhkljhhlkdjhflkdsjlkfjdsfsdf sdkfhdklsfh kldsfhlkdshflkdshflk fdlkhlkfshflkds
0
12.06.2011, 23:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2011, 23:48
Привет! Вот еще темы с ответами:

Задача на обработку - C++
В каждой компоненте файла АБИТУРИЕНТ содержится: − фамилия абитуриента; − номер экзаменационного листа; − оценки (&quot;З&quot;, &quot;4&quot; или...

Задача на обработку строки - C++
Народ, помогите решить задачу! Не знаю, как решать! Определить, равно ли количество символов в слове значению числа, стоящего перед...

Прграммы на обработку матриц - C++
Составить программу, которая все элементы линейной таблицы В, состоящей из 20 целых элементов, равные по значению минимальному элементу,...

Задача на обработку строк - C++
Дана строка символов. Преобразовать строку, удалив из нее все символы, не являющиеся буквами или цифрами.


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

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

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