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

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

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

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

11.05.2010, 15:01. Просмотров 542. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2010, 15:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Количество неодинаковых символов в строке (C++):

Найти количество символов всех строк файла и количество символов в определенной строке - C++
Здравствуйте! Я хотел бы попросить помощи в решении задачки! У меня не получается найти количество символов всех строчек и количество...

Найти количество символов в строке, найти заданные буквы, разделить количество букв на количество символов - C++
Написать код который сперва подсчитывает количество символов в строке а потом из этих находит буквы (a,e,y,u,i) и делит количество букв на...

Посчитать количество неодинаковых элементов массива - 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++
Хелп. Я только недавно начал изучать С++. Помогите сделать программу. Нужно посчитать количество всех элементов в строке.

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 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;
}
2
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;
}
вот рабочий вариант
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 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++;
    }
1
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
11.05.2010, 17:18 #5
Sysfa1l:
Не правильная мысль, потому как строка должна исследоваться с ног до головы:
вот возьмем строку:
"ssss dd lk rpa"
Ваша программа посчитает что последняя d и последняя s находяться в единственном экземляре,
а это и есть нехорошо.

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

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

Добавлено через 1 минуту
Может пригодиться кому-нибудь для вычисления одинаковых.
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
11.05.2010, 18:58 #8
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Может пригодиться кому-нибудь для вычисления одинаковых.
Вот это врядли Поиском ни кто не пользуется, сразу создают темы "СПАСИТЕ, ПОМОГИТЕ" )
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2010, 18:58
Привет! Вот еще темы с ответами:

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

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

Сосчитать количество символов + в строке - C++
задача такая, программа должен посчитать сколько символов &quot;+&quot; в строке код дает правильный ответ, но превращает всё в строке в плюсиков,...

Посчитать количество символов в строке - C++
Объясните как работает этот код. Он должен посчитать количество каждой буквы и вывести в порядке убывания. Можно подробно, если не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.05.2010, 18:58
Ответ Создать тему
Опции темы

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