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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2014, 09:22   #1
Nikolay625
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 26
По умолчанию (Си) Удаление повторяющихся символов

надо из строки удалить повторяющиеся символы
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>

int main()
{
		int n, i, j, m;
		char str[50];
		
	printf("\nLabortornaya rabota 5_2");
	printf("\nVariant #12");
	printf("\nMR-12-1-1");
	printf("\nShabaldin Nikolay\n");

	printf("\nVvedite stroku simvolov:\n");	//ввод исходных данных
	printf("\n str=");						
	gets(str);
	
	n = strlen(str);	//длина строки
	m=0;
	
for (i=1; i<=n; i++)
	if (str[m]==str[i])
	{
		for(j=i;j<n;j++);
		{
			str[j]=str[j+1];
		}
		str[n]='\0';
		n = strlen(str);
	}
	puts(str);
	getch();
	return 0;
}
вот написал, сравниваю символы str(m) и str(i) и если они одинаковые, смещаем строку от str(i) на один символ влево, закрывая повторяющийся символ и в конце добавляем терминатор строки,чтоб уменьшить размер строки на 1. Помогите, в чем у меня ошибка, на экран выводи исходную строку

Последний раз редактировалось Stilet; 14.06.2014 в 10:16.
Nikolay625 вне форума Ответить с цитированием
Старый 14.06.2014, 10:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Рискну предложить такое:
Код:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char s[255]="Hello world";
    int i,j,k=1;
    int b;
    for(i=1;s[i];i++){
        b=0;
        for(j=i-1;j;j--) if (s[j]==s[i]){b=1; break;}
        if(!b) s[k++]=s[i];
    }
    s[k]='\0';
    printf(s);
    return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2014, 12:47   #3
Nikolay625
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 26
По умолчанию

Пропускает первый символ и не могли бы вы расталковать немного этот код, если не трудно
Nikolay625 вне форума Ответить с цитированием
Старый 14.06.2014, 16:19   #4
Nikolay625
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 26
По умолчанию

решил проблему с первым символом for(j=i-1;j;j--) вот for(j=i-1;j-1;j--) ну и вроде разобрался как работает, спасибо)
Nikolay625 вне форума Ответить с цитированием
Старый 14.06.2014, 16:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Молодец )
Только вот незадача:
Безымянный.jpg
Первая буква то на месте...
I'm learning to live...

Последний раз редактировалось Stilet; 14.06.2014 в 16:56.
Stilet вне форума Ответить с цитированием
Старый 14.06.2014, 22:32   #6
Nikolay625
Пользователь
 
Регистрация: 18.05.2014
Сообщений: 26
По умолчанию

Не так выразился, если первый символ повторяется, программа его пропускает (ааабббввв)=>(аабв), второй и последующие символы не сравниваются с первым.
Nikolay625 вне форума Ответить с цитированием
Старый 14.06.2014, 23:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а... Мелочи жизни )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление повторяющихся символов из строки kametto Помощь студентам 9 24.04.2013 07:27
Поиск повторяющихся символов RNR Общие вопросы Delphi 1 25.06.2012 02:43
Удаление повторяющихся записей в БД Dinamik БД в Delphi 8 22.03.2012 22:05
Удаление повторяющихся нулей artemavd Общие вопросы Delphi 9 06.07.2011 00:13
Замена повторяющихся символов C# MyXa C# (си шарп) 7 02.02.2011 14:32