Signaler

Probleme d'execution de code sous linux [Résolu]

Posez votre question petit_penguin 1Messages postés mercredi 7 septembre 2016Date d'inscription 7 septembre 2016 Dernière intervention - Dernière réponse le 13 oct. 2016 à 10:52
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.
Afficher la suite 
Utile
+0
moins plus
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;
}
Ajouter un commentaire
Utile
+0
moins plus
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.
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !