Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Небольшая но мучительная проблема в С++

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Небольшая но мучительная проблема в С++
Имя
Сообщение << Старые топики   Новые топики >>
Небольшая но мучительная проблема в С++ - 2008-06-12 22:45:27.830000   
BeoWolf11

Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
Вот я недавно такую прогу смастерил:
quote:

#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string.h&gt;
using namespace std;
int main()
{
&nbsp;&nbsp;&nbsp; string filename;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Give the way to the file\n";
&nbsp;&nbsp;&nbsp; cout &lt;&lt; "For ex:&nbsp;&nbsp; C:/data.txt&nbsp;&nbsp; sau&nbsp;&nbsp;&nbsp; C:/data.doc\n";
&nbsp;&nbsp;&nbsp; getline (cin, filename);
&nbsp;&nbsp;&nbsp; ifstream fin( filename.c_str() );&nbsp;
&nbsp;&nbsp;&nbsp; if( !fin )
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Error opening " &lt;&lt; filename &lt;&lt; endl;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system("PAUSE");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit (-1);
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp; ifstream fin (filename.c_str());
&nbsp;&nbsp;&nbsp; string s, str;
&nbsp;&nbsp;&nbsp; int len, loc;
&nbsp;&nbsp;&nbsp; cout &lt;&lt; "What word do you want to delete? " &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; getline (cin, str);
&nbsp;&nbsp;&nbsp; len = str.length();
&nbsp;&nbsp;&nbsp; loc = s.find(str);
&nbsp;&nbsp;&nbsp; while (getline(fin,s))
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp; while(!fin.eof())
&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loc = s.find(str);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (loc == -1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "The word " &lt;&lt; str &lt;&lt; " couldnt be found in the text!" &lt;&lt; endl;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system("PAUSE");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit (-1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "WAIT…" &lt;&lt; endl;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (loc != -1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loc = s.find (str);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s.erase (loc, len);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fstream outputFile( "words.txt", fstream::out );
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outputFile &lt;&lt; s &lt;&lt; endl;
&nbsp;&nbsp;&nbsp; }}}
&nbsp;&nbsp;&nbsp; fin.close();
&nbsp;&nbsp;&nbsp; system("PAUSE");
&nbsp;&nbsp;&nbsp; return 0;
}

 
Лень объяснять что она делает, кто посмотрет по внимательнее поймет…
Но есть одна проблема в функции find()
В этой проги она ищет находит и удаляет буквы только из первои строки файла .txt
В чем же ошибка?
Как зделать так чтоб она искала и находила буквы из всего файла, из всех строк…


Post #: 1
RE: Небольшая но мучительная проблема в С++ - 2008-06-12 23:15:50.640000   
NightmareZz

Сообщений: 1087
Оценки: 0
Присоединился: 2006-10-15 11:16:16.833333
quote:

ORIGINAL: BeoWolf11
Лень объяснять что она делает, кто посмотрет по внимательнее поймет…


Лень смотреть….
Post #: 2
RE: Небольшая но мучительная проблема в С++ - 2008-06-12 23:23:45.013333   
BeoWolf11

Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
quote:

