Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Интересное:
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Организация простейшего меню
Практически во всех задачах используется какой-нибудь выбор пользователя. Например, для демонстрации работы программ можно использовать сгенерированные случайные числа, а можно числа, введенные с клавиатуры. Выбор пользователя очень часто реализуют в виде меню. Простейшее меню выглядит так:
Выберите один из вариантов:
1. Ввод чисел с клавиатуры
2. Генерация случайных чисел
3. Выход из программы
Введите номер выбранного пункта:___
Меню в программе удобно реализовывать через оператор ВЫБОР (В Паскале case, в Си – switch).
Выбор
Продемонстрируем использование меню на следующей задаче:
По трем сторонам треугольника нужно вычислить его площадь.
Для вычисления будем использовать формулу
, где a, b, c – стороны треугольника, а p – полупериметр
.
Решение на Паскале:
Uses crt;
var
a, b, c: real; {Стороны треугольника}
p: real; {Полупериметр треугольника}
s: real; {Площадь треугольника}
ch: char; {Выбранный пункт меню}
Begin
Clrscr();
While true do {Бесконечный цикл}
Begin
Writeln(‘Выберите один из вариантов:’);
Writeln(‘1. Ввод чисел с клавиатуры’);
Writeln(‘2. Генерация случайных чисел’);
Writeln(‘3. Выход из программы’);
Writeln(‘Введите номер выбранного пункта: ’);
ch:= readkey;
{Если ввели правильный параметр – выходим из цикла}
if (ch = ‘1’) or (ch = ‘2’) or (ch = ‘3’) then
break;
{Если ввели неправильный параметр – снова меню…}
Clrscr;
writeln(‘Вы ввели неверный номер варианта.’);
writeln;
end;
case ch of
‘1’: {Ввод с клавиатуры}
begin
writeln(‘Введите стороны треугольника’);
write(‘a = ’);
read(a);
write(‘b = ’);
read(b);
write(‘c = ’);
read(c);
end;
‘2’: {Генерация случайных значений}
begin
randomize;
{Для сгенерированных чисел соблюдается условие:}
{любая из сторон меньше суммы двух других.}
a:= 6 + random(5); {a = [6..10]}
b:= 6 + random(5); {b = [6..10]}
c:= 6 + random(5); {c = [6..10]}
end;
‘3’: {Выход из программы}
exit;
end;
{Вывод значений сторон}
writeln(‘a = ‘, a:0:1, ‘, b = ‘, b:0:1, ‘, c = ‘, c:0:1);
{Вычисление площади}
p:= (a + b + c) / 2;
s:= sqrt(p * (p - a) * (p - b) * (p - c));
{Вывод площади}
writeln(‘s = ‘, s:0:1);
end.
Решение на Си:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float a, b, c; //Стороны треугольника
float p; //Полупериметр треугольника
float s; //Площадь треугольника
char ch; //Выбранный пункт меню
clrscr();
while (1) //Бесконечный цикл
{
printf("Выберите один из вариантов:\n");
printf("1. Ввод чисел с клавиатуры\n");
printf("2. Генерация случайных чисел\n");
printf("3. Выход из программы\n");
printf("Введите номер выбранного пункта: \n");
ch = getch();
//Если ввели правильный параметр - выходим из цикла
if (ch == '1' || ch == '2' || ch == '3') break;
//Если ввели неправильный параметр - снова меню
clrscr();
printf("Вы ввели неверный номер варианта.\n\n");
}
switch (ch)
{
case '1': //Ввод с клавиатуры
printf("Введите стороны треугольника\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
break;
case '2': //Генерация случайных значений
randomize();
//Для сгенерированных чисел соблюдается условие:
//любая из сторон меньше суммы двух других.
a = 6 + random(5); //a = [6..10]
b = 6 + random(5); //b = [6..10]
c = 6 + random(5); //c = [6..10]
break;
case '3': //Выход из программы
return 0;
}
// Вывод значений сторон
printf("a = %f, b = %f, c = %f\n", a, b, c);
//Вычисление площади
p = (a + b + c) / 2;
s = sqrt(p * (p - a) * (p - b) * (p - c));
//Вывод площади
printf("s = %0.1f", s);
return 0;
}
Сравним выбор в Паскале и в Си:
| Паскаль | Си |
| case c of ‘1’: {Ввод с клавиатуры} begin … end; ‘2’: {Генерация случайных} {значений} begin … end; ‘3’: {Выход из программы} exit; end; | switch (c) { case ‘1’: //Ввод с клавиатуры … break; case ‘2’: //Генерация случайных //значений … break; case ‘3’: //Выход из программы return; } |
Отличие выбора в Паскале и Си видно из примера и из формального описания синтаксиса:
Паскаль:
case ПЕРЕКЛЮЧАТЕЛЬ of
СПИСОК_КОНСТАНТ_1: ОПЕРАТОР_1;
СПИСОК_КОНСТАНТ_2: ОПЕРАТОР_2;
…
СПИСОК_КОНСТАНТ_N: ОПЕРАТОР_N;
Else ОПЕРАТОР_E;
End
Си:
switch ( ПЕРЕКЛЮЧАТЕЛЬ )
{
case КОНСТАНТА_1:ОПЕРАТОРЫ_1; break;
case КОНСТАНТА_2:ОПЕРАТОРЫ_2; break;
…
case КОНСТАНТА_N:ОПЕРАТОРЫ_N; break;
default: ОПЕРАТОРЫ_E;
}
В Си выбор можно использовать более сложным способом. Продемонстрируем на примере: Вводится число N (1<=N<=5). Нужно вычислить и вывести y =
.
Реализация на Си:
#include <stdio.h>
int main()
{
int n, y;
printf(“Введите N = ”);
scanf(“%d”, &n);
y = 1;
switch (n)
{
case 5: y *= 3;
case 4: y *= 3;
case 3: y *= 3;
case 2: y *= 3;
case 1: y *= 3;
break;
default: y = 0;
}
printf(“y = %d”, y);
return 0;
}
Эту программу наглядно поясняет графическая схема алгоритма:

То есть если в конце варианта выбора не стоит break, то после выполнения кода для этого варианта будет выполняться код для следующего варианта. В нашем примере после кода для варианта case 3 будет выполняться код для варианта case 2.
МАССИВЫ В СИ
|
|
|
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!