|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2013, 20:02 | #1 |
Регистрация: 13.05.2013
Сообщений: 3
|
Работа с файлами
Приветствую всех читателей этой темы. У меня есть проблема насчет программы. Дан файл, в котором содержутся какие-то слова. Между соседними словами запятая, за последним словом - точка. Нужно напечатать все слова, отличные от последнего.
Я где то проссматривал у вас уже такую тему, но в ней написано слишком круто для моего уровня. Я пока новичек в этом деле. Вот код программы - скажите пожалуйста, где тут у меня ошибка, ну битый час не могу понять(пользовался книгой и конспектом, но что-то запутался уже). Заранее спасибо! Код:
|
13.05.2013, 22:37 | #2 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
-Зачем вам math.h?
-ЛУчше сделать так нужно так: char *text[]={"yet,", "yter,", "teror,", ...............//something}; проход по первому массиву символов for (int i = 0; i<3; i++) { //do something with text[0][i]; } Вам ведь нужен двумерный массив, т.е массив массивов. У вас есть массив строк, состоящий из массива символов. -проверьте находится ли открываемый файл в том же месте, где и программа (exe) |
14.05.2013, 15:44 | #3 |
Регистрация: 13.05.2013
Сообщений: 3
|
Библиотеки я подключаю по привычке) это ж не ошибка. А вот про массив я не понял(можете по другому объснить пожалуйста). У меня есть файл, в котором есть некоторая строка из слов. Мне нужно - те слова, что по условию, перенести в другой файл. Файлы кстати находятся в том месте где и (exe) файлик. Как я понимаю мне наверно нужно подсчитать количество запятых. Ведь можно ж будет вывести все слова с количеством запятых-1, но не понимаю как это реализовать. Скажите, пожалуйста, я хоть правильно думаю?
Последний раз редактировалось interprise777; 14.05.2013 в 15:54. |
14.05.2013, 17:20 | #4 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
Я бы решил так:
Последнее слово в строке у нас основное, т.е с ним все слова и сравниваются... Тогда, его либо можно вынести из исходной строки в ОТДЕЛЬНУЮ Строку, а все остальные слова в исходной строке сравнивать с той самой отдельной строкой. НО! есть накладные расходы на память, тогда: Можно запомнить начало и конец последнего слова (до ТОЧКИ!). И просто, опять же с помощью итераторов, проходить по строке, сравнивая каждое слово с последним, И, если выполнится наше условие, то сразу в файл его и запишем, пока не дойдем до начала последнего слова... Для удобства лучше сделать так: char *text[]={"yet,", "yter,", "teror,", ...............//something}; теперь про массив: в Вашем исходном коде имеется одна единственная строка, т.е все слова в ней НЕ ЕСТЬ строки. Я же предлагаю сделать все отдельные слова строками. У Вас есть массив инициализированный строками: str1 str2 str3 str4 В этом массиве имеется подмассив: символы (s, t, r, 1; и т.д.. s, t, r, 4) Так как же нам пройти и по строкам и по символам строки одновременно! Ответ: двумерный массив text[0][1] //первая строка (индекс - 0), второй символ строки (индекс - 1) Нумерация элементов в массиве ВСЕГДА начинается с нуля Вообще с двемерным намного проще будет реализовать запись в файл. Последний раз редактировалось Igor95; 14.05.2013 в 17:31. |
14.05.2013, 18:09 | #5 |
Регистрация: 13.05.2013
Сообщений: 3
|
ага спасибо!! Разобрался!
|
14.05.2013, 18:22 | #6 |
Форумчанин
Регистрация: 03.01.2013
Сообщений: 388
|
пожалуйста
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с файлами. | GoodNight | Помощь студентам | 7 | 22.12.2012 19:22 |
Работа с файлами | }|{eka | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 29.06.2012 15:35 |
Работа с файлами | Nice Plant | Помощь студентам | 1 | 21.11.2010 05:45 |
работа с файлами | konfetka13 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 31.05.2010 22:48 |