C++

azqswx -  
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

#include <iostream>
using namespace std;

typedef int plus(int);

int plus1(int x) {
return x+1;
}

int plus2(int x){
return x+2;
}

int main(int argc, char *argv[]) {
plus fonction = argv[1];

cout << fonction(2) << endl;

return 0;
}

Je comprends pas pourquoi sa marche pas et vous?

3 réponses

Friday_XIII
 
salut, peux tu être plus précis/précise :
as tu des erreurs de compilation ?
as tu activé la demande de paramètres ?
Où ta fonction fonction() ?
0
azqswx
 
l'erreur est à la compilation.

En fait ce que je voudrais faire c que l'utlisiateur tape ./main plus1 et la le programme affiche 3
et que si l'utilisateur tape ./main plus2 le programme affiche 4
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Alors pour ça le code source n'est pas du tout correct. Il faut que tu lises les arguments passés par l'utilisateur (dans argv) et que tu appelles la bonne fonction en conséquence. Je ne peux pas tester dans l'immédiat mais ce serait un truc du genre :
#include <string.h>
#include <stdio.h>

int plus1(int x){
  return x+1;
}

int plus2(int x){
  return x+2;
}

int main(int argc,char **argv){
  int n;

  if(argc != 3){
    fprintf(stderr,"usage: %s [plus1|plus2] integer_value\n",argv[0]);
    return 1;
  }

  n = atoi(argv[2]);

  if     (strcmp(argv[1],"plus1") == 0) printf("%d",plus1(n));
  else if(strcmp(argv[2],"plus2") == 0) printf("%d",plus2(n));
  else{
    fprintf(stderr,"The 1st argument must be equal to plus1 or plus2\n",argv[0]);
    return 2;
  }
  return 0;
}

Bonne chance
0