Advertisement
sandrovieira

Lista Struct Frações

Nov 27th, 2014
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Trabalho_Prático_12._11._2014
  8. {
  9.     class Program
  10.     {
  11.         public struct EstruturaFracao
  12.         {
  13.             public int numerador;
  14.             public int denominador;
  15.         };
  16.  
  17.         //Função para determinar o mdc de dois inteiros positivos
  18.         static int MDC(EstruturaFracao x)
  19.         {
  20.             int resto = 1;
  21.             while (resto > 0)
  22.             {
  23.                 resto = x.numerador % x.denominador;
  24.                 x.numerador = x.denominador;
  25.                 if (resto > 0)
  26.                 {
  27.                     x.denominador = resto;
  28.                 }
  29.             }
  30.             return x.denominador;
  31.         }
  32.  
  33.         //função para simplificar uma fração
  34.         static EstruturaFracao Simplificar(EstruturaFracao x)
  35.         {
  36.             int y;
  37.             y = MDC(x);
  38.             x.numerador = x.numerador / y;
  39.             x.denominador = x.denominador / y;
  40.             return x;
  41.         }
  42.  
  43.         //função para somar duas frações
  44.         static EstruturaFracao Somar(EstruturaFracao x, EstruturaFracao y)
  45.         {
  46.             EstruturaFracao fracaoR;
  47.             fracaoR.numerador = (x.numerador * y.denominador) + (x.denominador * y.numerador);
  48.             fracaoR.denominador = (x.denominador * y.denominador);
  49.             return fracaoR;
  50.         }
  51.  
  52.         //função para subtrair duas frações
  53.         static EstruturaFracao Subtrair(EstruturaFracao x, EstruturaFracao y)
  54.         {
  55.             EstruturaFracao fracaoR;
  56.             fracaoR.numerador = (x.numerador * y.denominador) - (x.denominador * y.numerador);
  57.             fracaoR.denominador = (x.denominador * y.denominador);
  58.             return fracaoR;
  59.         }
  60.  
  61.         //função para multiplicar duas frações
  62.         static EstruturaFracao Multiplicar(EstruturaFracao x, EstruturaFracao y)
  63.         {
  64.             x.numerador = x.numerador * y.numerador;
  65.             x.denominador = x.denominador * y.denominador;
  66.             return x;
  67.         }
  68.  
  69.         //função para dividir duas frações
  70.         static EstruturaFracao Dividir(EstruturaFracao x, EstruturaFracao y)
  71.         {
  72.             x.numerador = x.numerador * y.denominador;
  73.             x.denominador = x.denominador * y.numerador;
  74.             return x;
  75.         }
  76.  
  77.         //função para elevar uma fração a uma potência
  78.         static EstruturaFracao Potencia(EstruturaFracao x, int potencia)
  79.         {
  80.             int contador = 2;
  81.             int numerador = x.numerador;
  82.             int denominador = x.denominador;
  83.             while (contador <= potencia)
  84.             {
  85.                 x.numerador = x.numerador * numerador;
  86.                 x.denominador = x.denominador * denominador;
  87.                 contador++;
  88.             }
  89.             return x;
  90.         }
  91.  
  92.  
  93.         static void Main(string[] args)
  94.         {
  95.             //Programa para ler os dados necessários para operar com frações
  96.             //Efetuar as operações acima
  97.             //Escrever os resultados em forma de fração simplificada
  98.             EstruturaFracao fracao1, fracao2, fracaoR;
  99.             int mdc = 0;
  100.             string escolha = "";
  101.             int potencia = 0;
  102.             while (escolha != "9")
  103.             {
  104.                 Console.WriteLine("Escolha uma operação:\n");
  105.                 Console.WriteLine("Operação 1: MDC de dois números inteiros positivos.\n");
  106.                 Console.WriteLine("Operação 2: Simplificar uma fração.\n");
  107.                 Console.WriteLine("Operação 3: Somar duas frações.\n");
  108.                 Console.WriteLine("Operação 4: Subtrair duas frações.\n");
  109.                 Console.WriteLine("Operação 5: Multiplicar Duas Frações.\n");
  110.                 Console.WriteLine("Operação 6: Divisão de Duas Frações.\n");
  111.                 Console.WriteLine("Operação 7: Potencialização de uma fração.\n");
  112.  
  113.                 Console.Write("\n\nEscolha: ");
  114.                 escolha = Console.ReadLine();
  115.                 Console.Clear();
  116.                 switch (escolha)
  117.                 {
  118.                     case ("1"):
  119.                         Console.WriteLine("Operação 1: MDC de dois números inteiros positivos.\n");
  120.                         Console.Write("Digite o numerador: ");
  121.                         fracao1.numerador = Int32.Parse(Console.ReadLine());
  122.                         Console.Write("Digite o denominador: ");
  123.                         fracao1.denominador = Int32.Parse(Console.ReadLine());
  124.                         mdc = MDC(fracao1);
  125.                         Console.WriteLine("O MDC de {0}/{1} é: {2}", fracao1.numerador, fracao1.denominador, mdc);
  126.                         Console.ReadKey();
  127.                         Console.Clear();
  128.                         break;
  129.                     case ("2"):
  130.                         Console.WriteLine("Operação 2: Simplificar uma fração.\n");
  131.                         Console.Write("Digite o numerador: ");
  132.                         fracao1.numerador = Int32.Parse(Console.ReadLine());
  133.                         Console.Write("Digite o denominador: ");
  134.                         fracao1.denominador = Int32.Parse(Console.ReadLine());
  135.                         Console.WriteLine("Fração:\t{0}/{1}", fracao1.numerador, fracao1.denominador);
  136.                         fracaoR = Simplificar(fracao1);
  137.                         Console.WriteLine("Fração Simplificada:\t{0}/{1}", fracaoR.numerador, fracaoR.denominador);
  138.                         Console.ReadKey();
  139.                         Console.Clear();
  140.                         break;
  141.                     case ("3"):
  142.                         Console.WriteLine("Operação 3: Somar duas frações.\n");
  143.                         Console.Write("Digite o numerador da primeira fração: ");
  144.                         fracao1.numerador = Int32.Parse(Console.ReadLine());
  145.                         Console.Write("Digite o denominador da primeira fração: ");
  146.                         fracao1.denominador = Int32.Parse(Console.ReadLine());
  147.                         Console.Write("Digite o numerador da segunda fração: ");
  148.                         fracao2.numerador = Int32.Parse(Console.ReadLine());
  149.                         Console.Write("Digite o denominador da segunda fração: ");
  150.                         fracao2.denominador = Int32.Parse(Console.ReadLine());
  151.                         fracaoR = Somar(fracao1, fracao2);
  152.                         Console.WriteLine("Resultado da soma de {0}/{1} e {2}/{3}: {4}/{5}", fracao1.numerador, fracao1.denominador, fracao2.numerador, fracao2.denominador, fracaoR.numerador, fracaoR.denominador);
  153.                         fracaoR = Simplificar(fracaoR);
  154.                         Console.WriteLine("Resultado simplifacado: {0}/{1}", fracaoR.numerador, fracaoR.denominador);
  155.                         Console.ReadKey();
  156.                         Console.Clear();
  157.                         break;
  158.                     case ("4"):
  159.                         Console.WriteLine("Operação 4: Subtrair duas frações.\n");
  160.                         Console.Write("Digite o numerador da primeira fração: ");
  161.                         fracao1.numerador = Int32.Parse(Console.ReadLine());
  162.                         Console.Write("Digite o denominador da primeira fração: ");
  163.                         fracao1.denominador = Int32.Parse(Console.ReadLine());
  164.                         Console.Write("Digite o numerador da segunda fração: ");
  165.                         fracao2.numerador = Int32.Parse(Console.ReadLine());
  166.                         Console.Write("Digite o denominador da segunda fração: ");
  167.                         fracao2.denominador = Int32.Parse(Console.ReadLine());
  168.                         fracaoR = Subtrair(fracao1, fracao2);
  169.                         Console.WriteLine("Resultado da subração de {0}/{1} e {2}/{3}: {4}/{5}", fracao1.numerador, fracao1.denominador, fracao2.numerador, fracao2.denominador, fracaoR.numerador, fracaoR.denominador);
  170.                         fracaoR = Simplificar(fracaoR);
  171.                         Console.WriteLine("Resultado simplifacado: {0}/{1}", fracaoR.numerador, fracaoR.denominador);
  172.                         Console.ReadKey();
  173.                         Console.Clear();
  174.                         break;
  175.                     case ("5"):
  176.                         Console.WriteLine("Operação 5: Multiplicar Duas Frações.\n");
  177.                         Console.Write("Digite o numerador da primeira fração: ");
  178.                         fracao1.numerador = Int32.Parse(Console.ReadLine());
  179.                         Console.Write("Digite o denominador da primeira fração: ");
  180.                         fracao1.denominador = Int32.Parse(Console.ReadLine());
  181.                         Console.Write("Digite o numerador da segunda fração: ");
  182.                         fracao2.numerador = Int32.Parse(Console.ReadLine());
  183.                         Console.Write("Digite o denominador da segunda fração: ");
  184.                         fracao2.denominador = Int32.Parse(Console.ReadLine());
  185.                         fracaoR = Multiplicar(fracao1, fracao2);
  186.                         Console.WriteLine("Resultado da multiplicação de {0}/{1} e {2}/{3}: {4}/{5}", fracao1.numerador, fracao1.denominador, fracao2.numerador, fracao2.denominador, fracaoR.numerador, fracaoR.denominador);
  187.                         fracaoR = Simplificar(fracaoR);
  188.                         Console.WriteLine("Resultado simplifacado: {0}/{1}", fracaoR.numerador, fracaoR.denominador);
  189.                         Console.ReadKey();
  190.                         Console.Clear();
  191.                         break;
  192.                     case ("6"):
  193.                         Console.WriteLine("Operação 6: Divisão de Duas Frações.\n");
  194.                         Console.Write("Digite o numerador da primeira fração: ");
  195.                         fracao1.numerador = Int32.Parse(Console.ReadLine());
  196.                         Console.Write("Digite o denominador da primeira fração: ");
  197.                         fracao1.denominador = Int32.Parse(Console.ReadLine());
  198.                         Console.Write("Digite o numerador da segunda fração: ");
  199.                         fracao2.numerador = Int32.Parse(Console.ReadLine());
  200.                         Console.Write("Digite o denominador da segunda fração: ");
  201.                         fracao2.denominador = Int32.Parse(Console.ReadLine());
  202.                         fracaoR = Dividir(fracao1, fracao2);
  203.                         Console.WriteLine("Resultado da divisão de {0}/{1} e {2}/{3}: {4}/{5}", fracao1.numerador, fracao1.denominador, fracao2.numerador, fracao2.denominador, fracaoR.numerador, fracaoR.denominador);
  204.                         fracaoR = Simplificar(fracaoR);
  205.                         Console.WriteLine("Resultado simplifacado: {0}/{1}", fracaoR.numerador, fracaoR.denominador);
  206.                         Console.ReadKey();
  207.                         Console.Clear();
  208.                         break;
  209.                     case ("7"):
  210.                         Console.WriteLine("Operação 7: Potencialização de uma fração.\n");
  211.                         Console.Write("Digite o numerador fração: ");
  212.                         fracao1.numerador = Int32.Parse(Console.ReadLine());
  213.                         Console.Write("Digite o denominador da fração: ");
  214.                         fracao1.denominador = Int32.Parse(Console.ReadLine());
  215.                         Console.Write("Digite a potencia: ");
  216.                         potencia = Int32.Parse(Console.ReadLine());
  217.                         fracaoR = Potencia(fracao1, potencia);
  218.                         Console.WriteLine("Resultado da potencialização de {0}/{1} a {2}: {3}/{4}", fracao1.numerador, fracao1.denominador, potencia, fracaoR.numerador, fracaoR.denominador);
  219.                         fracaoR = Simplificar(fracaoR);
  220.                         Console.WriteLine("Resultado simplifacado: {0}/{1}", fracaoR.numerador, fracaoR.denominador);
  221.                         Console.ReadKey();
  222.                         Console.Clear();
  223.                         break;
  224.  
  225.                 }
  226.             }            
  227.         }
  228.     }
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement