Tableaux en langage C

Désolé mais je trouve ca un peu trop compliqué. :sweet: Ca fait beaucoup de variables en plus à rajouter.

Pourquoi ma méthode ne peut pas fonctionner ?

Et Deltree j’ai essayé de faire le scanf("%ld",&curtab_joueur[i][1]) mais ca ne fonctionne pas non plus…

Je viens de m’appercevoir que ce que je faisais au départ fonctionnait sauf qu’après avoir incrémenté le i la valeur que je sauvegarde précédemment dans le tableau s’efface pour se changer en 1.
Donc je pense que la valeur que je rentre n’est pas correctement sauvegardé dans le tableau ou que quelque chose d’autre écrase ma valeur… Je sais pas trop…

Je n’ai créé ces variables que pour rendre le code d’ajout d’une valeur à un élément n à la ligne x plus facile à utiliser … :neutre:

Bonjour,

J’ai intégré la dernière fonction dans mon programme en modifiant les variables que j’ai déjà et quand je compile j’ai une erreur : syntax error of input à la dernière ligne de mon main c’est à dire “}”.
Je ne pige pas ce que ca veut dire ??? et ce qui est faux ???

Est ce que j’ai besoin de poster mon prog en entier car il fait 286 lignes…

PS : dans le dernier post de code “num_perso_ordi_column_set_at(tab_ordi, current_col, current_gamer, current_value);” est appelé dans le main alors que moi je l’appelle dans une autre fonction. Ca peut venir de la ?

Il faudrait que je vois les lignes où tu appels la fonction concernée.

void tab_joueur_save(int **tab_joueur, const int col_idx, const int idx, int value)
{

     int ** curtab;
     int *  curcol;

     curtab = &tab_joueur[col_idx];
     curcol = &*curtab[0];
     curcol[idx] = value;
}


char tab_persoj1[20];
char tab_persoj2[20];
char tab_persoj3[20];
char tab_persoj4[20];
char tab_persoj5[20];

