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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые программисты. Подскажите пожалуйста, а то в силу своей неопытности не могу понять в чем проблема. Задание стоит так: создать три множества (в данном случае массивы) по 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2014, 22:25
Ответы с готовыми решениями:

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

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

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

6
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.09.2014, 23:09
Цитата Сообщение от 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
Цитата Сообщение от 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  [ТС]
alsav22, mss307, данное изменение в коде не помогло. я просто смотрел через отладчик, так при сравнении элементов(если они действительно равны), оно даже if не проходит. То есть цикл видит их как разные элементы
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
15.09.2014, 12:26
ну, я не поленился.. работает..
Миниатюры
Ошибка в сравнении символов  
0
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
15.09.2014, 12:41  [ТС]
mss307, понял ошибку. Этот код меняет значения, только если два соседние элемента равны. а если равны к примеру 1 и 3 элемент равны, то нужен доп. цикл
0
118 / 118 / 41
Регистрация: 14.12.2013
Сообщений: 352
15.09.2014, 12:49
ну, и слава Богу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2014, 12:49
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru