partisanus |
19-12-2012 00:50 2048472 |
Программа, которая вычисляет площадь и периметр круга, прямоугольника, треугольник Си
Помучался, но сделал, снова. Надеюсь и это пригодится.
Я совсем не давно изучаю программирование(хожу на курсы), советы принимаю с удовольствием :), кроме советов типа: "Бросай дурное!" и т.п. ;)
В процессе создания данной программы, возник вопрос, на который, поискав в интернете ответ, ничего работающего не нашел.
Есть ли какие-то команды, с помощью которых, можно было бы возвращаться назад по действиям программы. Т.е. Например мне нужно оформить 5 задач, одна из которых, нижеприведенная, таким образом чтобы сначала выбиралась задача, а потом какие-то ее подпункты, можно ли одной командой сделать, чтобы после выполнения какого-то действия программа возвращалась к выбору задачи, бес зацикливаний и т.п., если можно, то как? Буду крайне признателен!
PHP код:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
void main()
{int x,y,z,u,a,b;
float c,d;
printf("1 - kryg"); //начальная менюшка
printf("\n2 - prjamoygol'nik");
printf("\n3 - treugol'nik");
printf("\n0 - dlja vihoda ");
printf("\n\n***** viberite nygnii pynkt *****\n");
scanf("%d",&x);
while (x!=0) //зацикливаем меню пока не введем 0 для выхода из программы
{switch(x)
{case 1: //оператор выбора Если нажали 1 (выбрали круг)
printf("vvedite radiys kryga v m \t"); //запрос ввода необходимых данных
scanf("%d",&y); //вводим радиус круга
while(y<=0) //защита от ввода нуля (вводим до тех пор, пока не введем значение, больше нуля)
scanf("%d",&y);
a=2*3.14*y; //считаем периметр(длинну окружности)
b=3.14*y*y; //считаем площадь круга
printf("perimetr kryga raven:%d m\n",a); //выводим периметр
printf("ploschad' kryga ravna:%d m\n",b); //выводим площадь
break; //выход к начальному меню
case 2: //оператор выбора Если нажали 2(выбрали прямоугольник)
printf("vvedite dlini storon prjamoygol'nika v m \n");
scanf("\n%d",&y); //запрос ввода необходимых данных (длинна 1-ой стороны)
while(y<=0) //защита от ввода нуля
scanf("%d",&y);
scanf("\n%d",&z); //запрос ввода необходимых данных (длинна 2-ой стороны)
while(z<=0) //защита от ввода нуля
scanf("%d",&z);
a=(y+z)*2; //расчет периметра
b=y*z; //расчет площади
printf("perimetr prjamoygol'nika raven:%d m\n",a);
printf("ploschad' prjamoygol'nika ravna:%d m\n",b);
break;
case 3: //оператор выбора Если нажали 2(выбрали прямоугольник)
printf("vvedite dlini storon treygol'nika v m \n");
scanf("%d",&y); //запрос ввода необходимых данных (длинна 1-ой стороны)
while(y<=0) //защита от ввода нуля
scanf("%d",&y);
scanf("%d",&z); //запрос ввода необходимых данных (длинна 2-ой стороны)
while(z<=0) //защита от ввода нуля
scanf("%d",&z);
if(y>z) //если 1 сторона длиннее второй
{printf("vvedite dlinny tret'ej storony v predelah ot %d m do %d m\n",z, y+z); //выводим подсказку какой длинны должна быть третяя сторона(согласно правилу, что длинна одной стороны не может быть длиннее или равна сумме длинн двух других)
scanf("%d",&u); //вводим длинну 3-ей стороны
while((u<z)&&(u>y+z)) //зацикливаем ввод, пока не будет введена правильная длинна(согласно нашим условиям)
scanf("%d",&u);}
else if(z>y) //то же что и выше, только если 2-ая сторона длиннее
{printf("vvedite dlinny tret'ej storony v predelah ot %d m do %d m\n",y, y+z);
scanf("%d",&u);
while((u<y)&&(u>y+z))
scanf("%d",&u);}
a=y+z+u; //считаем периметр
d=a/2*(a/2-y)*(a/2-z)*(a/2-u); //Считаем площадь треугольника по формуле Герона, скорее всего можно в 1 действие, не проверял, но мне так больше нравится =)
c=sqrt(d); //2-ое действие по нахождение площади(извлекаем корень из выражения выше)
printf("perimetr treygol'nika raven:%d m\n",a); //выводим периметр
printf("ploschad' treygol'nika ravna:%.2f m\n",c); //выводим площадь
break;
default:
printf("Oshibka! \n");
}
printf("\nnajmite na lybyy knopky dlja vozvrata k meny"); // Дале идет концовка Цикла While, лагодаря ему программа работает пока не выбрать выход(0)
getch(); //ожидает пока нажатия на любую кнопку перед продолжением действий
system("cls"); //команда очистки экрана
printf("1 - kryg");
printf("\n2 - prjamoygol'nik");
printf("\n3 - treugol'nik");
printf("\n0 - dlja vihoda ");
printf("\n\n***** viberite nygnii pynkt *****\n");
scanf("%d",&x);
}
}
|