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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2011, 20:19   #1
yulja-uk
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 22
По умолчанию Не могу решить задачу в с++ все перебрала и не получается((((((

Задача такая:
Преобразовать строку, оставляя только один символ в каждой последовательности подряд идущих одинаковых символов.
Сделать задачу нужно в с++

Моя программа. (что смогла сделать)
#include <vcl.h>
#include <stdio.h>
#include <ctype.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
void main()
{
char s[10]; //описание строки как массива символов
char c;
int i,j,k;
printf ("Vvedite stroku\n"); //Выводит сообщение
gets(s); //ввод строки
i=0;
k=strlen(s);
while (i<=k)
{c=s[i];

Последний раз редактировалось yulja-uk; 02.12.2011 в 20:40.
yulja-uk вне форума Ответить с цитированием
Старый 02.12.2011, 20:56   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

по глупому как-то так
Код:
for (i = 0; i < (strlen(s)-1); i++)
{
    if (s[i] == s[i+1]) 
    {
         for (j = i; (j < strlen(s)-1); j++)
         {
              s[j] = s[j+1]
         }
         s[strlen(s)-1] = '\0';
    }
}
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 02.12.2011, 21:09   #3
yulja-uk
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
по глупому как-то так
Код:
for (i = 0; i < (strlen(s)-1); i++)
{
    if (s[i] == s[i+1]) 
    {
         for (j = i; (j < strlen(s)-1); j++)
         {
              s[j] = s[j+1]
         }
         s[strlen(s)-1] = '\0';
    }
}
но не работает(((((
yulja-uk вне форума Ответить с цитированием
Старый 02.12.2011, 21:13   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Пардон ошибся!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 02.12.2011, 22:01   #5
dasvex
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от yulja-uk Посмотреть сообщение
но не работает(((((
блин добавьте i--; после s[strlen(s)-1] = '\0';
должно заработать
dasvex вне форума Ответить с цитированием
Старый 02.12.2011, 22:28   #6
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Юля, логика такая - идешь по строке и проверяешь, если i-ый элемент равен i+1 элементу, то удаляешь один символ и все!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 02.12.2011, 22:51   #7
yulja-uk
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 22
По умолчанию

Цитата:
Сообщение от ByAlex Посмотреть сообщение
Юля, логика такая - идешь по строке и проверяешь, если i-ый элемент равен i+1 элементу, то удаляешь один символ и все!
Да в том что не получается((((((
yulja-uk вне форума Ответить с цитированием
Старый 02.12.2011, 23:16   #8
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от yulja-uk Посмотреть сообщение
Да в том что не получается((((((
Говори, что не получается!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 02.12.2011, 23:22   #9
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

С++, говоришь? Ну держи, порадуешь преподов )
Код:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
void main()
{
	string s;
	cout<<"Enter string: ";
	getline(cin, s);
	cout<<"Result: "<<string(s.begin(), unique(s.begin(), s.end()))<<endl;
}
Son Of Pain вне форума Ответить с цитированием
Старый 02.12.2011, 23:32   #10
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
С++, говоришь? Ну держи, порадуешь преподов )
Код:
#include <iostream>
#include <algorithm>
#include <conio.h>
#include <string>
using namespace std;
void main()
{
	string s;
	cout<<"Enter string: ";
	getline(cin, s);
	cout<<"Result: "<<string(s.begin(), unique(s.begin(), s.end()))<<endl;
        getch();
}
Молодец, угарнул! ) Только еще надо в конце добавить getch() и добавить библиотеку #include <conio.h>, а то она так результата не увидит!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу решить задачу.. super3994 Помощь студентам 9 11.11.2011 22:50
Помогите решить задачу, вообще не получается.... Рустем Паскаль, Turbo Pascal, PascalABC.NET 9 16.01.2009 02:15
Помогите пожалуйста решить задачу!Очень нужно у самой не получается! Lilu Monechi Помощь студентам 2 19.05.2008 19:38