Jump to content
Sign in to follow this  
unnamed

Teorema de Pitágoras / Formula Resolvente

Recommended Posts

unnamed

Não tinha nada que fazer então decidi fazer uma calculador que resolve Teoremas de Pitágoras e Formulas Resolventes x)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double op3, square1, square2, soma, opA, opB, opC, delta, raiz, resultado1, resultado2 ;
            string escolha;
            label4:
            Console.WriteLine("Teorema de Pitágoras(1) ou Fórmula Resolvente(2) ?");
            escolha = Console.ReadLine();
            Console.WriteLine();

            if (escolha == "1")
                goto label1;

            else if (escolha == "2")
                goto label2;


            label1:
            Console.WriteLine("--------------Teorema de Pitágoras--------------");
            Console.WriteLine("Valor de 'A': ");
            var op1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            if (op1 <= 0)
            {
                Console.WriteLine("Não podes ter números iguais ou menores que 0 num triângulo!");
                Console.WriteLine("--------------------------------------------------------");
                Console.WriteLine();
                goto label1;
            }

            Console.WriteLine("Valor de 'B': ");
            var op2 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            if (op2 <= 0)
            {
                Console.WriteLine("Não podes ter números iguais ou menores que 0 num triângulo!");
                Console.WriteLine("--------------------------------------------------------");
                Console.WriteLine();
                goto label1;
                
            }

            square1 = op1 * op1;
            square2 = op2 * op2;
            soma = square1 + square2;

            Console.WriteLine("C = √" + square1 + " + " + square2);
            Console.WriteLine("C = √" + soma);

            op3 = Math.Sqrt( op1 * op1 + op2 * op2);

            Console.WriteLine("C = " + op3);
            goto label3;

        label2:

            Console.WriteLine("--------------Fóruma Resolvente!--------------");

            Console.WriteLine("Valor de A:");
            opA = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            Console.WriteLine("Valor de B:");
            opB = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            Console.WriteLine("Valor de C:");
            opC = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            delta = opB * opB - 4 * opA * opC;
            if (delta < 0)
            {
                Console.WriteLine("Equação Impossivel!");
                Console.WriteLine();
                goto label3;
            }
            raiz = Math.Sqrt(delta);
            resultado1 = (-opB + raiz) / (2 * opA);
            resultado2 = (-opB - raiz) / (2 * opA);


            Console.WriteLine("                 " + -opB + " +/- " + "√( " + opB + "² - 4" + opA + " * " + opC + " )");
            Console.WriteLine("X = -----------------------------------------------------");
            Console.WriteLine("                      2 * " + opA);

            Console.WriteLine();

            Console.WriteLine("                 " + -opB + " +/- " + "√( " + delta + " )");
            Console.WriteLine("X = -----------------------------------------------------");
            Console.WriteLine("                      " + 2 * opA);

            Console.WriteLine();

            Console.WriteLine("X = " + resultado1 + "    /    " + resultado2);


            Console.WriteLine();
            

        label3:
            string repetir;
            Console.WriteLine("Repetir? (s/n)");
            repetir = Console.ReadLine();
            Console.WriteLine();

            if (repetir == "s")
                goto label4;
            
        }
    }
}

Agradecia sugestões para melhorar a calculadora em termos de simplicidade de código como falhas que possa ter.

Share this post


Link to post
Share on other sites
softklin

Não testei o código, mas uma coisa que poderias começar por melhorar a utilização de goto's: podes substituir isso por ciclos ou funções externas.

Assim o teu código fica mais linear, e não andas para cima e para baixo a fazer debug manual do código.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
unnamed

sou muito novo nisto podias então não sei o que é isso mas quando puder vou investigar isso com a ajuda da google :D

Share this post


Link to post
Share on other sites
softklin

Procurei por artigos sobre funções, e encontrei este:

http://csharp.net-tutorials.com/basics/functions/

Se quiseres, deixo-te ainda um desafio: repara que tu separaste todo o código com labels, de modo a separares os diversos blocos de código. O que te proponho é que passes essas labels para funções.

Dica: cria cada função com esta assinatura (1ª linha da função):

static void nomeDaFunção()

