Menu

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

petit_penguin 1 Messages postés mercredi 7 septembre 2016Date d'inscription 7 septembre 2016 Dernière intervention - 7 sept. 2016 à 02:30 - Dernière réponse : jisisv 3662 Messages postés dimanche 18 mars 2001Date d'inscriptionModérateurStatut 15 janvier 2017 Dernière intervention
- 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 

2 réponses

Dalfab 326 Messages postés dimanche 7 février 2016Date d'inscription 21 avril 2018 Dernière intervention - 8 sept. 2016 à 01:33
0
Utile
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;
}
jisisv 3662 Messages postés dimanche 18 mars 2001Date d'inscriptionModérateurStatut 15 janvier 2017 Dernière intervention - 13 oct. 2016 à 10:52
0
Utile
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.