Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 19:00   #1
Kalambur
 
Регистрация: 05.12.2011
Сообщений: 3
По умолчанию продолжение калькулятора(язык C)

Привет всем!
Мой код представляет калькулятор который считает фракции(Fractions),всё работает но проблема в том что,мне нужно сделать чтоб при выведении результата ненужно было вводит всё по новой но только 2 фракцию т.е. опять выбрать функцию(+,- или другое) и ввести 2 фракцию.

Т.е она запоминает результат и делает определенно выбранную опцию с 2 фракцией.

Код :

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//======================= Functions =========================
int add (int a,int b,int c,int d)
{ 
     int nom = (a*d) + (b*c);
     int denom = (b*d);
     if(nom==0){denom=0;printf("WE CAN'T DIVIDE BY ZERO!\n\n");}
     while((nom%2==0)&&(denom%2==0)){nom=nom/2;denom=denom/2;}
     if(nom%denom==0){nom=nom/denom;denom=denom/nom;}
     printf("The result is = %d/%d\n\n\n",nom,denom);
                  }
int sub (int a,int b,int c,int d)
{
     int nom = (a*d) - (c*b);
     int denom = (b*d);
     if(nom==0){denom=0;printf("WE CAN'T DIVIDE BY ZERO!\n\n");}
     while((nom%2==0)&&(denom%2==0)){nom=nom/2;denom=denom/2;}
     if(nom%denom==0){nom=nom/denom;denom=denom/nom;}
     printf("The result is = %d/%d\n\n\n",nom,denom);
                 }
int mul (int a,int b,int c,int d)
{
     int nom = (a*c);
     int denom = (b*d);
     if(nom==0){denom=0;printf("WE CAN'T DIVIDE BY ZERO!\n\n");}
     while((nom%2==0)&&(denom%2==0)){nom=nom/2;denom=denom/2;}
     if(nom%denom==0){nom=nom/denom;denom=denom/nom;}
     printf("The result is = %d/%d\n\n\n",nom,denom);
                  }
int dive (int a,int b,int c,int d)
{
     int nom = (a*d);
     int denom = (b*c);
     if(nom==0){denom=0;printf("WE CAN'T DIVIDE BY ZERO!\n\n");}
     while((nom%2==0)&&(denom%2==0)){nom=nom/2;denom=denom/2;}
     if(nom%denom==0){nom=nom/denom;denom=denom/nom;}
     printf("The result is = %d/%d\n\n\n",nom,denom);
                  }
int continu (int n, int nom, int denom)
{
     printf("If you want to continue press y,if you want to finish press n:\n\n");
     char select;
     
     scanf("\n%c",&select);
     if ((select=='y') || (select=='Y')) main(); 
     else return 0;
     
     }                                                                  
//================== Main ==================                 
    int main()
    { 
    int a,b,c,d;
    int nom,denom;
    int n;
    int a4=0;
//=========== Options to choose==================
           printf("\t\t\t\t #FRACTION CALCULATOR#\n\n");
           printf("Choose an option: \n\n");
           printf("Enter 1 for ADDITION\n");
           printf("Enter 2 for SUBSTRACTION\n");
           printf("Enter 3 for MULTIPLICATION\n");
           printf("Enter 4 for DIVISION\n\n");
           scanf("%d" ,&n);
//=========== Enter fraction ==================          
           printf("\t\t\tFirst Fraction:\n\n");
           printf("Enter the nominator: ");
           scanf("%d",&a);
           printf("Enter the dominator: ");
           scanf("%d",&b);
           printf("\n");        
           printf("\t\t\tSecond Fraction: \n\n");
           printf("Enter the nominator: ");
           scanf("%d",&c);
           printf("Enter the dominator: ");
           scanf("%d",&d);
           printf("\n\n");
//=========== Options =============== 
           if      (n==1)
           {  
                    add(a,b,c,d);
                    }                 
           else if (n==2)
           {
                    sub(a,b,c,d);
                    }
           else if (n==3)
           {
                    mul(a,b,c,d);
                    }
           else if (n==4)     
           {
                   dive(a,b,c,d);
                   }
                   continu(n,nom,denom);                    
  return 0;
}
Идея пришла только изменить функцию "continu" но не знаю как её закончить:


Код:
 int continu (int n, int nom, int denom,int c,int d)
{
     printf("If you want to continue press y,if you want to finish press n:\n\n");
     char select;
     
     scanf("\n%c",&select);
     if ((select=='y') || (select=='Y'))
     printf("\t\t\tSecond Fraction: \n\n");
     printf("Enter the nominator: ");
     scanf("%d",&c);
     printf("Enter the dominator: ");
     scanf("%d",&d);
     printf("\n\n");     
     else return 0;
Kalambur вне форума Ответить с цитированием
Старый 06.12.2011, 14:23   #2
Kalambur
 
Регистрация: 05.12.2011
Сообщений: 3
По умолчанию

55 просмотров,кто нибуть может помочь?
Kalambur вне форума Ответить с цитированием
Старый 09.12.2011, 01:28   #3
Kalambur
 
Регистрация: 05.12.2011
Сообщений: 3
По умолчанию

вопрос всё еще в силе
Kalambur вне форума Ответить с цитированием
Старый 09.12.2011, 10:03   #4
Vard
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 21
По умолчанию

Я крайне сомневаюсь, что код абсолютно правильный, но надеюсь идея будет понятна. Вам потребуется дописать свои функции для умножения, сложения и т п.

Код:
int continu (int* n, int* c,int* d){
     printf("If you want to continue press y,if you want to finish press n:\n\n");
     char select;
     
     scanf("\n%c",&select);
     
     if ((select=='y') || (select=='Y')){
          // Continue
          printf("Choose an option: \n\n");
          printf("Enter 1 for ADDITION\n");
          printf("Enter 2 for SUBSTRACTION\n");
          printf("Enter 3 for MULTIPLICATION\n");
          printf("Enter 4 for DIVISION\n\n");
          scanf("%d" ,n);

          printf("\t\t\tSecond Fraction: \n\n");
          printf("Enter the nominator: ");
          scanf("%d",c);
          printf("Enter the dominator: ");
          scanf("%d",d);
          printf("\n\n"); 
          return 1;
     } else
          // Not continue
          return 0;
В функции main() нада написать, вернее переписать
Код:
    //=========== Options =============== 
do{
// Функции в кейзах надо переписать, так чтобы они сохраняли результаты своих вычислений в a и b соответственно, это вам для практике, сделайте сами
    switch(n){
        case 1:
            add(&a,&b,c,d);
            break:
        case 2:
            sub(&a,&b,c,d);
            break:
        case 3:
            mul(&a,&b,c,d);
            break:
        case 4:
            dive(&a,&b,c,d);
            break:
    }
// Если в континю будет выбрано продолжение работы, то введенные пользователем данные окажутся в c и d соответственно на новом витке цикла  
}while(continu (&c, &d));
Vard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Продолжение С++ Maksim0905 Свободное общение 54 23.09.2012 09:16
Создание калькулятора exelim Общие вопросы C/C++ 6 18.11.2011 12:33
Продолжение калькулятора) Asdprom Общие вопросы C/C++ 5 17.03.2011 19:04
КЛАССЫ В С++ (продолжение) kolyan_zver Общие вопросы C/C++ 3 26.09.2010 01:37
создание калькулятора SpoteG Помощь студентам 3 17.06.2010 06:03