todas fora do main(). Se tiveres dúvidas, deixa-as aqui, que o pessoal ajuda-te :D


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
unnamed

Obrigado por toda a ajuda! :D

assim?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {

        static void teoremaPitagoras()
        {
            double op3, square1, square2, soma;


            Console.WriteLine("--------------Teorema de Pitágoras--------------");
            Console.WriteLine("Valor de 'A': ");
            var op1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            if (op1 <= 0)
            {
                Console.WriteLine("Não podes ter números iguais ou menores que 0 num triângulo!");
                Console.WriteLine("--------------------------------------------------------");
                teoremaPitagoras();
                Console.WriteLine();

            }

            Console.WriteLine("Valor de 'B': ");
            var op2 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            if (op2 <= 0)
            {
                Console.WriteLine("Não podes ter números iguais ou menores que 0 num triângulo!");
                Console.WriteLine("--------------------------------------------------------");
                teoremaPitagoras();
                Console.WriteLine();


            }

            square1 = op1 * op1;
            square2 = op2 * op2;
            soma = square1 + square2;

            Console.WriteLine("C = √" + square1 + " + " + square2);
            Console.WriteLine("C = √" + soma);

            op3 = Math.Sqrt(op1 * op1 + op2 * op2);

            Console.WriteLine("C = " + op3);

            repetir();
        }

        static void formulaResolvente()
        {

            double opA, opB, opC, delta, raiz, resultado1, resultado2;


            Console.WriteLine("--------------Fóruma Resolvente!--------------");

            Console.WriteLine("Valor de A:");
            opA = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            Console.WriteLine("Valor de B:");
            opB = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            Console.WriteLine("Valor de C:");
            opC = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();

            delta = opB * opB - 4 * opA * opC;
            if (delta < 0)
            {
                Console.WriteLine("Equação Impossivel!");
                formulaResolvente();
                Console.WriteLine();

            }
            raiz = Math.Sqrt(delta);
            resultado1 = (-opB + raiz) / (2 * opA);
            resultado2 = (-opB - raiz) / (2 * opA);


            Console.WriteLine("                 " + -opB + " +/- " + "√( " + opB + "² - 4" + opA + " * " + opC + " )");
            Console.WriteLine("X = -----------------------------------------------------");
            Console.WriteLine("                      2 * " + opA);

            Console.WriteLine();

            Console.WriteLine("                 " + -opB + " +/- " + "√( " + delta + " )");
            Console.WriteLine("X = -----------------------------------------------------");
            Console.WriteLine("                      " + 2 * opA);

            Console.WriteLine();

            Console.WriteLine("X = " + resultado1 + "    /    " + resultado2);


            Console.WriteLine();
            repetir();

        }

        static void escolha()
        {
            string escolha;

            Console.WriteLine("Teorema de Pitágoras(1) ou Fórmula Resolvente(2) ?");
            escolha = Console.ReadLine();
            Console.WriteLine();

            if (escolha == "1")
                teoremaPitagoras();

            else if (escolha == "2")
                formulaResolvente();
        }

        static void repetir()
        {
            string repetir;
            Console.WriteLine();
            Console.WriteLine("Repetir? (s/n)");
            repetir = Console.ReadLine();
            Console.WriteLine();

            if (repetir == "s")
                escolha();

            else
                finish();
        }




        static void Main(string[] args)
        {

            escolha();


       }

                static void finish()
        {
            Console.WriteLine("Adeus!");
        }


    }
}

Share this post


Link to post
Share on other sites
softklin

É isso mesmo, muito bom. Repara que agora tens as funções convenientemente separadas, e assim se tiveres problemas numa função, não precisas de andar pelo resto do código à procura.

De resto, acho que está bom, desta vez já corri o código. Só os caracteres especiais como o símbolo da raiz aparecem com outra forma, mas isso não é muito importante. Tenta adicionar mais funções matemáticas ao teu programa, por exemplo, calculo de ângulos ou assim.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
unnamed

Vou tentar. O unico problema é que ainda estou no 10º e ainda por cima num curso de artes então não há muita matemática xD

Se me lembrar de mais alguma coisa acrescento :D

Mas se tiverem sugestões para coisas que possa acrescentar também agradecia xb

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.