Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

unnamed

Teorema de Pitágoras / Formula Resolvente

Mensagens Recomendadas

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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bruno1234

Outra sugestão que deixo é não teres a tua lógica no método main.

O main serve apenas para iniciares a tua aplicação.

Tudo o resto deve estar em classes com métodos, campos, propriedades, etc... que sirvam para a tua aplicação.


Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!");
        }


    }
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.