Langage c débutant nombreuses erreurs.
allezlolo
-
juju -
juju -
Bonsoir à tous,
Je viens de faire un code (enfin d'essayer) me permettant de trier les valeurs d'un tableau d'éléments de type qcq. La fonction doit recevoir en paramètre un pointeur sur la fonction qui compare deux éléments e1 et e2 et qui retourne -1,0 ou 1 selon que e1 est inférieur égal ou supérieur à e2.
Voici mon code me permettant de faire un test avec un tableau de double :
static int compare_double (void const *a, void const *b) {
double const *pa = a;
double const *pb = b;
int result;
if (pa < pb) {
result = -1;
} else if (pa = pb) {
result = 0;
} else {
result = 1;
}
return result;
}
tri_quest4 (void *tab,int (*cmp_element)(void const*e1, void const *e2),int nombreEl) {
int j=0;
int i=0;
void* aux;
for (i; i < nombreEl; i++) {
for (j = i + 1; j < (nombreEl); j++){
if (cmp_element(tab[i],tab[j])==1) {
aux = tab[i];
tab[i] = tab[j];
tab[j] = aux;
}
}
}
}
int main() {
double* tab;
tab = malloc (double*) (sizeof(double*)*4);
tab[0] = 1.5;
tab[1] = 0.5;
tab[2] = 2.5;
tab[3] = 2.0;
tri_quest4(tab, &compare_double,4);
}
Et voici les erreurs de compilation :
tp8.c: In function «tri_quest4":
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:69: attention : dereferencing «void *" pointer
tp8.c:69: erreur: valeur void n'a pas été ignorée comme elle aurait dû l'être
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: erreur: utilisation invalide d'expression void
tp8.c:71: attention : dereferencing «void *" pointer
tp8.c:71: erreur: utilisation invalide d'expression void
tp8.c: In function «main":
tp8.c:79: erreur: expected expression before «double"
tp8.c:79: erreur: called object «malloc(<erroneous-expression>)" is not a function
tp8.c:84: erreur: «compare_int" undeclared (first use in this function)
tp8.c:84: erreur: (Each undeclared identifier is reported only once
tp8.c:84: erreur: for each function it appears in.)
EN vous remerciant à l'avance pour l'aide que vous pouvez m'apporter
Je viens de faire un code (enfin d'essayer) me permettant de trier les valeurs d'un tableau d'éléments de type qcq. La fonction doit recevoir en paramètre un pointeur sur la fonction qui compare deux éléments e1 et e2 et qui retourne -1,0 ou 1 selon que e1 est inférieur égal ou supérieur à e2.
Voici mon code me permettant de faire un test avec un tableau de double :
static int compare_double (void const *a, void const *b) {
double const *pa = a;
double const *pb = b;
int result;
if (pa < pb) {
result = -1;
} else if (pa = pb) {
result = 0;
} else {
result = 1;
}
return result;
}
tri_quest4 (void *tab,int (*cmp_element)(void const*e1, void const *e2),int nombreEl) {
int j=0;
int i=0;
void* aux;
for (i; i < nombreEl; i++) {
for (j = i + 1; j < (nombreEl); j++){
if (cmp_element(tab[i],tab[j])==1) {
aux = tab[i];
tab[i] = tab[j];
tab[j] = aux;
}
}
}
}
int main() {
double* tab;
tab = malloc (double*) (sizeof(double*)*4);
tab[0] = 1.5;
tab[1] = 0.5;
tab[2] = 2.5;
tab[3] = 2.0;
tri_quest4(tab, &compare_double,4);
}
Et voici les erreurs de compilation :
tp8.c: In function «tri_quest4":
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:69: attention : dereferencing «void *" pointer
tp8.c:69: erreur: valeur void n'a pas été ignorée comme elle aurait dû l'être
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: erreur: utilisation invalide d'expression void
tp8.c:71: attention : dereferencing «void *" pointer
tp8.c:71: erreur: utilisation invalide d'expression void
tp8.c: In function «main":
tp8.c:79: erreur: expected expression before «double"
tp8.c:79: erreur: called object «malloc(<erroneous-expression>)" is not a function
tp8.c:84: erreur: «compare_int" undeclared (first use in this function)
tp8.c:84: erreur: (Each undeclared identifier is reported only once
tp8.c:84: erreur: for each function it appears in.)
EN vous remerciant à l'avance pour l'aide que vous pouvez m'apporter
A voir également:
- Langage c débutant nombreuses erreurs.
- Langage ascii - Guide
- Langage binaire - Guide
- Logiciel de programmation pour débutant - Guide
- Logiciel montage vidéo débutant - Guide
- Vous avez utilisé ce numéro de téléphone à de trop nombreuses reprises ✓ - Forum Gmail
5 réponses
j'ai un peu moins d'erreurs...
tp8.c: In function «tri_quest4":
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:69: attention : dereferencing «void *" pointer
tp8.c:69: erreur: valeur void n'a pas été ignorée comme elle aurait dû l'être
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: erreur: utilisation invalide d'expression void
tp8.c:71: attention : dereferencing «void *" pointer
tp8.c:71: erreur: utilisation invalide d'expression void
cela correspond aux lignes :
for (i; i < nombreEl; i++) {
for (j = i + 1; j < (nombreEl); j++){
if (cmp_element(tab[i],tab[j])==1) {
aux = tab[i];
tab[i] = tab[j];
tab[j] = aux;
}
}
}
tp8.c: In function «tri_quest4":
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: attention : dereferencing «void *" pointer
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:68: erreur: utilisation invalide d'expression void
tp8.c:69: attention : dereferencing «void *" pointer
tp8.c:69: erreur: valeur void n'a pas été ignorée comme elle aurait dû l'être
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: attention : dereferencing «void *" pointer
tp8.c:70: erreur: utilisation invalide d'expression void
tp8.c:71: attention : dereferencing «void *" pointer
tp8.c:71: erreur: utilisation invalide d'expression void
cela correspond aux lignes :
for (i; i < nombreEl; i++) {
for (j = i + 1; j < (nombreEl); j++){
if (cmp_element(tab[i],tab[j])==1) {
aux = tab[i];
tab[i] = tab[j];
tab[j] = aux;
}
}
}
Bonjour,
J'ai un problème : lorsque j'execute mon programme, il me dit que 100 divisé par n'importe quoi fait 0. J'ai besoin d'aide s'il vous plait. Voici mon programme :
#include "stdio.h"
int saisienf()
{
int n;
printf("Entrez le pas ===>") ;
scanf("%d",n) ;
return n;
}
int main ()
{
int n;
n=saisienf();
float L;
float h;
L=100.;
h=L/n;
printf("%d \n",h);
return 0;
}
Quelle que soit la valeur de n que je rentre, il me sort 0. Je ne comprends pas.
Merci d'avance,
Justine
J'ai un problème : lorsque j'execute mon programme, il me dit que 100 divisé par n'importe quoi fait 0. J'ai besoin d'aide s'il vous plait. Voici mon programme :
#include "stdio.h"
int saisienf()
{
int n;
printf("Entrez le pas ===>") ;
scanf("%d",n) ;
return n;
}
int main ()
{
int n;
n=saisienf();
float L;
float h;
L=100.;
h=L/n;
printf("%d \n",h);
return 0;
}
Quelle que soit la valeur de n que je rentre, il me sort 0. Je ne comprends pas.
Merci d'avance,
Justine
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
@juju : Ca fait longtemps que j'ai plus touché de C, mais il me semble que tu as oublié le "&" dans "scanf("%d",&n) ;"
Tu dois passer l'adresse de la variable que tu veux remplir, c'est important. Dans ton cas, j'imagine qu'au final 'n' valait un numéro énorme, donc 100 / TRES_GRAND, arrondi en entier donne '0'
Tu dois passer l'adresse de la variable que tu veux remplir, c'est important. Dans ton cas, j'imagine qu'au final 'n' valait un numéro énorme, donc 100 / TRES_GRAND, arrondi en entier donne '0'