Форум программистов, компьютерный форум CyberForum.ru

Количество неодинаковых символов в строке - C++

Восстановить пароль Регистрация
 
Sysfa1l
5 / 5 / 1
Регистрация: 31.03.2010
Сообщений: 71
11.05.2010, 15:01     Количество неодинаковых символов в строке #1
Что-т не получается написать прогу...:\

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main ()
{
int kolvo=0;
int j;
char buff[100];
gets(buff);
 
for (int i = 0; i < strlen(buff); i++) {
 
    for (j = 0; j < strlen(buff); j++) if (buff[i]==buff[j]&&i!=j)  break;
if (j==strlen(buff)-1) kolvo++;
}
 
 
 
printf("kolichestvo razlichnuh simvolov = %d",kolvo);
getch();
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.05.2010, 16:34     Количество неодинаковых символов в строке #2
Вроде все так, а в чем конкретно проблема? Вот, сделал через указатели :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//компилировал DEV C++
#include <iostream>
using namespace std;
int main()
{ int kolvo=0;
char buf[100];
gets(buf);
char *p;
p=buf;
char *s;
for (;*p;p++){
    s=(p+1);
   for (;*s;s++){
   if (*p==*s) break;
   if (*(s+1)=='\0')
   kolvo++;}}
  cout<<kolvo;
  system("pause");    
  return 0;
}
Добавлено через 16 минут
Я вашу программу "добил", там не хватало пары фигурных скобок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main ()
{
int kolvo=0;
int j;
char buff[100];
gets(buff);
 
for (int i = 0; i < strlen(buff); i++) {
 
        for (j = 0; j < strlen(buff); j++){ // вот эта фигурная скобка
       if (buff[i]==buff[j]&&i!=j)  break;
if (j==strlen(buff)-1) kolvo++;} // и эта
}
 
 
 
printf("kolichestvo razlichnuh simvolov = %d",kolvo);
getch();
return 0;
}
Sysfa1l
5 / 5 / 1
Регистрация: 31.03.2010
Сообщений: 71
11.05.2010, 16:53  [ТС]     Количество неодинаковых символов в строке #3
ваша прога натолкнула на мысль
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
#include <string.h>
int main ()
{
int kolvo=1;
int j,i;
char buff[100];
gets(buff);
 
for (i = 0; i < strlen(buff); i++) {
 
        for (j=i+1; j < strlen(buff); j++) {if (buff[i]==buff[j])  break;
if (j==strlen(buff)-1) kolvo++;        }
}
 
 
 
printf("kolichestvo razlichnuh simvolov = %d",kolvo);
getch();
return 0;
}
вот рабочий вариант
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
11.05.2010, 17:00     Количество неодинаковых символов в строке #4
Вариант без двойных циклов:
C++
1
2
3
4
5
6
7
8
9
int kolvo = 0;
bool used[256];
memset(used, 0, sizeof(used));
for (char* p = buff; *p != 0; p++)
    if (!used[*p])
    {
        used[*p] = true;
        kolvo++;
    }
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
11.05.2010, 17:18     Количество неодинаковых символов в строке #5
Sysfa1l:
Не правильная мысль, потому как строка должна исследоваться с ног до головы:
вот возьмем строку:
"ssss dd lk rpa"
Ваша программа посчитает что последняя d и последняя s находяться в единственном экземляре,
а это и есть нехорошо.

Поэтому вариант(доработанный ваш) который предложил Kastaneda есть нормальное решение.
,единственное не вызываейте strlen в условии
это накладно потому как длинна будет опрелеляться на каждой итерации:
определите длинну до цикла.

Добавлено через 8 минут
Somebody:
Хитер.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.05.2010, 17:58     Количество неодинаковых символов в строке #6
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Sysfa1l
вот возьмем строку:
"ssss dd lk rpa"
Ваша программа посчитает что последняя d и последняя s находяться в единственном экземляре,
Да, все верно, мой вариант с указателями построен на такой же логике ( Просто хотел ускорить процесс, и сделал так, чтоб при каждой итерации все символы массива не перебирать. Такой подход подходит для поиска одинаковых символов.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
11.05.2010, 18:27     Количество неодинаковых символов в строке #7
подходит для поиска одинаковых символов.
Да подходит.

Добавлено через 1 минуту
Может пригодиться кому-нибудь для вычисления одинаковых.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2010, 18:58     Количество неодинаковых символов в строке
Еще ссылки по теме:

C++ Подсчитать количество символов в строке
Количество символов в строке C++
C++ Найти количество символов всех строк файла и количество символов в определенной строке

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.05.2010, 18:58     Количество неодинаковых символов в строке #8
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Может пригодиться кому-нибудь для вычисления одинаковых.
Вот это врядли Поиском ни кто не пользуется, сразу создают темы "СПАСИТЕ, ПОМОГИТЕ" )
Yandex
Объявления
11.05.2010, 18:58     Количество неодинаковых символов в строке
Ответ Создать тему
Опции темы

Текущее время: 12:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru