Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 22:29   #1
Purr
Пользователь
 
Аватар для Purr
 
Регистрация: 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
Purr вне форума Ответить с цитированием
Старый 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
Purr
Пользователь
 
Аватар для Purr
 
Регистрация: 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
Purr вне форума Ответить с цитированием
Старый 21.09.2010, 02:38   #4
Познающий
Форумчанин
 
Аватар для Познающий
 
Регистрация: 09.05.2009
Сообщений: 162
По умолчанию

ну вот. я ж сказал if местами поменять. поздравляю. запомните одну простую вещь - перед тем как чтолибо писать надо составить алгоритм. благо при вступлении в программирования алгоритмам учить должны. иначе из программы в программу одни и те же грабли и в итоге черти какой код (в лучшем случае) или программа некорректно работает (в нелучшем)
С наилучшими пожеланиями.
Познающий вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перенос строк удаление ненужных строк 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