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

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

Войти
Регистрация
Восстановить пароль
 
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
#1

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

29.08.2010, 15:16. Просмотров 741. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2010, 15:16     Не могу понять разницу! do-while
Посмотрите здесь:

Не могу понять разницу - C++
Здравствуйте! Помогите, пожалуйста, понять разницу в коде: int b = 5; int a(float(b)); cout &lt;&lt; a &lt;&lt; endl; И int...

Не могу понять разницу в написании - C++
Подскажите, пожалуйста, это равнозначные записи? И в чем вообще смысл варианта 1? int a; 1. int * const &amp;b=a; 2. int *...

Не могу понять ошибку - C++
#include&lt;iostream.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; int main() { double x=3.741, y=-0.825,z=0.160, A,...

Не могу понять ошибку - C++
Пытаюсь решить вот эту задачу http://www.cyberforum.ru/cpp-beginners/thread356063.html Есть решения на бэйсике вот...

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

Не могу понять ошибку - C++
#include &lt;iostream.h&gt; #include &lt;math.h&gt; int main () { double x,a,d,h,t,e,g,b,c,z,y,s,rezylt; не могу понять чем программе sqrt...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
29.08.2010, 15:31     Не могу понять разницу! do-while #2
Цитата Сообщение от art_z Посмотреть сообщение
цикл do-while не работает:
А по конкретнее?
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
29.08.2010, 15:35     Не могу понять разницу! do-while #3
art_z,
Что конкретно не работает?

Добавлено через 27 секунд
Ну вот, опередили)))
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
29.08.2010, 15:37     Не могу понять разницу! do-while #4
Хотя, если нужно, чтобы while работал точно также как и for, измени условие
C++
1
while (ch < 'z');
HardMorg
3 / 26 / 3
Регистрация: 29.08.2010
Сообщений: 204
29.08.2010, 15:50     Не могу понять разницу! do-while #5
у вас ошибка, массив должен быть alfa[26], так как 26 букв будет, у вас даже в первом коде ошибка int alfa[25] а циклом проходите до 26 элемента for(i=0;i<=25;i++)
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 21:17  [ТС]     Не могу понять разницу! do-while #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 ??? Кто может объясните я запутался!
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
29.08.2010, 21:45     Не могу понять разницу! do-while #7
Цитата Сообщение от art_z Посмотреть сообщение
Как код символа ‘z’ равен 122, но и 16777338 одновременно??? Почему сбился счет с 121 на 1677733 ??? Кто может объясните я запутался!
Читай пост выше. http://www.cyberforum.ru/showthread.php?p=930880
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 22:00  [ТС]     Не могу понять разницу! do-while #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';
как так?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.08.2010, 22:05     Не могу понять разницу! do-while #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.
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 22:09  [ТС]     Не могу понять разницу! do-while #10
Понял))))))) спс)))

C++
1
cout<<"\n\n"<<"code symbol 16777338: "<<char(16777338);
почему это работает это адрес в памяти тогда или что?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.08.2010, 22:11     Не могу понять разницу! do-while #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);
}
art_z
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 12
29.08.2010, 22:30  [ТС]     Не могу понять разницу! do-while #12
=)) Теперь доволен))) спасибо ))) я б не понял)))

Добавлено через 12 минут
и на 512 и на 1024...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2010, 22:32     Не могу понять разницу! do-while
Еще ссылки по теме:

Не могу понять ошибку - C++
Всем привет. Делаю задание из универа. В принципе все работает с использованием дружественного класса, но хочется обойтись без...

Не могу понять задачу - C++
Имеется задача http://rghost.ru/18509631/image.png 1 Фамилия , Имя - заключить в массив безграничный аля &quot; familia_ima &quot; 2 Знак...

Не могу понять условие - C++
Скажите пожалуйста как понять это условие: if(pRC), где pRC - указатель

Не могу понять задание. - C++
Определить класс - &quot;Комплексное число&quot; в виде модуля и аргумента комплексного числа. Составить пользовательскую функцию, которая...


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

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.08.2010, 22:32     Не могу понять разницу! do-while #13
art_z, Но если без юникода то все таки лучше на 128. Если с юникодом на 256. Более не рекомендуется
Yandex
Объявления
29.08.2010, 22:32     Не могу понять разницу! do-while
Ответ Создать тему
Опции темы

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