Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
1

Не могу понять разницу! do-while

29.08.2010, 15:16. Просмотров 781. Ответов 12
Метки нет (Все метки)

Цикл for работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main() {
char ch='a';
int alfa[25];
int i=0;
for(i=0;i<=25;i++)
{
    alfa[i]=ch;
    ch++;
}
for(i=0;i<=25;i++)
cout<<char(alfa[i])<<" ";
return 0;
}
цикл do-while не работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main() {
char ch='a';
int alfa[25];
int i=0;
do
{
    alfa[i]=ch;
    i++;
    ch++;
} while(ch<='z');
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2010, 15:16
Ответы с готовыми решениями:

Не могу понять разницу
Здравствуйте! Помогите, пожалуйста, понять разницу в коде: int b = 5; ...

Не могу понять разницу в написании
Подскажите, пожалуйста, это равнозначные записи? И в чем вообще смысл варианта...

Стек на основе массива структур - эт как понять читаю литературу и не могу понять!
Стек статически (на основе массива структур). Пример структура &quot;Товар&quot; которая...

Не могу сделать полиморфизм. Не могу до конца понять пример по этому поводу
Есть такая задача: Класс Animal должен быть абстрактным, имеет имя и вес....

не могу понять
как сделать так чтобы B двигался по массиву? #include&lt;iostream&gt; #include...

12
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
29.08.2010, 15:31 2
Цитата Сообщение от art_z Посмотреть сообщение
цикл do-while не работает:
А по конкретнее?
0
silent_1991
Эксперт С++
5010 / 3070 / 270
Регистрация: 11.11.2009
Сообщений: 7,044
Завершенные тесты: 1
29.08.2010, 15:35 3
art_z,
Что конкретно не работает?

Добавлено через 27 секунд
Ну вот, опередили)))
0
kazak
3058 / 2379 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
29.08.2010, 15:37 4
Хотя, если нужно, чтобы while работал точно также как и for, измени условие
C++
1
while (ch < 'z');
1
HardMorg
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
29.08.2010, 15:50 5
у вас ошибка, массив должен быть alfa[26], так как 26 букв будет, у вас даже в первом коде ошибка int alfa[25] а циклом проходите до 26 элемента for(i=0;i<=25;i++)
0
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 21:17  [ТС] 6
Немного модифицировал код:

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
#include <iostream>
#include <math.h>
#include <conio.h>
 
using namespace std;
 
int main() {
char ch='a';
int alfa[25];
int i=0;
for(i=0;i<=25;i++)
{
    alfa[i]=ch;
    ch++;
}
cout<<"Codes: \n\n";
for(i=0;i<=25;i++)
cout<<alfa[i]<<" ";
cout<<"\n\nChars: \n\n";
for(i=0;i<=25;i++)
cout<<char(alfa[i])<<" ";
 
cout<<"\n\n\n"<<"alfa[25]="<<alfa[25];
cout<<"\n\ncode of z is: "<<int('z');
return 0;
}
Результат который я не могу понять:

Codes:

97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
118 119 120 121 16777338

Chars:

a b c d e f g h i j k l m n o p q r s t u v w x y z


alfa[25]=16777338

code of z is: 122

code symbol 16777338: z


Как код символа ‘z’ равен 122, но и 16777338 одновременно??? Почему сбился счет с 121 на 1677733 ??? Кто может объясните я запутался!
0
Somebody
2801 / 1612 / 251
Регистрация: 03.12.2007
Сообщений: 4,215
Завершенные тесты: 3
29.08.2010, 21:45 7
Цитата Сообщение от art_z Посмотреть сообщение
Как код символа ‘z’ равен 122, но и 16777338 одновременно??? Почему сбился счет с 121 на 1677733 ??? Кто может объясните я запутался!
Читай пост выше. http://www.cyberforum.ru/showthread.php?p=930880
0
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 22:00  [ТС] 8
Цикл начинается с 0, и до 25!!!

(0=a),..,(25=z) !!!

C++
1
2
3
4
5
последние строки кода должны быть:
 
cout<<"\n\n\n"<<"alfa[25]="<<alfa[25];
cout<<"\n\ncode of z is: "<<int('z');
cout<<"\n\n"<<"code symbol 16777338: "<<char(16777338);
Результат корректный весь алфавит отобразился, но:

C++
1
cout<<"\n\n"<<"code symbol 16777338: "<<char(16777338);
Результат символ 'z' и для 122 тоже 'z';
как так?
0
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.08.2010, 22:05 9
art_z, Альфа должно быть 26...
0,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. Сколько элементов? Вот столько и должно быть в массиве. Последний будет естественно alpha[25], но так как начинается с нуля общее кол-во 26.

По поводу
C++
1
cout<<"\n\n"<<"code symbol 16777338: "<<char(16777338);
Возникает переполнение типа char который определен то ли -128 127, то ли -127 128. Следовательно при большем будет вызван последний символ. Последний символ является z. Хотя как-то криво объяснил... У z ведь код 122.
1
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 22:09  [ТС] 10
Понял))))))) спс)))

C++
1
cout<<"\n\n"<<"code symbol 16777338: "<<char(16777338);
почему это работает это адрес в памяти тогда или что?
0
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.08.2010, 22:11 11
art_z, Переполнение. Но почему z самому интересно. Надо погуглить

C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
   std::cout<<(16777338%128);
   std::cout<<"\n\n"<<"code symbol 16777338: "<<char(16777338);
}
Проверяйте. 122 остаток от деления 16777338 на 128. Поэтому выводит z. Меняем последнее число в 16777338 на 7 выходит y. И так далее. Всему виной переполнение

Или вот так. Тут остаток от деления на 256. Результат одинаковый

C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
   std::cout<<(16777338%256);
   std::cout<<"\n\n"<<"code symbol 16777338: "<<char(16777338);
}
1
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 22:30  [ТС] 12
=)) Теперь доволен))) спасибо ))) я б не понял)))

Добавлено через 12 минут
и на 512 и на 1024...
0
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
29.08.2010, 22:32 13
art_z, Но если без юникода то все таки лучше на 128. Если с юникодом на 256. Более не рекомендуется
0
29.08.2010, 22:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2010, 22:32

не могу понять
есть такой код void addElement(const T&amp; elem){ *(_pointer) = elem;...

Не могу понять ООП
Привет Всем, не так давно дошел до ООП, вроде как бы все понятно, но есть...

Не могу понять синтаксис C++
как понять данные строки кода, вроде бы наследование, а вроде бы и нет, так как...


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

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

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