Member 13515388 Ответов: 1

Количество символов


привет Я должен написать программу, которая получает строку и сообщает количество ее символов .
как и моя строка "aaabb" , выходные данные программы должны быть :
а : 3
Б : 2


ИДК как это написать :(

Что я уже пробовал:

#include<stdio.h>
int main()
{
	char a[50],ch;
	int i,j,n=0;
	printf("enter your string :\t");
	gets(a);
	for(i=0;a[i]!='\0';i++){
		for(j=0;a[j]!='\0';j++){
			if(a[i]==a[j])
			n++;
		}
	printf(" %c : %d \n",j,n);
}	
}

PIEBALDconsult

Только ASCII? Или вам нужно поддерживать "широкие" символы?
Вы знаете, сортируется ли строка или нет?
Во всяком случае, я рекомендую повторять строку только один раз, подсчитывая количество каждого символа на ходу. Вам понадобится место для хранения подсчетов.

1 Ответов

Рейтинг:
4

Suvendu Shekhar Giri

Несколько модификаций должны сделать эту работу.

#include<stdio.h>
int main()
{
	char a[50],ch;
	int i,j,n=0;
	printf("enter your string :\t");
	gets(a);
	for(i=0;a[i]!='\0';i++){
                n=0; //reset the count for next character in queue
		for(j=0;a[j]!='\0';j++){
			if(a[i]==a[j])
			n++;
		}
	   printf(" %c : %d \n",i,n);//show i instead of j
        }	
}


Вы все равно будете видеть повторяющиеся строки, Когда вы повторяете для каждого символа в строке, не проверяя наличие дубликатов. Чтобы преодолеть это, вы можете применить логику, чтобы иметь строку с уникальными символами и которую вам нужно использовать для внешнего цикла (i).

Проверьте следующие ссылки для получения справки по этому поводу-
C программа для удаления всех повторяющихся символов в строке - Codeforwin[^]
Удалить все дубликаты из заданной строки - GeeksforGeeks[^]

Хоп, это помогает :)


Member 13515388

Большое спасибо :))

Suvendu Shekhar Giri

Пожалуйста примите как решение если оно помогает :)

Member 13515388

конечно

Member 13515388

извините, но я не понимаю, почему вы ставите n=0 в первую очередь для

Suvendu Shekhar Giri

так что, когда мы повторяем для следующего символа, он снова начнет отсчет от 1, а не от количества предыдущего символа.

Member 13515388

большое спасибо теперь мне нужно исправить программу чтобы показать мне символ вместо символов :))