AJUDA EM CALCULADORA [DEV C++]

1. AJUDA EM CALCULADORA [DEV C++]

Matheus Martins de Siqueira
Mattheus19

(usa Outra)

Enviado em 15/05/2016 - 11:23h

Pessoal sou iniciante em programação e tenha um projeto de calculadora pra fazer , gostaria que me ajudassem a resolver o problema dessa calculadora , está dando erros porém não consigo identificar , agrdeço desde já.





#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
#include <math.h>

void main(){
setlocale(LC_ALL, "Portuguese");


int iMenuprincipal = 0;
int iSubmenu2 = 0;
int x, y, result2;
float n1, n2, result;

while (iMenuprincipal != 1) {
printf("\n0 - Iniciar o programa\n\n");
printf("\n1 - Finalizar o programa\n\n\n");
printf("Escolha a opção: ");
fflush(stdin);

scanf("%i",&iMenuprincipal);

switch (iMenuprincipal){
case 0:
iSubmenu2 = 0;
while (iSubmenu2 !=8) {
system("cls");
printf("\n1 - Soma\n");
printf("\n2 - Subtração\n");
printf("\n3 - Multiplicação\n");
printf("\n4 - Divisão\n");
printf("\n5 - Resto\n");
printf("\n6 - Potenciação\n");
printf("\n7 - Raiz Quadrada\n");
printf("\n8 - Média Aritmética\n");
printf("\n9 - RETORNAR AO MENU ANTERIOR\n\n\n");
printf("Escolha a opção: ");
fflush(stdin);
scanf("%i",&iSubmenu2);
}
switch (iSubmenu2){
case 1:
system("cls");
printf("SOMA\n\n");
printf("Digite o 1º número: ");
scanf("%f", &n1);
printf("Digite o 2º número: ");
scanf("%f", &n2);
result = n1+n2;
printf("O resultado da soma é: %.2f\n\n\n", result);
system("pause");
result = n1 = n2 = 0;
fflush(stdin);
break;


case 2:
system("cls");
printf("SUBTRAÇÃO\n\n");
printf("Digite o 1º número: ");
scanf("%f", &n1);
printf("Digite o 2º número: ");
scanf("%f", &n2);
result = n1-n2;
printf("O resultado da subtração é: %.2f\n\n\n", result);
system("pause");
result = n1 = n2 = 0;
fflush(stdin);
break;


case 3:
system("cls");
printf("MULTIPLICAÇÃO\n\n");
printf("Digite o 1º número:");
scanf("%f", &n1);
printf("Digite o 2º número:");
scanf("%f", &n2);
result = n1*n2;
printf("O resultado da multiplicação é: %.2f\n\n\n", result);
system("pause");
result = n1 = n2 = 0;
fflush(stdin);
break;

case 4:
system("cls");
printf("DIVISÃO\n\n");
printf("Digite o 1º número:");
scanf("%f", &n1);
printf("Digite o 2º número:");
scanf("%f", &n2);
result = n1/n2;
printf("O resultado da divisão é: %.2f\n\n\n", result);
system("pause");
result = n1 = n2 = 0;
fflush(stdin);
break;

case 5:
system("cls");
printf("RESTO\n\n");
printf("Digite o 1º número:");
scanf("%d", &x);
printf("Digite o 2º número:");
scanf("%d", &y);
result2 = x%y;
printf("o resto da divisão é: %.2d\n\n\n", result2);
system("pause");
fflush(stdin);
break;

case 6:
system("cls");
printf("POTENCIAÇÃO\n\n");
printf("Digite o valor da base:");
scanf("%f", &n1);
printf("Digite o valor do expoente:");
scanf("%f", &n2);
result = pow(n1,n2);
printf("O valor da potenciação é: %.2f\n\n\n", result);
system("pause");
fflush(stdin);
break;

case 7:
system("cls");
printf("RAIZ QUADRADA\n\n");
printf("Digite o valor da variável:");
scanf("%f", &n1);
printf("Digite o valor do expoente:");
scanf("%f", &n2);
result = sqrt(n1+n2);
printf("A raiz quadrada da soma dos valores é: %.2f\n\n\n", result);
system("pause");
result = n1 = n2 = 0;
fflush(stdin);
break;

case 8:
system("cls");
printf("MÉDIA ARITMÉTICA\n\n");
printf("Digite o 1º número:");
scanf("%f", &n1);
printf("Digite o 2º número:");
scanf("%f", &n2);
result = (n1+n2)/2;
printf("A média aritmética é: %.2f\n\n\n", result);
system("pause");
result = n1 = n2 = 0;
fflush(stdin);
break;
case 9:
system("cls");
break;

default:
printf("\n\nErro na escolha ! ");
printf("\n\n");
system("pause");
break;

}
}
break;


case 1:
system("cls");
printf("\n\n\n Programa encerrado com sucesso!\n\n\n\n VOLTE SEMPRE!!!");
break;

default:
printf("\n\n\nVocê não digitou a opção correta, digite corretamente\n\n\n ");
system("pause");
break;


}

}
printf("\n\n");



  


2. Re: AJUDA EM CALCULADORA [DEV C++]

