Небольшая но мучительная проблема в С++
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Небольшая но мучительная проблема в С++ - 2008-06-12 22:45:27.830000
|
|
|
BeoWolf11
Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
|
Вот я недавно такую прогу смастерил: quote:
#include <iostream> #include <fstream> #include <string.h> using namespace std; int main() { string filename; cout << "Give the way to the file\n"; cout << "For ex: C:/data.txt sau C:/data.doc\n"; getline (cin, filename); ifstream fin( filename.c_str() ); if( !fin ) { cout << "Error opening " << filename << endl; system("PAUSE"); exit (-1); } else ifstream fin (filename.c_str()); string s, str; int len, loc; cout << "What word do you want to delete? " << endl; getline (cin, str); len = str.length(); loc = s.find(str); while (getline(fin,s)) { while(!fin.eof()) { loc = s.find(str); if (loc == -1) { cout << "The word " << str << " couldnt be found in the text!" << endl; system("PAUSE"); exit (-1); } else cout << "WAIT…" << endl; while (loc != -1) { loc = s.find (str); s.erase (loc, len); fstream outputFile( "words.txt", fstream::out ); outputFile << s << endl; }}} fin.close(); system("PAUSE"); return 0; } Лень объяснять что она делает, кто посмотрет по внимательнее поймет… Но есть одна проблема в функции find() В этой проги она ищет находит и удаляет буквы только из первои строки файла .txt В чем же ошибка? Как зделать так чтоб она искала и находила буквы из всего файла, из всех строк…
|
|
|
RE: Небольшая но мучительная проблема в С++ - 2008-06-12 23:15:50.640000
|
|
|
NightmareZz
Сообщений: 1087
Оценки: 0
Присоединился: 2006-10-15 11:16:16.833333
|
quote:
ORIGINAL: BeoWolf11 Лень объяснять что она делает, кто посмотрет по внимательнее поймет… Лень смотреть….
|
|
|
RE: Небольшая но мучительная проблема в С++ - 2008-06-12 23:23:45.013333
|
|
|
BeoWolf11
Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
|
quote:
Лень смотреть…. Короч, сначала даеш путь к файлу .txt и слово (или букву) которую ты хочешь удалить из всего текста, и потом прога сохраняет готовый фаил под именем words.txt Но вот функция find() работает не верно и находит буквы только в первой строке файла.. Как зделать так чтоб она искала и находила во всем тексте?
|
|
|
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 ом например
|
|
|
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 "); }
|
|
|
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 <iostream> main() { system ("start words.txt "); } Ниче не понел…. Зачем воопще использовать system ("start words.txt "); ?
|
|
|
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 00:52:30.340000
|
|
|
provider
Сообщений: 100
Оценки: 0
Присоединился: 2008-04-12 15:31:33.813333
|
Тонкости… Очень глупый вопрос для интервью, извините но это так В этом желании разгадать ребусы чтобы открыть file и не мучить себя… досвидания
|
|
|
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() работал нормально!
|
|
|
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# там всё намного проще делается
|
|
|
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()) Не, все та же история……… А С# я никогда не юзал, и не думаю что чтото получится….
|
|
|
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 19:18:50.926666
|
|
|
BeoWolf11
Сообщений: 76
Оценки: 0
Присоединился: 2008-01-31 21:09:43.920000
|
Так поможет кто нормально решить проблему?
|
|
|
RE: Небольшая но мучительная проблема в С++ - 2008-06-13 19:51:49.646666
|
|
|
miros
Сообщений: 1
Оценки: 0
Присоединился: 2008-06-13 19:06:19.666666
|
лень код смотреть, да и вообще лень что нибудь делать. /me ушел кодить )
|
|
|
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;
|
|
|
|
|