Meu professor pediu que criarmos um menu, e o usuario escolheria uma opção que lhe dizia que o numero fornecido pelo usuario era primo, triangular...
No entanto assim que executo o código ele entra em um loop infinito. o que está errado nele???
Só poso usar essar estrururas.
#include<stdio.h> #include<math.h>
int primo(int p){ int i,r=0; for(i=2;i<p;i++){ if(p%i==0){
r=1; break; } } return r; }
int perfeito(int pe){ int total=0,c=1, r=1; while(c<pe){ if (pe%c==0){ total= total+c ; c++; } if(pe==total) r=0; return r; } }
int triangular(int t){ int i, c, r=1; for (c=0;c<=i;c++){ if(c*(c+1)*(c+2)==i) r=0; return r; } }
int abundante(int a){ int soma=0, c, r=1; for(c=1;c<a;c++){ if (a%c==0) soma+= c; if(soma>a) r=0; return r; } }
int main(){ int n, i,c=1,j, k, l, numero; printf("\n1-Declarar um valor.\n"); printf("2-Conferi se é primo.\n"); printf("3-Conferi se é perfeito.\n"); printf("4-Conferi se é triangular.\n"); printf("5-Confere se é abundante.\n"); printf("6-Sair");
while(c!=6){ switch(numero){
case 1: printf("Digite um valor:"); scanf("%d", &n); break;
case 2: k= primo(n); if (k==0) printf("0"); else printf("1"); break;
case 3: j=perfeito(n); if (j==0) printf("0"); else printf("1"); break;
case 4: i=triangular(n); if(i==0) printf("0"); else printf("1"); break;
case 5: l=abundante(n); if (l==0) printf("0"); else printf("1"); break;
case 6: c=6; break; default: printf("Opcao invalida"); break; } } }