Probleme d'execution de code sous linux

Résolu
petit_penguin Messages postés 1 Statut Membre -  
jisisv Messages postés 3678 Statut Modérateur -
salut
je suis nouveau sous linuxmint ,$
j'ai executer mon code avec ./a.out il m'a executer que la fonction "main" il a pas fait l'appelle aux fonctions de remplissage de deux tableaux et voilà le code:
#include <stdio.h>
#include <stdlib.h>
int remplir1 (int *A,int n);
int remplir2 (int *B,int m);
int main(int argc,char* argv[])
{
 int n,m,i,j ;
 scanf("%d",&n);
 scanf("%d",&m);
 int A[n+m],B[m];
 int remplir1 (int *A,int n);
 int remplir2 (int *B,int m);

return 0;

}

//corps de la fonction
int remplir1 (int *A,int n)
{
int i;
for(i=0;i<n;i++)
 {
 scanf("%d",&A[i]);
 }

return *A;
}

int remplir2 (int*B,int m)
{
int j;
for(j=0;j<m;j++)
 {
 scanf("%d",&B[j]);
 }

return *B;
}


Merci d'avance..!?

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,
    Il y a eu des erreurs à la compilation, le compilateurs a dû t'indiquer que les les lignes 11 et 12 sont incorrectes.
    Pour appeler une fonction, on doit lui passer des paramètres.
    int main()
    {
      int  n , m;
      scanf( "%d" , &n );
      scanf( "%d" , &m );
      int  ta[n+m] , tb[m];
    
      remplir1( ta , n );
      remplir2( tb , m );
    
      return 0;
    }
    0
  2. jisisv Messages postés 3678 Statut Modérateur 936
     
    Pourquoi deux fonctions aux corps fonctionnellement identiques remplir1, remplir2 ?
    m et
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    
    void remplir (int *A,int n);
    
    int main(int argc,char* argv[])
    {
      int n,m ;
      int *A, *B;
    
      puts("Taille tableau A: ");
      scanf("%d", &n);
      puts("Taille tableau B: ");
      scanf("%d", &m);
    
      A = calloc(n, sizeof(int));
      if ( !A )
        {
          perror(strerror(errno));
          return EXIT_FAILURE;
        }
      
      B = calloc(n, sizeof(int));
      if ( !B )
        {
          perror(strerror(errno));
          return EXIT_FAILURE;
        }
    
    
      remplir (A, n);
      remplir (B, m);
      return EXIT_SUCCESS;
    
    }
    
    //corps de la fonction remplir
    void remplir (int *A,int n)
    {  
      int i;
    
      for(i=0 ;i<n; i++)
        {
          printf("Elément[%d]: ", i);
          scanf("%d", A + i);
        }
    }


    La déclaration int A[n+m],B[m]; n'a pas de sens en C. Il faut définir un array statique ou faire de l'allocation dynamique.
    0