|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.09.2010, 22:29 | #1 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 21
|
Удаление слов из строк . С++
Задание : удалить второе слово из строки.
Проблема такая: удаляет все слова кроме первого и последнего... Не могу понять, почему(( Текст программы: #include <stdio.h> #include <conio.h> #include <iostream.h> #include <string.h> void main() { clrscr(); char *a; a=new char[50]; cout << "Vvedite 1 stroky" << endl; gets(a); cout << "Nasha stroka: "; puts(a); int k=0, t=0,p=0; for(int i=0;a[i]!='\0';i++) { if(a[i]==' ' && t==0) {k=i; t=1;} if (a[i]==' '&& t==1) {p=i-k;} } for (i=0; a[i]!='\0';i++,k++) a[k]=a[k+p]; cout << "Teper nasha stroka: " ; puts(a); cout << "Nagmite lybuy kklavishy"<< endl; delete []a; getch(); }
— Марвин, ты спас нам жизнь!
— Кошмар, правда? (с) The Hitchhiker's Guide to the Galaxy |
20.09.2010, 23:29 | #2 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
{
if(a[i]==' ' && t==0) // если видим пробел {k=i; t=1;} // пишем в к = и, а т=1 if (a[i]==' '&& t==1) // если пробел (тот же символ смотрим) и т=1 (а оно БУДЕТ =1) {p=i-k;}// p = текущее и минус текущее и (попросту 0) } for (i=0; a[i]!='\0';i++,k++) a[k]=a[k+p];// удалить от к (полагаю к будет равно последнему пробелу) Ну я не знаю я сейчас не очень предраспооложен к думанию, но хочу сказать что просто алгоритмические ошибки. там где два ифа стоят я бы второй заменил на елсе т.к. второй ИФ срабатывает ВСЕГДА при срабатывании первого ифа (а я понимаю требуется ухватиться за следующий пробел) Внимательно рассмотрите алгоритм. всегда когда программа чето недовыводит - это алгоритмическая ошибка стопудоф =) Добавлено: извиняюсь, не елсе там надо. ну не знаю, хотя бы местами if поменять уже както проще будет
С наилучшими пожеланиями.
Последний раз редактировалось Познающий; 20.09.2010 в 23:32. Причина: ах да забыл! |
20.09.2010, 23:43 | #3 |
Пользователь
Регистрация: 18.05.2010
Сообщений: 21
|
Спасибо огромное!))
Правда я уже подумала с одногруппницей и у нас получилось) буквально 5 минут назад решили)
#include <stdio.h> #include <conio.h> #include <iostream.h> #include <string.h> void main() { clrscr(); char *a; a=new char[50]; cout << "Vvedite 1 stroky" << endl; gets(a); cout << "Nasha stroka: "; puts(a); int k=0, t=0,p=0; for(int i=0;a[i]!='\0';i++) { if (a[i]==' '&& t==1) {p=i-k;t++;} if(a[i]==' ' && t==0) {k=i; t++;} } for (i=0;a[i]!='\0';k++,i++) a[k]=a[k+p]; cout << "Teper nasha stroka: " ; puts(a); cout << "Nagmite lybuy kklavishy"<< endl; delete []a; getch(); }
— Марвин, ты спас нам жизнь!
— Кошмар, правда? (с) The Hitchhiker's Guide to the Galaxy |
21.09.2010, 02:38 | #4 |
Форумчанин
Регистрация: 09.05.2009
Сообщений: 162
|
ну вот. я ж сказал if местами поменять. поздравляю. запомните одну простую вещь - перед тем как чтолибо писать надо составить алгоритм. благо при вступлении в программирования алгоритмам учить должны. иначе из программы в программу одни и те же грабли и в итоге черти какой код (в лучшем случае) или программа некорректно работает (в нелучшем)
С наилучшими пожеланиями.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
перенос строк удаление ненужных строк | HelperAwM | Microsoft Office Excel | 5 | 26.06.2010 18:42 |
Удаление повторяющихся слов C | vivo89 | Помощь студентам | 2 | 24.12.2009 09:18 |
Удаление слов из строки. | grave123 | Общие вопросы C/C++ | 2 | 20.12.2009 15:01 |
Удаление слов из строки С | vivo89 | Помощь студентам | 4 | 13.11.2009 22:13 |
Удаление слов из текста | Gery | Помощь студентам | 24 | 22.09.2009 14:37 |