felipe silva
lipman

(usa Debian)

Enviado em 15/05/2016 - 16:27h

Quando vc usa a função default vc deve abrir e fechar chaves, desse jeito:
default:{
printf("");
}

E notei também que está faltando fechar chaves no while e no switch, e mais, vc não pode usar um switch dentro de outro switch, quando precisar use if...
Uma curiosidade... Pra que vc quer limpar o buffer do teclado???
Mais uma coisa... Por onde anda o return que deveria estar no fim do código?


3. Re: AJUDA EM CALCULADORA [DEV C++]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 19/05/2016 - 16:48h

lipman escreveu:

Quando vc usa a função default vc deve abrir e fechar chaves, desse jeito:
default:{
printf("");
}


Falso. Não e necessário associar bloco específico a nenhum dos labels de um switch. Os labels de um switch são análogos aos labels usados com goto. Você só precisará de um sub-bloco dentro do bloco do switch se quiser introduzir uma variável com escopo limitado.

Veja.

switch(a){
default: // default não precisa ser o último label
fprintf(stderr, "Valor inválido!\n");
break;
case 1:
printf("Um.");
break;
case 0:
{
int a=rand(); // a com escopo local de bloco; ele oculta o mais externo, e não o sobrescreve.
printf("%d\n", a);
}
// Último label não precisa de break.
}


E notei também que está faltando fechar chaves no while e no switch, e mais, vc não pode usar um switch dentro de outro switch, quando precisar use if...


Falso. Cada switch tem sua própria expressão de controle e seu próprio bloco com conjunto de labels. Essa restrição que você inventou não existe.


4. Re: AJUDA EM CALCULADORA [DEV C++]

felipe silva
lipman

(usa Debian)

Enviado em 19/05/2016 - 18:23h

Amigo, digo sobre o switch pois já tentei usar um dentro do outro e dava erro, quando substitui pelo if o programa funcionou


5. Re: AJUDA EM CALCULADORA [DEV C++]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/05/2016 - 08:09h

lipman escreveu:

Amigo, digo sobre o switch pois já tentei usar um dentro do outro e dava erro, quando substitui pelo if o programa funcionou


Você poderia dar um exemplo de código? Porque o que você está alegando não se parece de modo nenhum com alguma restrição que eu conheça na linguagem.


6. Re: AJUDA EM CALCULADORA [DEV C++]

felipe silva
lipman

(usa Debian)

Enviado em 20/05/2016 - 14:10h

eu resumi um exemplo:


#include <stdio.h>
#include <stdlib.h>

int main ()
{
int r;

printf ("o que deseja?\n");
printf ("(1) jogar (2) não jogar\n");
scanf ("%i", &r);
switch (r){
case 1:
printf ("(1) portugues (2) matematica (3) ciencias\n");
scanf ("%i", &r);
break;

switch (r){
case 1:
printf ("");
break;
}
}


return EXIT_SUCCESS;
}



7. Re: AJUDA EM CALCULADORA [DEV C++]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/05/2016 - 14:43h

Por que usar duas vezes o mesmo nome de variável?
Ou o bloco {} considera diferente?

----------------------------------------------------------------------------------------------------------------
# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



8. Re: AJUDA EM CALCULADORA [DEV C++]

felipe silva
lipman

(usa Debian)

Enviado em 20/05/2016 - 15:17h

listeiro_037 escreveu:

Por que usar duas vezes o mesmo nome de variável?
Ou o bloco {} considera diferente?

----------------------------------------------------------------------------------------------------------------
# apt-get purge systemd (não é prá digitar isso!)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


apenas para resposta, creio que uma variavel resolve o caso


9. Re: AJUDA EM CALCULADORA [DEV C++]

Luiz Santos
luiztux

(usa Gentoo)

Enviado em 20/05/2016 - 16:06h

@lipman,

Você tirando o primeiro break o programa/exemplo funciona sem problemas.

-----------------------------------''----------------------------------

"If it moves, compile it."


10. Re: AJUDA EM CALCULADORA [DEV C++]

felipe silva
lipman

(usa Debian)

Enviado em 20/05/2016 - 16:18h

Estranho...
A primeira vez que fiz isso não tinha funcionado, estou vendo que me falta mais inteligência!
&#128515;


11. Re: AJUDA EM CALCULADORA [DEV C++]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/05/2016 - 16:29h

Veja se realinhando os seus switches você consegue o motivo de não fazer o que você gostaria que acontecesse.

scanf ("%i", &r);
switch (r){
case 1:
printf ("(1) portugues (2) matematica (3) ciencias\n");
scanf ("%i", &r);
break; // <-- Este break tira você do switch externo.

// <-- Nenhum label joga você aqui.
switch (r){ // <-- Este código é inalcançável.
case 1:
printf ("bla\n");
break;
}
}



12. Re: AJUDA EM CALCULADORA [DEV C++]

felipe silva
lipman

(usa Debian)

Enviado em 20/05/2016 - 16:51h

Entendi, o erro era meu!
:'(
Obrigado por me ajudar a entender o que tinha acontecido antes!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts