![]() |
|
Модераторы: bsa |
![]()
|
|
| Garcian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
Здравствуйте уважаемые программисты!
Дана задача: определить в заданной строке координаты подстроки, содержашей наибольшее число пробелов. Примечание: нельзя обращаться к эелементам массива через указатели (исключение *t = &D[0]). Вот мой код:
На лекциях все понятно объяснили, а значение функий я нашел в поисковике. Несмотря на все это программа не работает! Переменой а все время присваивается 0. Хотел бы понять, что делаю не так. В общем чет совсем запутался с выводом координат Это сообщение отредактировал(а) Garcian - 23.3.2009, 00:47 --------------------
Неродивый студент |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
для начала обнулите буффер для чтения char D[..] = {0}
имхо, тут логичнее использовать функцию strchr ()
перечитайте еще раз что делает функция и подправьте код. еще добавьте строку вывода на экран буффера, после чтения в него с файла и опубликуйте, что получилось в результате (исправленный код + прочиитанная строка с файла). Это сообщение отредактировал(а) mes - 23.3.2009, 10:47 |
||||
|
|||||
| AnLun |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 3.1.2008 Репутация: нет Всего: нет |
Не совсем по теме, но...
это логичней писать так:
Это сообщение отредактировал(а) AnLun - 23.3.2009, 11:19 |
||||
|
|||||
| Garcian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
В общем ошибка еще в первой половине программы...
Использую strchr #include <iostream.h> #include <fstream.h> #include <string.h> fstream f, P;
Уже здесь выдает не пойми что Это сообщение отредактировал(а) Garcian - 23.3.2009, 20:09 --------------------
Неродивый студент |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
хватит проверять телепатические способности форумчан . Вы видете и понять не можете, а нам не показываете , а ответа требуете может у Вас файла не находит, или он пустой.
где ? Это сообщение отредактировал(а) mes - 23.3.2009, 20:16 |
|||
|
||||
| Garcian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
Простите!
Например пишу во входном файле одни пробелы - создает файл с кучей пробелов. Если поставить вначале пробелы, а потом буквы - выдает большое кол-во нулей) Если начать не с пробела, то вообще пишет, что их нет.
--------------------
Неродивый студент |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
после 7й строчки (for (int i=0; i < 80; i++) { f >> D[i]; })
поставьте
если вывод на экране не будет соответсвовать файлу, то значит читаете с файла неправильно. Вы не проверяете файл на конец, а это значит, что если в файле меньше запрашиваемых вами 80 символов, то в результативном буффере будет содержать мусор. Это сообщение отредактировал(а) mes - 23.3.2009, 20:34 |
|||
|
||||
| Garcian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
mes, вы правы, ошибка при чтении... ничего не понимаю, вроде даже проверку на конец строки сделал...
пусто =\ --------------------
Неродивый студент |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Garcian, вы сами поняли, что написали внутри цикла?
Инкрементить i до тех пор, пока значение элемента по адресу t+i не равно '\0' ИЛИ TRUE (т.к. '\n' интерпретируется не нулём, следовательно 1). И получаем бесконечный цикл. Дальше вы выводите cout уже ВНЕ цикла, а не во время каждой итерации. Сомневаюсь, что так было задумано. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
А доступ к элементу массива по индексу считается через указатель?
|
|||
|
||||
| Garcian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
ай ужс, ввсел вывод внутри цикла, компьютер зазвенел громко) Да я по ходу совсем запутался. Как проверить файл на конец и как прочитать строку, что не пробую все не так. Anikmar, доо, но можно обращаться только к первому и последнему элементам. --------------------
Неродивый студент |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Ну Вы бы хоть поискали, в соседние темы заглянули, или ждете пока все разжуют вот к примеру совсем недалеко от вашей тема называется "Замена пробелов String.h " - http://forum.vingrad.ru/forum/topic-251394.html там есть и примеры работы с пробелами и чтение с файла, к примеру в этом посту http://forum.vingrad.ru/index.php?showtopi...t&p=1819041 нужное Вам находится в строках 16-17 (ну вот и искать теперь не надо также прочтите замечание насчет F и P. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Garcian,
Считывайте из файла как хотите, но изврат без применния индексов и указателей предлагаю такой:
Полный изврат, но ни указателей ни доступа к элементам строки не использовал. |
|||
|
||||
| Garcian |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
mes, ну а как же Anikmar, спасибо, попробую. --------------------
Неродивый студент |
||||
|
|||||
| Garcian |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
уххх подразобрался с чтением, спс mes, правда, каждый символ идет на отдельной строчке
--------------------
Неродивый студент |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |