Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2008, 14:28   #1
dymych
Пользователь
 
Регистрация: 21.11.2008
Сообщений: 10
Восклицание посчитать количество предложений и вывести случайное

Есть задача:
Напишите программу, которая открывает текстовый файл-список, содержащий имена файлов по одному на строке. Программа анализирует содержимое этих файлов и убирает лишние пробелы между словами
#include <stdio.h>
# include <iostream>
# include <fstream>
using namespace std;

int main()
{
int k=0; //вводим переменную целого типа и присваиваем ей значение 0
ifstream list("list.txt"); //открываем файл list.txt
char buf[256];
while (!list.eof()) //пока файл list.txt не прочитан до конца
//(файл читаем построчно) выполняем действия
{ list.getline(buf,sizeof(buf));
if(buf[strlen(buf)-1]=='\n') //если в конце стоки последний символ \n…
buf[strlen(buf)-1]='\0'; //меняем его на \0
ifstream file(buf); //открываем файлы с именами указанными
//в файле list.txt (каждая строка имя файла)
char letter[256];
while (!file.eof())//пока файл не прочитан до конца
//(файл читаем посимвольно) выполняем действия
{
file.getline(letter,sizeof(letter)) ;
int i = 0;
int neword = 1;
//проходим все символы
while (letter[i])
{
//пробел - разделитель слов, пока пробел не выводим
if (letter[i] == ' ')
neword = 1;
//знак препинания - разделитель, выводим его
else
if ((letter[i] == '.') || (letter[i] == ',') || (letter[i] == '!') ||
(letter[i] == '?') || (letter[i] == ':') || (letter[i] == ';'))
{
printf("%c", letter[i]);
neword = 1;
}
//новое слово, и это не первое слово –
//выводим перед ним пробел
else
{
if (neword && i)
printf(" ");
printf("%c", letter[i]);
neword = 0;
}
i ++;
}
}
file.close(); //закрываем файл

}
list.close(); //закрываем файл list.txt

return 0;
}
помогите доделать нужно посчитать количество предложений и вывести случайное,количество я думаю посчитать по точкам в конце каждого предложения,а вот на счёт вывода случайного не знаю,может завести динамический массив в него записать адрес начала каждого предложения в файле. Потом брать рандомное число от 1 до N где N-кол-во предложений,затем из массива адрес выпавшего предложения и читай его из файла.
Вот только не знаю как реализовать не поможите?
dymych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посчитать количество записей в БД ACCESS Dux БД в Delphi 22 31.03.2015 20:36
как посчитать количество файлов в каталоге? помогите плиз older Общие вопросы Delphi 5 23.05.2008 14:22
Паскаль. найти все числа кратные трем и посчитать их количество __k1ll3r__ Помощь студентам 6 02.04.2008 16:37
Фрактал. Посчитать количество треугольников. Marsik Помощь студентам 2 22.11.2007 08:19
подсчитать количество символов слов и предложений nev Помощь студентам 4 09.06.2007 21:22