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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2008, 21:21   #1
Илья500
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 13
По умолчанию чтение из файла

есть задача: задана фраза от 2 до 30 слов, в каждо слове от 2 до 10 латинских букв, между словами не менее одного пробела, за последним словом точка. надо напечатать все слова отличных от последнего и чтобы буквы в каждом слове не повторялись.
вопрос вот в чем: как считать с файла "INPUT.TXT" эти слова отдельно. у меня сразу все считывает все слова как одно без пробелов.
Илья500 вне форума Ответить с цитированием
Старый 27.11.2008, 22:51   #2
ams007
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 35
По умолчанию

Ванга в отпуске. Код или его кусок в студию!
ams007 вне форума Ответить с цитированием
Старый 27.11.2008, 23:19   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

считывай посивольно, пока не встретится пробел (' ')
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 28.11.2008, 00:48   #4
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Blade и что, пока не встретится пробел? а если между словами 100 пробелов? а если есть символы перевода каретки или новой строки?

тс. читать надо так: считываешь в цикле. если это НЕ пробел, НЕ \r и НЕ \n - значит это начало нового слова. выходишь из этого цикла, входишь в новый. считываешь опять до тех пор, пока не встретится пробел, либо \r или \n. это будет конец слова. ну плюс можно проверять символ на табуляцию. после прохода первого цикла, ты будешь знать, что идет слово, и считанные байты кидай в буфер. когда закончится второй цикл, добавь к буферу символ конца строки.
vvviperrr вне форума Ответить с цитированием
Старый 28.11.2008, 03:01   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от vvviperrr Посмотреть сообщение
2Blade и что, пока не встретится пробел? а если между словами 100 пробелов? а если есть символы перевода каретки или новой строки?

тс. читать надо так: считываешь в цикле. если это НЕ пробел, НЕ \r и НЕ \n - значит это начало нового слова. выходишь из этого цикла, входишь в новый. считываешь опять до тех пор, пока не встретится пробел, либо \r или \n. это будет конец слова. ну плюс можно проверять символ на табуляцию. после прохода первого цикла, ты будешь знать, что идет слово, и считанные байты кидай в буфер. когда закончится второй цикл, добавь к буферу символ конца строки.
Если между словами 100 пробелов - то когда встретится 1 пробел - кончится слово, по-моему очевидно.

"считываешь опять до тех пор, пока не встретится пробел"
ты сам это написал...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 28.11.2008, 18:37   #6
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Blade ну с твоего камента я понял так, что если встретился пробел, то это конец слова, а следующим символ это уже начало следующего слова извини, если недопонял)
vvviperrr вне форума Ответить с цитированием
Старый 28.11.2008, 22:23   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Нет, я конечно не это имел ввиду =))
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 29.11.2008, 13:48   #8
Илья500
Пользователь
 
Регистрация: 25.11.2008
Сообщений: 13
По умолчанию

Код:
i=0;
fin.unsetf(ios::skipws);
while(!fin.eof()) 
{
fin>>s[i];
i++
}
вот этот код вроде бы подошёл. теперь считывает с пробелами. только что-то саму задачу решить не могу. помогите! хоть алгоритмом хоть кодом



Модератор: Не забываем про тэг CODE

Последний раз редактировалось MaTBeu; 29.11.2008 в 18:37.
Илья500 вне форума Ответить с цитированием
Старый 29.11.2008, 15:28   #9
Psionic
Пользователь
 
Регистрация: 29.11.2008
Сообщений: 23
Подмигивание

Есть чудная библиотека <fstream>, нодключай ее и юзай команды которые сходны со типу cin, cout.
вот типа такого (ну это просто предложение на экран выводить должно)
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 string slovo;
void main()
{ 
 ifstream infile("file.txt");
	if (!infile ) cerr<<"no file"<<endl;
else
{
   do
   {
    infile>>slovo;
cout<<slovo<<'' ";
    }
while(slovo!="последние слово") //ну тут можеш и к точке своей привязать важно вовремя оборвать цикл 
}
}
Модератор: Тэг [CODE=cpp] не работает.
Зделать как надо, и зделать так чтобы получить нужный результат - это разные вещи

Последний раз редактировалось Psionic; 29.11.2008 в 18:51.
Psionic вне форума Ответить с цитированием
Старый 29.11.2008, 18:18   #10
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

А не проще ли использовать функцию strtok()???? Которая как раз и занимается тем, что из строки достает слова?!
StarWorm вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из файла Arkuz Общие вопросы Delphi 14 08.10.2008 19:52
Чтение файла [Smarik] Помощь студентам 8 28.04.2008 22:15
Чтение из файла... Bill Gates Общие вопросы Delphi 3 22.03.2008 22:13
Чтение из файла Need_Help Паскаль, Turbo Pascal, PascalABC.NET 5 19.05.2007 05:37
чтение файла vicvtor Общие вопросы Delphi 4 27.11.2006 12:26