Baixe o app para aproveitar ainda mais
Prévia do material em texto
Calculadora de Números Complexos Algoritmo e Estrutura de Dados Main.c #include <stdio.h> #include <stdlib.h> #include <math.h> #include "ponto .h" struct numeros { float reau; float imag; }; int getimag(void){ float imag; printf("\nDigite seu numero imaginario \n"); scanf("%f", &imag); return(imag); } int getreal(void){ float real; printf("\nDigite seu numero real \n"); scanf("%f", &real); return(real); } int menu(void){ int opcao=1; printf("\n\tMENU DE OPCOES \n\n"); printf("1. Digitar numeros\n"); printf("2. Imprime os numeros\n"); printf("3. Limpar\n"); printf("4. Soma\n"); printf("5. EhReal \n"); printf("0. Sair\n"); printf("\nSua opcao eh:\t"); scanf("%d", &opcao); while (0>opcao>3){ printf("Digite um numero valido: \n"); scanf("%f", &opcao); } system("cls || clear"); return (opcao); } int pause(void){ printf("\n\nAperte qualquer tecla para continuar! \n"); getch(); system("cls || clear"); } int main(int argc, char *argv[]) { char saida[0]; float aux1, aux2; int vmenu=1; int i=0; Complexos *p, *q; do{ vmenu = menu(); switch(vmenu) { case 1: printf("\nDigite seu primeiro numero complexo: \n"); aux1 = getreal(); aux2 = getimag(); i = 1; p = pto_cria(aux1,aux2); printf("\nDigite seu segundo numero complexo: \n"); aux1 = getreal(); aux2 = getimag(); i = i + 1; q = pto_cria(aux1,aux2); pause(); break; case 2: if (i != 2){ pause(); vmenu = 1; break; } if (p != NULL){ pto_printa(p); } if (q != NULL){ pto_printa(q); } pause(); break; case 3: if (i==2){ pto_libera(p); pto_libera(q); printf("Os numeros foram limpos"); }else{ printf("Os numeros ja estao limpos"); } vmenu = 1; pause(); break; case 4: pto_printa(p); pto_printa(q); pto_soma(p,q); pause(); break; case 5: if (p != NULL){ pto_printa(p); pto_verfreal(p); } if (q != NULL){ pto_printa(q); pto_verfreal(q); } if ((q == NULL) && (p == NULL)){ vmenu = 1; } pause(); break; case 0: printf("Voce tem certeza que deseja sair? \n"); printf("S/N \n"); scanf("%s", &saida); while ((saida[0] != ('S')) && (saida[0] != ('s')) && (saida[0] != ('N')) && (saida[0] != ('n'))){ printf("Digite uma opcao valida: \n"); scanf("%s", &saida); } if((saida[0] == ('S'))|| (saida[0] == ('s'))){ break; }else { vmenu = 1; pause(); } default: printf(""); } } while(vmenu); return 0; } Ponto.h //biblioteca h typedef struct numeros Complexos; //cria par (open) Complexos* pto_cria(float reau, float imag); //libera o ponto void pto_libera(Complexos* p); //acessa os valores reais e img de um ponto void pto_acessa(Complexos* p, float* reau, float* imag); //atribui valores void pto_atribui(Complexos*p, float reau, float imag); //verifica se eh real void pto_verfreal(Complexos*p); //printa na forma bonita void pto_printa(Complexos*p); //soma os dois void pto_soma(Complexos*p, Complexos*q); Ponto.c #include <stdio.h> #include <stdlib.h> #include <math.h> #include "ponto .h" //definiçaõ do tipo struct numeros { float reau; float imag; }; Complexos* pto_cria(float reau, float imag){ Complexos* p = (Complexos*) malloc(sizeof(Complexos)); if(p != NULL){ p -> reau = reau; p -> imag = imag; } return p; } void pto_libera(Complexos* p){ free(p); } void pto_acessa(Complexos* p, float* reau, float* imag){ *reau = p -> reau; *imag = p -> imag; } void pto_atribui(Complexos*p, float reau, float imag){ p -> reau = reau; p -> imag = imag; } void pto_verfreal(Complexos* p){ float R, I, teste; R = p->reau; I = p->imag; printf("O numero complexo: %.2f e %.2f i\n", R,I); if ((R == 0) && (I != 0)){ printf("Eh um numero imaginario puro \n"); } if ((R != 0) && (I == 0)){ printf("Eh um numero real \n"); } if (((R == 0) && (I == 0)) || ((R != 0) && (I != 0))){ printf("Eh um numero complexo \n"); } } void pto_printa(Complexos* p){ printf("Os numero(s) complexo(s) foram: %.2f + %.2f i \n", p->reau, p->imag); } void pto_soma(Complexos*p, Complexos*q){ float Somareal, Somaimag; Somareal = (p-> reau) + (q-> reau); Somaimag = (p-> imag) + (q-> imag); printf("A soma dos reais eh: %.2f \n", Somareal); printf("A soma dos imaginarios eh: %.2f i \n", Somaimag); printf("O numero eh: %.2f + %.2f i", Somareal, Somaimag); }
Compartilhar