Help c'est simple mais je n'y arrive pas

Signaler
Messages postés
15
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
19 février 2003
-
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007
-
Voila, c'est simple mais ca ne compile pas, le compilateur VS me sort:
:\source\tablo\Tablo1.cpp(17) : error C2065: 'PrintIdeInfo' : undeclared identifier
C:\source\tablo\Tablo1.cpp(23) : error C2448: '' : function-style initializer appears to be a function definition
Error executing cl.exe.

Tablo1.exe - 2 error(s), 0 warning(s)

Voici la source:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

int nbdrive=1;
int hard=10;
int* Tab1 = new int [1];

void main()
{

for (int i=0; i<11; i++)
{
nbdrive +=1;
PrintIdeInfo (nbdrive , hard);
}
}

void PrintIdeInfo ( nbdrive, hard)
{
hard +=10;
Tab1[nbdrive--]= hard;
int* Tab2 = new int [nbdrive++];
for (int j=0; j<nbdrive++; j++)
{Tab2[j]=0;}
for (int i=0; i<nbdrive; i++)
{Tab2[i]=Tab1[i];}

Tab1=Tab2;
delete Tab2;
}

Merci bcp à ceux et à celles qui ont la solution, les autres également...

4 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Oui c'est un problème tout simple, tu as oublié de définir le prototype de ta fonction comme ceci:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

void PrintIdeInfo (int nbdrive, int hard);

// Reste du code ...

Par contre, si tu utilises des variables globales et non les paramètres passées à ta fonction, tu peux la remplacer par:

void PrintIdeInfo ();
Messages postés
15
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
19 février 2003

Merci Kaid, je viens d'ailleur de trouvé la solution à mon problm...
Je laisse le code pour ceux qui seraient interessés:

Ce code permet de créer un tableau de façon dynamque, avec la specificité de s'agrandir à chaques appel de la fonction. Cette fonction à besoin d'un tel tableau pout pouvoir stocker son nouveaux résultant.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

int nb=0;
int info=0;
int* Tab1 = new int [1];

void PrintInfo ()//void PrintInfo (int nb,int info)
{

nb +=1;
info +=1;
Tab1[nb-1]= info;
int * Tab2 = new int [nb+1];
printf("Adresse de Tab2: %p ---------Creation de Tab2 \n",Tab2);

for (int j=0; j<nb+1; j++)
{Tab2[j]=0;}

for (int i=0; i<nb; i++)
{Tab2[i]=Tab1[i];}

Tab1=Tab2;
printf("Adresse de Tab1: %p ---------Tab1 doit prendre l'@ de Tab2 \n",Tab1);
// printf("Adresse de Tab2: %p \n",Tab2);

for (int z=0; z<nb+1; z++)
{printf("Case: %d de Tab1 vaut %d \n", z, Tab1[z]);}

}

void main()
{
printf("Adresse de Tab1: %p \n",Tab1);
for (int i=0; i<4; i++)
{
//PrintInfo (nb , info);
PrintInfo ();
// printf("info: %d \n", info);
// printf("info: %d \n", nb);
}

}
Messages postés
15
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
19 février 2003

Merci Kaid, je viens d'ailleur de trouvé la solution à mon problm...
Je laisse le code pour ceux qui seraient interessés:

Ce code permet de créer un tableau de façon dynamque, avec la specificité de s'agrandir à chaques appel de la fonction. Cette fonction à besoin d'un tel tableau pout pouvoir stocker son nouveaux résultant.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>

int nb=0;
int info=0;
int* Tab1 = new int [1];

void PrintInfo ()
{

nb +=1;
info +=1;
Tab1[nb-1]= info;
int * Tab2 = new int [nb+1];
printf("Adresse de Tab2: %p ---------Creation de Tab2 \n",Tab2);

for (int j=0; j<nb+1; j++)
{Tab2[j]=0;}

for (int i=0; i<nb; i++)
{Tab2[i]=Tab1[i];}

Tab1=Tab2;
printf("Adresse de Tab1: %p ---------Tab1 doit prendre l'@ de Tab2 \n",Tab1);
// printf("Adresse de Tab2: %p \n",Tab2);

for (int z=0; z<nb+1; z++)
{printf("Case: %d de Tab1 vaut %d \n", z, Tab1[z]);}

}

void main()
{
printf("Adresse de Tab1: %p \n",Tab1);
for (int i=0; i<4; i++)
{
//PrintInfo (nb , info);
PrintInfo ();
// printf("info: %d \n", info);
// printf("info: %d \n", nb);
}

}
Messages postés
286
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 juillet 2007

lorsque tu appel ta fonction ds ta boucle for de main,
nbdrive +=1;
> PrintIdeInfo (nbdrive , hard);

tu fourni des paramètres réels qui on le meme nom que les parametes réel... il te dit donc que l'instrucion ressemble a une déclaration... pour remédier a cela... change soit le nom de ton tes varaibles et tableaus nbdrive et hard,soit dans la déclaration/définition, soit a l'appelle de la fonction... le dernier cas implique bien entedu que tu déclare sous le nouveau nom nbdrive et hard
. pour la premiere erreur.. déclare la fonction a vant de l'appeller... voivici ta source corrigée(enfin du moin je pense lol):
> #include <stdlib.h>
> #include <stdio.h>
> #include <string.h>
> #include <windows.h>
> void PrintIdeInfo ( nbdrivef, hardf)
> int nbdrive=1;
> int hard=10;
> int* Tab1 = new int [1];
>
> void main()
> {
>
> for (int i=0; i<11; i++)
> {
> nbdrive +=1;
> PrintIdeInfo (nbdrive , hard);
> }
> }
>
>
> void PrintIdeInfo ( nbdrivef, hardf)
> {
> hardf +=10;
> Tab1[nbdrivef--]= hardf;
> int* Tab2 = new int [nbdrivef++];
> for (int j=0; j<nbdrivef++; j++)
> {Tab2[j]=0;}
> for (int i=0; i<nbdrivef; i++)
> {Tab2[i]=Tab1[i];}
>
> Tab1=Tab2;
> delete Tab2;
> }
______________________
.----. /RETAKS666@wanadoo.fr /
_.'__ `. / /¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