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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sysfa1l
5 / 5 / 1
Регистрация: 31.03.2010
Сообщений: 71
#1

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

11.05.2010, 15:01. Просмотров 533. Ответов 7
Метки нет (Все метки)

Что-т не получается написать прогу...:\

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 15:01     Количество неодинаковых символов в строке
Посмотрите здесь:

Посчитать количество неодинаковых элементов массива - C++
Задание: Посчитать количество не одинаковых элементов массива #include &lt;iostream&gt; using namespace std; void bubbleSort(int array,...

Количество символов в строке - C++
String.h class String { public: String(); ~String(); void AddText(); int Whole(); private: string textline;

Подсчитать количество символов в строке - C++
Помогите пожалуйста решить 1. Подсчитать количество символов в строке.

Найти количество символов в строке - C++
Написать программу для подсчёта количества символов в любой строке

Посчитать количество символов в строке - C++
Задание: Дана строка. Подсчитать количество различных символов, которые не являются буквами или цифрами, и вывести их на экран. Знаю...

Ограниченное количество символов в строке - C++
как ограничить вводимое кол-во символов в строке ( ввод с клавиатуры ) ? желательно через scanf, если возможно

Посчитать количество символов в строке - C++
Хелп. Я только недавно начал изучать С++. Помогите сделать программу. Нужно посчитать количество всех элементов в строке.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 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
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 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
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
11.05.2010, 17:18     Количество неодинаковых символов в строке #5
Sysfa1l:
Не правильная мысль, потому как строка должна исследоваться с ног до головы:
вот возьмем строку:
"ssss dd lk rpa"
Ваша программа посчитает что последняя d и последняя s находяться в единственном экземляре,
а это и есть нехорошо.

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

Добавлено через 8 минут
Somebody:
Хитер.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
11.05.2010, 17:58     Количество неодинаковых символов в строке #6
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Sysfa1l
вот возьмем строку:
"ssss dd lk rpa"
Ваша программа посчитает что последняя d и последняя s находяться в единственном экземляре,
Да, все верно, мой вариант с указателями построен на такой же логике ( Просто хотел ускорить процесс, и сделал так, чтоб при каждой итерации все символы массива не перебирать. Такой подход подходит для поиска одинаковых символов.
Genius Ignat
1235 / 773 / 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++
задача такая, программа должен посчитать сколько символов &quot;+&quot; в строке код дает правильный ответ, но превращает всё в строке в плюсиков,...

Подсчитать непарное количество символов в строке - C++
Подсчитать непарное количество символов.

Подсчитать в строке количество пробелов и символов - C++
Задача: создать программу, которая позволяет ввести строку, и после считает в ней количество пробелов и символов. Вот код: #include...

Получить количество символов во веденной строке - C++
Решил попробовать со строками поработать, сразу же возникло несколько вопросов: 1) В C++ тип string не встроен? Нужно подключать...

Сделать сдвиг на количество символов в строке - C++
Пытаюсь взять длину сообщения. if (isalpha(mess)) mess=0x(strlen(mess)); Пишет: Ошибка 2 error C2153::...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru