Чтение онлайн

на главную - закладки

Жанры

Программирование на С, С++
Шрифт:

В default мы указали случай, в котором пользователь вводит цифру, не являющуюся номером пункта меню. А что будет если пользователь введет букву. Возможно зацикливание и т.п. Чтобы этого не было. Нам необходимо предусмотреть ввод не цифр, а букв.

Листинг 6

Программа с меню

1 #include<stdio.h>

2 main

3 {

4 int a;

5 char d;

6 do

7 {

8 printf(" MENU \n1. Kvadrat chisla\n2. Kub chisla\n3. Vuhod\nVuberite punkt menu\n");

9 scanf("%s",&d);

10 switch(d)

11 {

12 case ‘1’:

13 printf("Vvedite chislo\n");

14 scanf("%d",&a);

15 printf("Kvadrat chisla raven %d\n",a*a);

16 break;

17 case ‘2’:

18 printf("Vvedite chislo\n");

19 scanf("%d",&a);

20 printf("Kub chisla raven %d\n",a*a*a);

21 break;

22 case ‘3’:

23 break;

24 default:

25 printf("Nevernui vvod!\n\n");

26 }

27 }

28 while(d!=3);

Задания:

Спроектировать меню. Написать программу.

Оператор for

Оператор for – это оператор цикла, обобщение оператора while [4]. Оператор for:

for (int i=0; i<n; i++)

{

….

}

int i=0 – инициализация,

i<n – проверка условия,

i++ – модификация.

Каждый раз выполняется тело цикла, в конце идет модификация (в данном случае i++), поэтому цикл будет выполняться столько раз, сколько указано в условиях, если условие верно, то выполняется тело еще раз.

Задание: вычислить значение функции y=x*x-4*x при х от 100 до 200 включительно, начиная от 100 с шагом 20. Решение задачи в Листинге 7, результат решения Листинга 7 на Рисунке 1.

Листинг 7

#include<iostream>

using namespace std;

int main

{

int y;

for(int x=100;x<=200;x=x+20)

{

y=x*x-4*x;

cout<<"y("<<x<<")="<<y<<endl;

}

}

Рисунок 1

Типы данных

Типы данных:

char хранит символ (один байт),

int – целочисленные значения,

float – вещественные значения с одинарной точностью,

double – вещественное значения с двойной точностью и т.д.

Модификаторы:

short – короткое целое,

long – длинное целое.

Диапазон значений зависит от аппаратной и системной платформы.

Например, int будет или 16, или 32. Узнать это возможно, используя операцию sizeof, она возвращает размер в байтах, смотри Листинг 8, Рисунок 2.

Листинг 8

#include<iostream>

using namespace std;

int main

{

cout<<sizeof(int);

}

Рисунок 2

Время жизни и область видимости переменной

Программный блок – это часть программы между фигурными скобками.

Локальные переменные живут только во время программного блока. Локальные переменные объявлены внутри блока.

Глобальная переменная живет на протяжении всей жизни программы. Глобальная переменная объявляется вне блоков программы.

Пример в Листинге 9. Если убрать скобки в строках 8 и 9, компилятор выдаст ошибку.

Листинг 9

1#include<iostream>

2using namespace std;

3

4 int main

5 {

6 int i=10;

7 cout<<i;

8 {

9 int i=11;

10 cout<<endl<<i;

11 }

12}

Преобразование типов

В зависимости от версии компилятора, округление будет либо в большую, либо в меньшую сторону. Смотри Листинг 10, Рисунок 3.

Листинг 10

#include<iostream>

using namespace std;

int main

{

int y;

y=(int)(3/10);

cout<<y<<endl;

y=(int)(10/3);

cout<<y;

}

Рисунок 3

Поразрядные операции

Напишите программу, которая переводит введенное положительное число в двоичное систему счисления и выводит на экран результат перевода.

Пример решения задания в Листинге 11.

Листинг 11

#include <iostream>

using namespace std;

void dv(int a)

{

int b[100];

int i=0;

while(a>1)

{

b[i]=a%2;

a=(a-a%2)/2;

i++;

}

b[i]=a;

for(int j=i;j>=0;j–)

cout<<b[j];

}

int main

{

int a;

cin>>a;

dv(a);

return 0;

}

Ниже даны тесты для проверки задач программы.

Тест 1

a=10

Результат

1010

Тест 2

a=2

Результат

10

Тест 3

a=8

Результат

1000

Поразрядные операции применимы только к целочисленным аргументам (char, short, int и long).

& – поразрядное И

| – поразрядное включающее ИЛИ

^ – поразрядное исключающее ИЛИ

<< – сдвиг влево

>> – сдвиг вправо

~ – одноместное поразрядное дополнение до единицы

В побитовых операциях работа идет над каждым битом.

Поделиться:
Популярные книги

Как прорастают зерна

Волкова Дарья
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Как прорастают зерна

Воин

Бубела Олег Николаевич
2. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.25
рейтинг книги
Воин

Последний Герой. Том 5

Дамиров Рафаэль
5. Последний герой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Последний Герой. Том 5

Кодекс Охотника. Книга XXVI

Винокуров Юрий
26. Кодекс Охотника
Фантастика:
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXVI

Я не бог. Книга XXXIV

Дрейк Сириус
34. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не бог. Книга XXXIV

Путь к бессмертию 2

Покинтелица Евгений
2. Девятихвостый Богатырь
Фантастика:
попаданцы
сказочная фантастика
фэнтези
5.00
рейтинг книги
Путь к бессмертию 2

Родословная. Том 1

Ткачев Андрей Юрьевич
1. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Родословная. Том 1

Кодекс Охотника

Винокуров Юрий
1. Кодекс Охотника
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника

Я С СССР! Том III

Вязовский Алексей
3. Я спас СССР
Фантастика:
альтернативная история
5.86
рейтинг книги
Я С СССР! Том III

Ученик. Книга 4

Первухин Андрей Евгеньевич
4. Ученик
Фантастика:
фэнтези
5.67
рейтинг книги
Ученик. Книга 4

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Вернувшийся: Посол. Том IV

Vector
4. Вернувшийся
Фантастика:
космическая фантастика
киберпанк
5.00
рейтинг книги
Вернувшийся: Посол. Том IV

Курсант: назад в СССР 2

Дамиров Рафаэль
2. Курсант
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Курсант: назад в СССР 2