Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jeffersonpsilva

Problema com função

Recommended Posts

Boa noite pessoal, estou com um problema neste programa. Cujo o enunciado é esse:

Desenvolva um programa em C que leia dois números e chame uma função que retorne
se os valores digitados são iguais ou diferentes. O programa deve ficar em execução até ser
digitado um valor negativo para o primeiro número.


O programa roda, mas o problema é quando eu vou digitar os números novamente, pois ele fecha sozinho, já quebrei a cabeça e não consegui resolver.

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

int n1,n2;

void entrada(){
   printf("Digite um numero: ");
   scanf("%d",&n1);
     if(n1>=0){
   
   printf("Digite outro numero: ");
   scanf("%d",&n2);
  }
     else
   exit(1);
}   
     
void comp(){
   if(n1!=n2)
   {
     printf("Numeros diferentes.\n\n");
     entrada();
}
   else
     printf("Numeros iguais.\n\n"); 
     entrada();
}

main(){
     entrada();
     comp();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
void comp(int n1, int n2){
   if(n1!=n2)
   {
     printf("Numeros diferentes.\n\n");
     // entrada(); ????
}
   else
     printf("Numeros iguais.\n\n"); 
     // entrada(); <--- por que isso?
}

E na hora de chamá-la basta passar os dois números como argumento para a função.

 

void entrada(){
   printf("Digite um numero: ");
   scanf("%d",&n1);
   
   printf("Digite outro numero: ");
   scanf("%d",&n2);

   comp (n1, n2); // Aqui é feita a comparação.
}   

A função main ficará assim:

 

int main(){
     entrada();
}

abç;

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

void comp(int n1, int n2){
   if(n1!=n2)
   {
     printf("Numeros diferentes.\n\n");
     // entrada(); ????
}
   else
     printf("Numeros iguais.\n\n"); 
     // entrada(); <--- por que isso?
}

E na hora de chamá-la basta passar os dois números como argumento para a função.

 

void entrada(){
   printf("Digite um numero: ");
   scanf("%d",&n1);
   
   printf("Digite outro numero: ");
   scanf("%d",&n2);

   comp (n1, n2); // Aqui é feita a comparação.
}   

A função main ficará assim:

 

int main(){
     entrada();
}

abç;

 

Agradeço pela resposta amigo. Mas eu ainda não consegui fazer com que o programa repita a entrada... por isso eu coloquei o entrada();, pois eu preciso que ele chame esse procedimento depois que mostrar o resultado. valeu desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas adicione um loop para a função de entrada. O loop é executado enquanto o primeiro número for diferente de negativo (>= 0). As chamadas da função entrada() dentro da função comp() não são necessárias.

void entrada() {
  int n1 = 0, n2 = 0;
 
  do { // Executar ...
    printf("Digite um numero: ");
    scanf("%d",&n1);
 
    printf("Digite outro numero: ");
    scanf("%d",&n2);
   
    comp (n1, n2); // Aqui é feita a comparação.
  } while (n1 >= 0); // ... Enquanto n1 não for negativo.
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.