Лень смотреть….

 
Короч, сначала даеш путь к файлу .txt и слово (или букву) которую ты хочешь удалить из всего текста, и потом прога сохраняет готовый фаил под именем words.txt
Но вот функция find()  работает не верно и находит буквы только в первой строке файла.. Как зделать так чтоб она искала и находила во всем тексте?
Post #: 3
RE: Небольшая но мучительная проблема в С++ - 2008-06-12 23:53:37.930000   
vvviperrr

Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
полностью смотреть не хочу, влом, но вот это
  while (getline(fin,s))
   {
   while(!fin.eof())
   {  

ты сначала читаешь, потом проверяешь на конец файла? зачем. проверяй на конец, и если не конец - считывай строку fget ом например
Post #: 4
RE: Небольшая но мучительная проблема в С++ - 2008-06-12 23:54:59.230000   
provider

Сообщений: 100
Оценки: 0
Присоединился: 2008-04-12 15:31:33.813333

Встроенная функция Find использует в качестве численного алгоритма один из градиентных методов ,. Этот факт налагает некоторые ограничения на уравнения системы, которые должны быть достаточно гладкими функциями своих аргументов.
вместо оператора символьного вывода после функции Find следует использовать оператор численного вывода (знак равенства);
  перед вычислительным блоком Given/Find должны быть заданы начальные значения (guess value) для всех неизвестных, т. е. всем переменным x1, … ,хM, относительно которых решается уравнение, следует предварительно присвоить некоторые численные значения, с которых и будет начинаться поиск корня. Таким образом, присвоение начального значения требует априорной информации о примерном местонахождении корня и связано с проблемой локализации корней

ne функция find

#include <iostream>

main()
{
system ("start words.txt ");
}


Post #: 5
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 00:10:32.696666   
BeoWolf11

Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
quote:

Встроенная функция Find использует в качестве численного алгоритма один из градиентных методов ,. Этот факт налагает некоторые ограничения на уравнения системы, которые должны быть достаточно гладкими функциями своих аргументов.
вместо оператора символьного вывода после функции Find следует использовать оператор численного вывода (знак равенства);
перед вычислительным блоком Given/Find должны быть заданы начальные значения (guess value) для всех неизвестных, т. е. всем переменным x1, … ,хM, относительно которых решается уравнение, следует предварительно присвоить некоторые численные значения, с которых и будет начинаться поиск корня. Таким образом, присвоение начального значения требует априорной информации о примерном местонахождении корня и связано с проблемой локализации корней

ne функция find

#include &lt;iostream&gt;

main()
{
system ("start words.txt ");
}

 
Ниче не понел…. Зачем воопще использовать system ("start words.txt "); ?
Post #: 6
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 00:52:30.340000   
provider

Сообщений: 100
Оценки: 0
Присоединился: 2008-04-12 15:31:33.813333
Тонкости…
Очень глупый вопрос для интервью, извините но это так
В этом желании разгадать ребусы
чтобы открыть file и не мучить себя… досвидания
Post #: 7
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 01:22:22.270000   
BeoWolf11

Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
quote:

Тонкости…
Очень глупый вопрос для интервью, извините но это так
В этом желании разгадать ребусы
чтобы открыть file и не мучить себя… досвидания

 
Я знаю что функция system ("start words.txt "); открывает фаил!
Но вопрос был другим: Мне нужно чтоб   find()   работал нормально!
Post #: 8
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 07:23:45.133333   
оdd

Сообщений: 10
Оценки: 0
Присоединился: 2008-05-22 07:56:07.673333
По-моему нужно просто поменять местами
 
while (getline(fin,s))
и
while(!fin.eof())

а вообще советую переползать на C# там всё намного проще делается 
Post #: 9
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 10:05:40.213333   
BeoWolf11

Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
quote:

По-моему нужно просто поменять местами

while (getline(fin,s))
и
while(!fin.eof())


Не, все та же история………
А С# я никогда не юзал, и не думаю что чтото получится….
Post #: 10
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 19:18:50.926666   
BeoWolf11

Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
Так поможет кто нормально решить проблему?
Post #: 11
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 19:51:49.646666   
miros

Сообщений: 1
Оценки: 0
Присоединился: 2008-06-13 19:06:19.666666
лень код смотреть, да и вообще лень что нибудь делать.

/me ушел кодить )
Post #: 12
RE: Небольшая но мучительная проблема в С++ - 2008-06-14 17:33:57.473333   
provider

Сообщений: 100
Оценки: 0
Присоединился: 2008-04-12 15:31:33.813333
полностью смотреть не хочу,

#include <iostream>
#include <fstream>
using namespace std;

int main()
{

fstream fin;
char fileName[21];
char line[500];
char string;

cout << "Enter the name of file you wish to open: ";
cin.getline(fileName, 21);
if(!fin)
{
cout << fileName << " could not be opened. \n";
return 0;
}
int lines = 0;
cout << "Enter your search string: ";
cin >> string;
if(string > 65 && string < 122)
{
fin.seekg(0,ios::beg);
cout << string << endl;
lines ++;
}

fin.close();
return 0;
}




#include <cstdlib>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>

int
main()
{
std::cout << "Enter filename: ";

std::string filename;

cin >> filename;

std::ifstream file(filename.c_str());

if(!file)
{
std::cerr << "Error opening file " << filename << std::endl;

return EXIT_FAILURE;
}

std::string line;
std::vector<std::string> contents_of_file;

while(getline(file, line))
{
contents_of_file.push_back(line);

std::cout << "Read line " << line << std::endl;
}

std::cout << "Read " << contents_of_file.size() << " lines from the file." << std::endl;
std::cout << "Any particular line is accessed using contents_of_file[line_number-1]."
<< std::endl;

}



cin.get() must be written before return 0; like so:

 

 

Code
cout << "\n***End of file contents.***\n";

fin.close();

cin.get();

return 0;
Post #: 13
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Небольшая но мучительная проблема в С++







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.