|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.05.2010, 10:08 | #1 |
Заблокирован
Регистрация: 05.05.2010
Сообщений: 40
|
Не удаляются лишние пробелы
#include <stdio.h>
#include <string.h> #include <ctype.h> void main(){ /*объявление переменных*/ char temp[]="ababab ababbaa babaaa abbaaaa"; char st[]="";//обработанная строка char mas[255]; int i;//счетчик int t;//счетчик массива /*удаляем лишние пробелы*/ for(i=1;i<=strlen(temp);i++){ if ((temp[i]==' ')&&(temp[i-1]==' ')) i++; else {st[0]+=temp[i];} } printf("%s\n",st); /*заносим слова в массив*/ t=0; for(i=0;i<=strlen(st);i++){ if ((st[i]==' ')||(i==strlen(st)))t++; mas[t]=mas[t]+st[i]; } /*количество слов*/ printf("Kol-vo slov = %d",t); getch(); } алгоритм нормальный, но почему то не удаляются лишние пробелы..помогите, пожалуйста.. |
13.05.2010, 10:11 | #2 |
Форумчанин
Регистрация: 12.02.2007
Сообщений: 360
|
if ((temp[i]==' ')&&(temp[i-1]==' ')) i++;
Вот тут ошибка. Он два раза при таком раскладе будет i плюсовать. Первый раз тут и второй на очередной итерации... Там, наверное, continue нужно ставить Или - if ((temp[i]==' ')&&(temp[i-1]==' ')) i++; заменить на if ((temp[i]==' ')&&(temp[i+1]==' ')) i++; |
13.05.2010, 10:15 | #3 | |
Заблокирован
Регистрация: 05.05.2010
Сообщений: 40
|
Неа, выводит тоже самое что и было=(
Цитата:
|
|
13.05.2010, 10:23 | #4 |
Форумчанин
Регистрация: 16.02.2009
Сообщений: 555
|
Код:
|
13.05.2010, 10:45 | #5 |
Заблокирован
Регистрация: 05.05.2010
Сообщений: 40
|
Теперь CodeGear Rad 2010 Studio другую ошибку сыплет..=(
Вообще по заданию задумка такая - у нас есть строка представленная ввиде массива символов, нужно найти в этой строке слово с максимальным содержанием символов a и b. Мой алгорит таков: 1)Удаляем в строке лишние пробелым(потому что препод любит пошутить с этими вещами); 2)Заносим каждое слово в массив строк; 3)Разбираем каждый элемент массива как строку и подсчитываем буквы a и b и далее по заданию выводим это слово; Код:
|
13.05.2010, 10:54 | #6 |
Форумчанин
Регистрация: 16.02.2009
Сообщений: 555
|
Понятно что сыплет массив st у тебя какого размера. я ж пример привел!
|
13.05.2010, 12:43 | #7 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
Код:
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
13.05.2010, 13:19 | #8 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
Для удаления всех пробеллов из строк можно воспользоваться следующим:
Код:
|
13.05.2010, 13:21 | #9 |
Заблокирован
Регистрация: 05.05.2010
Сообщений: 40
|
oleg kutkov, это первая лаба - в ней разрешено только пользоваться строковыми массивами и все=) ознакомительная вроде как...шаг в сторону - использование других функций==несдаче лабы...
|
13.05.2010, 13:38 | #10 |
Заблокирован
Регистрация: 05.05.2010
Сообщений: 40
|
удаляет первое слово если введено допустим так: "u popa byla sobaka" такое происходит именно с однобуквенными первыми словами...
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удалять лишние пробелы из строки | eduard17 | Помощь студентам | 4 | 19.02.2010 20:42 |
Убрать лишние пробелы из строки | SoftKoc | Общие вопросы Delphi | 3 | 03.12.2009 23:54 |
Удалить лишние пробелы [C++] | StudeHt | Помощь студентам | 2 | 20.05.2009 23:12 |
Удалить лишние пробелы | Иван 883 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 06.04.2009 22:45 |