Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
1

Ошибка в сравнении символов

14.09.2014, 22:25. Показов 736. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые программисты. Подскажите пожалуйста, а то в силу своей неопытности не могу понять в чем проблема. Задание стоит так: создать три множества (в данном случае массивы) по 3 элемента, которыми являются буквы латинского алфавита, элементы в одном множестве повторятся не должны. Создать массив с полным алфавитом. Произвести слияние трех массивов по 3 символа, и массив с результатом дополнить до универсума с массива с полным алфавитом. Короче проблема в том, что не происходит сравнение элементов массива, при генерации случайных букв, просто не заходит в цикл, даже если есть одинаковые символы. Текст частично прилагаю:

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
int main(){
    srand(time(0));
    char *Universum = new char[26];
    char *arr1 = new char [3];
    char *arr2 = new char [3];
    char *arr3 = new char [3];
 
    for ( int i = 0; i < 26; i++ )
    {
        Universum[i] = i + 'a';            //Генерируется весь алфавит
    }
    while(true){
    for(int i=0; i<3; i++){
        arr1[i] = 'a'+ rand()%26;       //Генерируются символы латинского алфавита
        arr2[i] = 'a'+ rand()%26;
        arr3[i] = 'a'+ rand()%26;
    }
    for(int i = 0;i < 3;i++){              // Запускаю цикл
       if(arr1[i]==arr1[i+1]){             // Сравниваю текущий элемент со следующим
           while(arr1[i]==arr1[i+1])     //пока не поменяется
            arr1[i] = 'a' + rand()%26;   //генерируем новый элемент
       }
            }
.......
strcmp(&arr1[i],&arr1[i+1]) тоже не работает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2014, 22:25
Ответы с готовыми решениями:

Ошибка при сравнении символов
1) НЕ могу понять в чем ошибка при сравнении символов вот пример одной: Энтропия.cpp(18): error...

Ошибка в сравнении глобальных переменных в функциях
Здравствуйте! Я всю жизнь писал на Pascal и с С столкнулся впервые пару дней назад, когда начал...

Ошибка при сравнении типа char
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace...

Ошибка при сравнении введённых данных
Я очень долго пытался решить эту трабл но так и не понял даже ее суть( Суть данного компонента в...

6
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.09.2014, 23:09 2
Цитата Сообщение от yur@ Посмотреть сообщение
C++
1
2
3
for(int i = 0;i < 3;i++){// Запускаю цикл
if(arr1[i]==arr1[i+1]){ // Сравниваю текущий элемент со следующим
while(arr1[i]==arr1[i+1]) //пока не поменяется
Тут выход за границу массива. Последний допустимый индекс равен 2. У вас, при i == 2, i + 1 даст 3.

Добавлено через 1 минуту
Цитата Сообщение от yur@ Посмотреть сообщение
strcmp(&arr1[i],&arr1[i+1]) тоже не работает.
strcmp() - это для сравнения Си-строк, а не символов.
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
15.09.2014, 11:59 3
Цитата Сообщение от yur@ Посмотреть сообщение
for(int i = 0;i < 3;i++)
C++
1
for(int i = 0;i < 2;i++)
0
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
15.09.2014, 12:13  [ТС] 4
alsav22, mss307, данное изменение в коде не помогло. я просто смотрел через отладчик, так при сравнении элементов(если они действительно равны), оно даже if не проходит. То есть цикл видит их как разные элементы
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
15.09.2014, 12:26 5
ну, я не поленился.. работает..
Миниатюры
Ошибка в сравнении символов  
0
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
15.09.2014, 12:41  [ТС] 6
mss307, понял ошибку. Этот код меняет значения, только если два соседние элемента равны. а если равны к примеру 1 и 3 элемент равны, то нужен доп. цикл
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
15.09.2014, 12:49 7
ну, и слава Богу)
0
15.09.2014, 12:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2014, 12:49
Помогаю со студенческими работами здесь

Ошибка в поэлементном сравнении элементов матрицы
не правильно сравнивает, помогите исправить. что с условием сделать, чтобы сравнивало поелементно...

Ошибка при сравнении значений, неправильная сортировка
Есть задание - ввести данные о 10-ти самолетах(работа со структурами). Потом вывести в таблицу все...

Ошибка при сравнении элемента динамического массива с числом
Здравствуйте! При попытке сравнения элемента двухмерного динамического массива с числом возникает...

Ошибка при сравнении символов
пытаюсь сравнить символ и выдаёт ошибку void __fastcall TForm1::Button1Click(TObject *Sender) { ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru