Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите написать программу.. 
:(
    Опции темы
den23
Дата 15.11.2005, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.11.2005

Репутация: нет
Всего: нет



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

У меня имеется:

Код

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define SIZE 100

int main(void)
{
    int l, i;
    char a[SIZE], b[SIZE];
    
    printf("Vvedite predlozhenie:\n");
    gets(a);
    l = strlen(a);
    
    printf:"Rezultat:\n");
    for(i=0; i<= l-1; i++)
    {
       if(a[i]!=a[i+1])
          printf("%c", a[i]);
       else
          :qstn 
    }

    
    getch();
    return 0;
}


Подскажите плз, что нужно написать в else, верный ли у меня вобще алгоритм? Заранее благодарен.
PM MAIL   Вверх
nworm
Дата 15.11.2005, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 1
Всего: 8



Можно else стереть, после окончания цикла напечатать a[l] и править синтаксические ошибки в коде.
PM MAIL WWW   Вверх
sergejzr
Дата 15.11.2005, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
den23
Дата 15.11.2005, 03:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.11.2005

Репутация: нет
Всего: нет



Цитата(nworm @ 15.11.2005, 01:39)
Можно else стереть, после окончания цикла напечатать a[l] и править синтаксические ошибки в коде.

а как удалить символ из массива? т.е., если он повторяется, тогда он удаляется из массива.
PM MAIL   Вверх
sergejzr
Дата 15.11.2005, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Всмысл повторяется? Одна буква - один раз в массиве должна быть, или парные совсем удаляются?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 15.11.2005, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Вот решение для разных буквЖ
Код

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define SIZE 100

int main(void)
{
    int l, i;
    char a[SIZE], b[SIZE];
    char alphabet[256];//ASCII алфавит. Если разрешены и другие знаки, то надо увеличить конечно
    for(i=0;i<256;i++)alphabet[i]=0;
    
    printf("Vvedite predlozhenie:\n");
    gets(a);
    l = strlen(a);
    
    printf("Rezultat:\n");
    int b_index=0;
    for(i=0; i<l; i++)
    {
        if(alphabet[a[i]-'0']==0) //Такой буквы ещё не было
        {
            printf("%c", a[i]);
            b[b_index]=a[i]; b_index++;//Запишем букву в результат
            alphabet[a[i]-'0']=1; //пометим букву как "была"
        }
    }
    b[b_index]=0;//Метим конец строки
   printf("\n");
    printf("%s",b); //распечатаем результат ещё раз.
    getch();
    return 0;
}



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 15.11.2005, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



А вот оба варианта вместе smile
Код

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define SIZE 100

int main(void)
{
    int l, i;
    int b_index=0;
    int c_index=0;
    char a[SIZE], b[SIZE], c[SIZE];
    char alphabet[256];//ASCII
    for(i=0;i<256;i++)alphabet[i]=0;
    
    printf("Vvedite predlozhenie:\n");
    gets(a);
    l = strlen(a);
    
    printf("Rezultat:\n");
    
    for(i=0; i<l; i++)
    {
        if(alphabet[a[i]-'0']==0)
        {
            printf("%c", a[i]);
            b[b_index]=a[i]; b_index++;
        }
        alphabet[a[i]-'0']++;
    }

    b[b_index]=0;//Метим конец строки
    printf("\nmassiv bez dublikatov:\n");
    printf("%s",b); //распечатаем результат ещё раз.

    //собираем результат, где парных вообще не существует :)
    for(i=0; i<256; i++)
    {
        if(alphabet[i]%2) //Количество парных делятся на 2, а непарные дадут остаток
        {
          c[c_index]=i+'0'; c_index++;
        }
    } 
    c[c_index]=0;//Метим конец строки
    printf("\n");
     printf("\nmassiv odinohnyx bukv\n");
    printf("%s",c); //распечатаем результат ещё раз.

    getch();
    return 0;
}



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
darkart
Дата 15.11.2005, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 2
Всего: 31



Цитата
Всмысл повторяется? Одна буква - один раз в массиве должна быть, или парные совсем удаляются?

Или удаляются подряд идущие? smile
PM MAIL WWW ICQ Skype GTalk   Вверх
S.A.P.
Дата 15.11.2005, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Если я правильно понял из приведенного автором, кода то подряд идущие. Тогда так.
Код

#include <conio.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    cout << "Vvedite predlozhenie:\n";
    char next, prev = 0;
    
    while ( ( next = cin.get() ) != '\n' )
        if ( next != prev ) {
            prev = next;
            cout.put ( next );
        }        
    getch();
}


PM MAIL   Вверх
den23
Дата 15.11.2005, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.11.2005

Репутация: нет
Всего: нет



вот пример
вводим:
Пример

выводит:
Пиме

удаляет повторяющиеся "р"...
ввод:
Hello World
вывод:
He Wrd

удаляет повторяющиеся "l" и "o"


Это сообщение отредактировал(а) den23 - 15.11.2005, 23:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.