Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
2022-10-28 | 18 |
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.
МАССИВЫ В СИ
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!