long choix_metier (int **tab_joueur)
{
     int ** curtab_joueur = &*tab_joueur;
     int *curcol_joueur = &*curtab_joueur[0];
     int i;
     int curcol=1;
     int temp;
          
     printf("\nComment s'appelle le personnage numero 0 ? ");
     scanf("%ls", tab_persoj1 );
     printf("\nComment s'appelle le personnage numero 1 ? ");
     scanf("%ls", tab_persoj2 );
     printf("\nComment s'appelle le personnage numero 2 ? ");
     scanf("%ls", tab_persoj3 );
     printf("\nComment s'appelle le personnage numero 3 ? ");
     scanf("%ls", tab_persoj4 );
     printf("\nComment s'appelle le personnage numero 4 ? ");
     scanf("%ls", tab_persoj5 );

     printf("\nLes choix de metier:\n\n 1: Guerrier \n 2: Pretre (sauf pour les Elfes) \n 3: Mage (sauf pour les Nains) \n");
     switch (tab_joueur[0][4])
     {
            case 1:
                 {
                 for (i=0; i<5; i++)
                 {
                      do
                      {
                        printf("\nChoix de metier pour le personnage %ld : ", i);
                        scanf("%ld", &temp);
                        printf("%ld", temp);
                        tab_joueur_save(tab_joueur, curcol, i, temp);
                                                
                        printf("%ld\t", tab_joueur[0][1]);
                        printf("%ld\t", tab_joueur[1][1]);
                        printf("%ld\t", tab_joueur[2][1]);
                        printf("%ld\t", tab_joueur[3][1]);
                        printf("%ld", tab_joueur[4][1]);
                        
                      }while (tab_joueur[i][1]>=4);
                      tab_joueur[i][1]=i;
                      if (tab_joueur[i][1]=1)
                      {
                          tab_joueur[i][3]=tab_joueur[i][3]+2;
                      }    
                 }
                 break;

:slight_smile:

Je ne le vois pas :neutre:
Je pense qu’un petit upload de ton fichier serait plus simple :wink:

http://www.megaupload.com/fr/?d=K7KOSXJJ

Le prog est là.

C’est bien ce que je pensais, tu as juste trop commenté le bloc du second if dans la fonction choix_metier, ça donne, une fois corrigé :


long choix_metier (int **tab_joueur)
{
     int ** curtab_joueur = &*tab_joueur;
     int *curcol_joueur = &*curtab_joueur[0];
     int i;
     int curcol=1;
     int temp;
          
     printf("\nComment s'appelle le personnage numero 0 ? ");
     scanf("%ls", tab_persoj1 );
     printf("\nComment s'appelle le personnage numero 1 ? ");
     scanf("%ls", tab_persoj2 );
     printf("\nComment s'appelle le personnage numero 2 ? ");
     scanf("%ls", tab_persoj3 );
     printf("\nComment s'appelle le personnage numero 3 ? ");
     scanf("%ls", tab_persoj4 );
     printf("\nComment s'appelle le personnage numero 4 ? ");
     scanf("%ls", tab_persoj5 );

     printf("\nLes choix de metier:\n\n 1: Guerrier \n 2: Pretre (sauf pour les Elfes) \n 3: Mage (sauf pour les Nains) \n");
     switch (tab_joueur[0][4])
     {
            case 1:
            {
                 for (i=0; i<5; i++)
                 {
                      do
                      {
                        printf("\nChoix de metier pour le personnage %ld : ", i);
                        scanf("%ld", &temp);
                        printf("%ld", temp);
                        tab_joueur_save(tab_joueur, curcol, i, temp);
                                                
                        printf("%ld\t", tab_joueur[0][1]);
                        printf("%ld\t", tab_joueur[1][1]);
                        printf("%ld\t", tab_joueur[2][1]);
                        printf("%ld\t", tab_joueur[3][1]);
                        printf("%ld", tab_joueur[4][1]);
                        
                      } while (tab_joueur[i][1]>=4);
                      
                      tab_joueur[i][1]=i;
                      if (tab_joueur[i][1]=1)
                      {
                          tab_joueur[i][3]=tab_joueur[i][3]+2;
                      }    
                 } // for
                 break;
            } // case
            /*case 2:
                 for (i=0; i<5; i++)
                 {
                      do
                      {
                        printf("\nChoix de metier pour le personnage %d : ", i);
                        scanf("%ld",&tab_joueur[i][1]);
                      }while (tab_joueur[i][1]>=3);
                      tab_joueur[i][1]=i;
                      if (tab_joueur[i][1]=1)
                      {
                          tab_joueur[i][3]=tab_joueur[i][3]+2;
                      }
                 }
                 break;
            case 3:
                 for (i=0; i<5; i++)
                 {
                      do
                      {
                        printf("\nChoix de metier pour le personnage %d : ", i);
                        scanf("%ld",&tab_joueur[i][1]);
                      }while (tab_joueur[i][1]=2 || tab_joueur[i][1]>3);
                      tab_joueur[i][1]=i;
                      if (tab_joueur[i][1]=1)
                      {
                          tab_joueur[i][3]=tab_joueur[i][3]+2;
                      }
                 }
                 break;
     */
     } // switch
}

Perso, je met en commentaire à quoi correspond l’accolade lorsqu’il y en a beaucoup histoire de ne pas perdre le fil :wink:
A noter que “%ld” <== c’est pour les long double, un simple “%d” suffit et un simple “%s” suffit au lieu d’un “%ls’” :wink:

Ok merci ! Cétait bête comme erreur ! :smiley:

Pas mal ta technique pour ne pas se perdre dans les accolades !

Merci. :slight_smile:

Mais maintenant avec la nouvelle fonction le for du premier case ne fonctionne plus … :smiley:

J’ai pas trop zieuté le code mais j’ai l’impression que tu te prends pas mal la tête avec un tableau, je pense qu’une structure contenant les informations dont tu auras besoin (nom du perso, sa race, ses points de vue, sa force etc …) avec réallocation en cas d’ajout d’un perso sera plus simple, une liste chaine sera même un choix judicieux et plus efficace parce que la, tu vas vite t’emmêler les pinceaux et avoir un code horrible au final.

Oui c’est vrai… mais bon…

Je te remercie pour ton aide.

Bon finalement j’ai décidé de passer les tableaux en variables globales et tout fonctionne !

Je te dis encore un grand merci et si j’ai encore un problème je sais que tu es là !

Merci.

bonsoir
mon probleme consiste a stocker des données dans un tableau dynamique en effet j’ai crée une application en language C qui permet de gestionner les comptes bancaie.Apres chaque modification d’un solde initiale d’un client je veux stoker la nouvel somme dans le tableau et a la fin il faut aficher tous les changements,comme si on crée l’historique de l’application.
Merci pour votre aide.
Edité le 17/05/2008 à 23:36