Appel d'une fonction

Bonjour,
comment je peut saisir un entier different de -1 non nul et de retourner cet entier. la fonction doit retourner 0 si l'entier saisie est -1.comment je peut afficher une liste qui se termine par -1.
voila mon programme qui toujours ne marche pas. veuiller corriger les erreurs svp.
#include<stdio.h>

/********saisir************/
int saisie(int a)
{
if(a==-1)
return 0;
else
if(a!=0)
return(a);

}
void main()
{
int i,a,p;
for(i=1;i!=-1;i++)
{printf("a=");
scanf("%d",&a);
printf("\n");}
p=saisie(a);

}

merci d'avance pour votre aide.
Configuration: Windows XP
Firefox 3.5.5

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. ne jamais fait plus d'une seul return dans une fonction c'est mocheeeee

    j'ai pas bien compris l'exercice mais
    /********saisir************/
    int saisie(int a)
    {
    int nb;
    if(a==-1)
    nb=0;
    else
    nb=a;
    return nb;
    }

    je croit sa va marche

    NoBiE
    1. j'ai corrigé le programme et la compilation a terminé avec succes mais le je peut pas faire "run" pk?

      voila le petit programme :

      #include<stdio.h>
      
      /********saisir************/
      int saisie(int a)
      {
      int nb;
      if(a==-1)
      nb=0;
      else
      nb=a;
      return nb;
      }
      
       void main()
      {
       int i,a,p;
       do
       {printf("a=");
       scanf("%d",&a);
       printf("\n");
       }while(a!=-1);
      
       p=saisie(a);
       printf("%d",&p);
      }
      1. Il y a un tout petit peu plus simple:
        int saisie(int a)
        {
          if (a == -1)
            a = 0;
          return a;
        }
        Ce qui en fait une fonction si simple qu'on peut se poser la question: ne serait-il pas plus simple de faire le test directement au lieu d'appeler la fonction ?
        Bonne continuation.
      2. @loupiusOn peut faire plus simple:
        int saisie(int a)
        {
          return (a == -1 ? 0 : a);
        }
        Et toc ;-)