Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Подтолкните в правильном направлении..!


Автор: PerfectEnemy 1.5.2008, 13:59
Я написал программу, но она не работает так, как мне нужно! Программа должна выводить на экран словаиз файла, состоящие из 10 букв. Вот то, что я "намалевал", но оно выводит только результат работы первого оператора cout. Помогите дополнить или исправить программу. Спасибо всем, кто откликнется!

Код

//---------------------------------------------------------------------------

#pragma hdrstop
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include "windows.h"
#include <string.h>
//---------------------------------------------------------------------------

#pragma argsused

char* rus(char* str){
CharToOem(str, str);
return str;
}
int main(int argc, char* argv[])
{
cout<<rus("\t Ищем слова из десяти букв\n");
const int len = 10;
char string[255], word[len];
ifstream file("text.txt", ios::in | ios::nocreate);
while (!file.eof()){
            while(file.getline(string, sizeof(string))){
              if (strstr(string, word)){
                cout<<word<<endl;
                  return 0;
                  }
         }
}

getch();
    return 0;
}
//---------------------------------------------------------------------------

 ! 
archimed7592
Не забываем пользоваться кнопкой "Код" или тэгами [code=xxx][/code]

Автор: maxim1000 1.5.2008, 14:14
Цитата(PerfectEnemy @  1.5.2008,  13:59 Найти цитируемый пост)
              if (strstr(string, word)){
                cout<<word<<endl;
                  return 0;

а какой смысл в рамках описанной задачи имеют эти строки?

Автор: PerfectEnemy 1.5.2008, 14:30
if (strstr(string, word)){
                cout<<word<<endl;
                  return 0;
                  }
Я прочитал, что strstr() выполняет поиск подстроки, в данном случае слова word, в строке string.C помощью этих строк я и пытался найти слово word в строке string заданного файла. Но, увы, ничего у меня не получается. Если не трудно подскажите, что и как.

Автор: Graf_h 1.5.2008, 14:50
Код

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

........................

std::ifstream NameFile(fileName);
char line[255];
std::string str;
   if (!NameFile.fail()){
         while (!NameFile.eof()){
          NameFile.getline(line,255);
                                    str=line 
                                    std::istringstream strLine(str);
                                    std::string new_str;
                                          while(strLine>>new_str){
                                              if (new_str.length()==10){
                                                       std::cout<<new_str<<std::endl;
                                                     }
                                            }
                            }
   }


Примерно так  smile 

Автор: maxim1000 1.5.2008, 21:04
Цитата(PerfectEnemy @  1.5.2008,  14:30 Найти цитируемый пост)
C помощью этих строк я и пытался найти слово word в строке string заданного файла.

strstr используется для поиска конкретного слова в строке
в задаче нам подходят любые, имеет значение только длина
задачи подобного рода можно решать так:
1. делаем какой-то пример (не очень большой)
2. решаем здачу на нём вручную
3. записываем тот же алгоритм, только в C++
т.е. функции всякие - это потом
для начала стоит сформулировать алгоритм в словах

Автор: PerfectEnemy 1.5.2008, 22:48
Алгоритм для меня понятен, я должен открыть файл для чтения
Код

ifstream file("text.txt", ios::in | ios::nocreate);

затем построчно считывать текст из файла
Код

 while(file.getline(string, sizeof(string))){
}

далее я должен просматривая каждую строку искать в ней слово заданной длины, но не получается у меня это сделать, по всей видимости из-за того, что функция, которая может мне помочь это сделать ускользнула от моего внимания или не попадалась мне вообще. 

Автор: Graf_h 2.5.2008, 09:35
Цитата(PerfectEnemy @  1.5.2008,  22:48 Найти цитируемый пост)
далее я должен просматривая каждую строку искать в ней слово заданной длины, но не получается у меня это сделать, по всей видимости из-за того, что функция, которая может мне помочь это сделать ускользнула от моего внимания или не попадалась мне вообще. 

Смотрите мой пример

Автор: maxim1000 2.5.2008, 10:06
Цитата(PerfectEnemy @  1.5.2008,  22:48 Найти цитируемый пост)
затем построчно считывать текст из файла

а зачем построчно?
в условии задачи ничего про строки нету smile
так что единственная причина, по которой надо было бы читать строки - способ реализации
но и там (т.е. в C++) есть возможность просто читать слова (т.е. группы непробельных символов между пробельными):
Код

ifstream file("text.txt",ios::nocreate);//ios::in здесь не нужен, т.к. ifstream уже предназначен только для чтения
std::string word;
file>>word;//здесь будет первое прочитанное слово
file>>word;//здесь - следующее
//и т.д.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)