Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Программа, которая вычисляет площадь и периметр круга, прямоугольника, треугольник Си

Ответить
Настройки темы
C/C++ - Программа, которая вычисляет площадь и периметр круга, прямоугольника, треугольник Си

Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: partisanus
Дата: 19-12-2012
Помучался, но сделал, снова. Надеюсь и это пригодится.
Я совсем не давно изучаю программирование(хожу на курсы), советы принимаю с удовольствием , кроме советов типа: "Бросай дурное!" и т.п.

В процессе создания данной программы, возник вопрос, на который, поискав в интернете ответ, ничего работающего не нашел.
Есть ли какие-то команды, с помощью которых, можно было бы возвращаться назад по действиям программы. Т.е. Например мне нужно оформить 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",zy+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",yy+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);
        
    }



Отправлено: 00:50, 19-12-2012

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


partisanus,
Цитата partisanus:
можно ли одной командой сделать, чтобы после выполнения какого-то действия программа возвращалась к выбору задачи, бес зацикливаний и т.п. »
Нельзя. Это архитектурная проблема. Когда начнете изучать ассемблер, т.е. прямые команды процессору, тогда вы поймете, что он(процессор) до крайней степени линеен и глуп. И если ему не поставить условный переход, то сам он не догадается, к какой инструкции ему следует вернуться и продолжить выполнение программы.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:44, 19-12-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата lxa85:
Нельзя. Это архитектурная проблема. Когда начнете изучать ассемблер, т.е. прямые команды процессору, тогда вы поймете, что он(процессор) до крайней степени линеен и глуп. И если ему не поставить условный переход, то сам он не догадается, к какой инструкции ему следует вернуться и продолжить выполнение программы. »
Понял. Спасибо!

Отправлено: 03:07, 20-12-2012 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Программа, которая вычисляет площадь и периметр круга, прямоугольника, треугольник Си

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Программа, которая следит за здоровьем Жесткого CrashTest Хочу все знать 16 07-12-2012 15:51
Разное - Программа на турбо Паскале:Вычислить площадь (метод Монте-Карло) SunLine Программирование и базы данных 4 18-12-2010 19:01
Разное - нужна программа или батник, которая бы загружалась в ОЗУ и убивала систему Xerses Microsoft Windows 2000/XP 8 02-07-2009 13:19
Разное - [решено] Не отрабатывает программа, которая запускается из Назначеных заданий. SANIOK_AV Microsoft Windows 2000/XP 17 18-03-2009 15:34
Разное - Нужна программа которая бы запомнила действия мыши и повторяла их ! re5pect Программное обеспечение Windows 3 12-11-2008 00:31




 
Переход