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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Diesel101
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 31
#1

Необходимо сделать проверку на отсутствие цифр и повторений букв в массиве - C++

01.08.2011, 19:09. Просмотров 1201. Ответов 6
Метки нет (Все метки)

Пожалуйста прошу вашей помощи необходимо сделать проверку чтобы не было цифр в массиве и повторение букв, написал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int count1=0;
for (int i=0;s1[i]!='\0';i++)
    {
     for (int j=0;s1[j]!='\0';j++)
     {
         if(i!=j)
         {
             if(s1[i]==s1[j]||(!isdigit(s1[i])))
             {
                 count1++;
             }
         }
     }
   }
   if(count1!=0)
   {
       cout<<"...."<<endl<<endl;
   }
Только проблема с этим кусочком кода (!isdigit(s1[i])) может он вообще не правильный?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2011, 19:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Необходимо сделать проверку на отсутствие цифр и повторений букв в массиве (C++):

Необходимо обойти ошибку в if на проверку месяцев. Не понимаю совершенно как это сделать - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;Windows.h&gt; #include &lt;locale&gt; using...

Как сделать так, чтобы записывалась строка из букв и цифр? - C++
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; #include &lt;fstream&gt; using namespace std; enum class Keys { ...

Последовательность из цифр, букв и знаков. Подсчитать чего больше и составить строки только из цифр, букв и знаков - C++
Дана последовательность состоящая из цифр, букв и знаков пунктуации в произвольном порядке. Подсчитать чего больше и составить строки...

Что сделать, чтобы при записи в пример букв, вместо цифр, программа не работала - C++
Как и где нужно прописать, чтобы при записи числа и буквы, программа не работала? х-у=... 7-6= все работает, так и нужно 7-а=...

Отсутствие элемента в массиве - C++
Здравствуйте! Как оформить в массиве отсутствие введенного элемента? Задача: Сформируйте массив из 9 элементов, заполнив его...

Необходимо вывести на экран наибольшее количество повторений чисел - C++
Здравствуйте, у меня возникла проблема с выявлением наибольшего количества повторений... Задание состоит в том, что для полученного списка...

6
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
01.08.2011, 20:08 #2
попробуй этот код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <ctype.h>
 
int search(const char* str) {
   const char* s1 = str;
   const char* s2;
   while( *s1 ) {
       if( isdigit( *s1 ))
           return 0;
       for(s2 = str; *s2; *s2++)
           if( *s1 == *s2 && s1 != s2)
               return 0;
       *s1++;
   }
   return 1;
}
 
 
int main(void) {
 
   char arr[] = { "ADSL" };
 
   if(search(arr))
      puts("yes succeeded !");
   else
      puts("not !");
 
   (search("ASP2.NET")) ?  puts("yes test !") : puts("no test !");
 
   getchar();
   return 0;
}
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
01.08.2011, 20:17 #3
в чем именно проблема?
0
Diesel101
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 31
01.08.2011, 20:28  [ТС] #4
Цитата Сообщение от silentnuke Посмотреть сообщение
в чем именно проблема?
С этой строчкой она не правильная
C++
1
!isdigit(s1[i]
Добавлено через 3 минуты
xAtom, спасибо огромное но это не совсем то мне нужно в моём коде решит проблему, почему строка isdigit делает проблему.
проверка не выполнятся на экран выводиться точки даже если нет цифр.

Добавлено через 2 минуты
C++
1
2
3
4
5
 if(s1[i]==s1[j]||(!isdigit(s1[i])))
             {
                 count1++;
                 cout<<count1;
             }
для проверки вывожу на экран пишет 0,1,2,3....20 мой массив из 5 элементов.
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
01.08.2011, 20:47 #5
во первых, не if(!isdigit(s1[i])), а if(isdigit(s1[i])).
ибо isdigit возвращает не нулевое значение, если это число.
а по вашей логики выходило наоборот все буквы-это числа, а числа-буквы, и каждый раз когда встречали букву, вы увеличивали счетчик.

во вторых, если делать как у вас) то у вас если попадется число то оно увеличит счетчик на размера массива, и так каждый раз когда будет число.
поэтому стоит переписать вот так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i=0;s1[i]!='\0';i++)
    {
        if(isdigit(s1[i]))
            count1++;
        for (int j=0;s1[j]!='\0';j++)
        {
            if(i!=j)
            {
                if(s1[i]==s1[j])
                {
                    count1++;
                    cout<<count1;
                }
            }
        }
    }
1
Diesel101
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 31
01.08.2011, 20:56  [ТС] #6
Просто нет слов просто скажу что очень вам благодарен.
0
Сыроежка
Заблокирован
02.08.2011, 00:36 #7
У вас в этом фрагменте кода

C++
1
2
for(s2 = str; *s2; *s2++)
           if( *s1 == *s2 && s1 != s2)
есть опечатка, так как должно быть не *s2++, а просто s2++. Но кроме того совсем не нужно сравнивать каждый элемент со всеми элементами строки. Достаточно начальное значение цикла положить роавным s2 = s1 + 1

C++
1
2
for(s2 = s1 + 1; *s2; *s2++)
           if( *s1 == *s2 && s1 != s2)
0
02.08.2011, 00:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2011, 00:36
Привет! Вот еще темы с ответами:

Необходимо создать простенькую проверку на наличии в строке букв - PHP
Здравствуйте, задание у меня такое: необходимо при помощи циклов и if else создать проверку на наличии в строке букв. С кирилицей у меня...

В функции необходимо сделать проверку пустой ли указатель или нет - C (СИ)
Помогите разобраться. Существует указатель на структуру. Этот указатель (его адрес передается в функцию). В функции необходимо сделать...

Сделать проверку на наличие цифр в Edit - C++ Builder
Здравствуйте мне нужна ваша помощь. У меня есть Edit и Memo. Нужно вывести цифры в Edit и вывести в Memo. Это я сделал, но есть одно но,...

Сделать проверку ввода и допустить ввод только цифр - Pascal ABC
Как сделать проверку ввода символов, типа если вводится не цифры а текст, то выводить ошибку var x,y:real; begin writeln...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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