OVH Cloud OVH Cloud

code defailant C : pointeur

16 réponses
Avatar
aidann
Bonjour,

il s'avere que mon code ci dessous ne compile pas. pouvait vous svp m'aider a trouver les erreurs.
merci d'avance

#include <stdio.h>
#include <stdlib.h>
int main() {
int nrows;
int ncolumns;
double** A;
int i,j;
printf("Enter the number of rows: ");
scanf("%d", &nrows);
printf("Enter the number of columns: ");
scanf("%d", &ncolumns);
for (i = 0; i < nrows; i++)
{ A[i] = (double*)malloc(ncolumns * sizeof(double));
for (j = 0; j < ncolumns; j++) {
printf("Enter A[%s][%s] = ", i, j);
scanf("%lf", A[i][j]);
}

printf("n");
printf("Result = %.0fn",calc_func(A,nrows,ncolumns));
for (i = 0; i < nrows; i++) { free(A[i]);
}
return 0;
}
}
double calc_func(double **A, int nrows, int ncolumns)
{ int i;
double result=0;
for (i = 0; i < nrows; i++) {

printf("A[%d][%d]=%2.0fn",i,i,A[i][i]); result+=A[i][i];
} return result;
}

10 réponses

1 2
Avatar
Tonton Th
On 03/10/2013 11:04 PM, aidann a dit:
Bonjour,

il s'avere que mon code ci dessous ne compile pas. pouvait vous svp m'aider a
trouver les erreurs.



Les erreurs ? Elles sont dans le code source, en général...

--
http://foo.bar.quux.over-blog.com/article-thsf-2013-114632120.html
Avatar
Olivier Miakinen
Bonjour,

Le 10/03/2013 23:04, aidann a écrit :

il s'avere que mon code ci dessous ne compile pas. pouvait vous svp m'aider a
trouver les erreurs.



Il s'avère que tu t'es trompée de groupe pour poser la question.
Essaye fr.comp.lang.c plutôt que fr.comp.os.linux.configuration.

Cela dit, si ton code ne compile pas, le compilateur devrait avoir la
gentillesse de t'indiquer ce qui ne lui plaît pas et à quel endroit ça
se trouve.

Tiens, je te donne l'un des endroits, sans te dire ce qui ne va pas
(enfin, avec tout ce qu'il faut pour le voir quand même) :

int i,j;
[...]
printf("Enter A[%s][%s] = ", i, j);



Cordialement,
--
Olivier Miakinen
Avatar
aidann
Le dimanche 10 Mars 2013 à 23:04 par aidann :
Bonjour,

il s'avere que mon code ci dessous ne compile pas. pouvait vous svp m'aider a
trouver les erreurs.
merci d'avance

#include
#include
int main() {
int nrows;
int ncolumns;
double** A;
int i,j;
printf("Enter the number of rows: ");
scanf("%d", &nrows);
printf("Enter the number of columns: ");
scanf("%d", &ncolumns);
for (i = 0; i < nrows; i++)
{ A[i] = (double*)malloc(ncolumns * sizeof(double));
for (j = 0; j < ncolumns; j++) {
printf("Enter A[%s][%s] = ", i, j);
scanf("%lf", A[i][j]);
}

printf("n");
printf("Result = %.0fn",calc_func(A,nrows,ncolumns));
for (i = 0; i < nrows; i++) { free(A[i]);
}
return 0;
}
}
double calc_func(double **A, int nrows, int ncolumns)
{ int i;
double result=0;
for (i = 0; i < nrows; i++) {

printf("A[%d][%d]=%2.0fn",i,i,A[i][i]); result+=A[i][i];
} return result;
}


bonjour Olivier,
pourrait tu stp mindiquer ttes les erreurs que t'aperçois? cela me serait d'une grande aide. Merci d'avance

Cordialement.
Avatar
yamo'
Salut,

aidann a tapoté, le 11/03/2013 10:37 dans fr.comp.os.linux.configuration :

bonjour Olivier,
pourrait tu stp mindiquer ttes les erreurs que t'aperçois? cela me serait d'une
grande aide. Merci d'avance



Si tu postais déjà dans le _bon_ groupe et sur un vrai serveur usenet ça
aiderait <http://news.lacave.net/servers/reader/list>.




Copie et suivi vers fr.comp.lang.c


--
Stéphane <http://pasdenom.info/fortune/?>
BOFH excuse #333:

A plumber is needed, the network drain is clogged
Avatar
Olivier Miakinen
Bonjour Aidann,

Le 11/03/2013 10:37, aidann a écrit :
Le dimanche 10 Mars 2013 à 23:04 par aidann :
[copie intégrale de ton article initial]


bonjour Olivier,
pourrait tu stp mindiquer ttes les erreurs que t'aperçois?



1) Ls abrv snt difcl à lr, il vdrait mx ls évter, on n'st pas sr twtr.
2) <http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html>.
3) Tu passes par un site web qui est une passerelle à usenet, ce qui
fait que tu n'as peut-être pas compris de quoi je parlais en citant
fr.comp.os.linux.configuration et fr.comp.lang.c. Peux-tu citer
l'URL de ce site web où tu crois poser la question ?

cela me serait d'une grande aide. Merci d'avance



Merci à toi pour la réponse à la question 3, mais en tenant compte des
remarques 1 et 2 car sinon je pense que je n'aurai pas trop envie de
t'aider.

Bon, je te donne quand même une autre erreur : tu alloues des pointeurs
pour les A[i], mais tu as oublié d'allouer le tableau A lui-même. Cela
dit, ça fera une erreur d'exécution mais pas une erreur de compilation,
or on ne sait toujours pas ce que t'a indiqué le compilateur.

Cordialement,
--
Olivier Miakinen
Avatar
Jerome Lambert
Le 11/03/13 11:12, Olivier Miakinen a écrit :
(...)
Cela dit, ça fera une erreur d'exécution mais pas une erreur de
compilation, or on ne sait toujours pas ce que t'a indiqué le
compilateur.



Chez moi ça compile (c)(tm)...

(Avec plein de warnings, mais ça compile)
Avatar
Tonton Th
On 03/11/2013 11:32 AM, Jerome Lambert a dit:

Cela dit, ça fera une erreur d'exécution mais pas une erreur de
compilation, or on ne sait toujours pas ce que t'a indiqué le
compilateur.



Chez moi ça compile (c)(tm)...

(Avec plein de warnings, mais ça compile)



Mauvais compilateur, changer compilateur.

--
http://foo.bar.quux.over-blog.com/article-thsf-2013-114632120.html
Avatar
Laurent
On 10/03/2013 23:04, aidann wrote:
#include<stdio.h>



(snip le code)

}



Salut,

rajoute juste la ligne

double calc_func(double**,int,int);

après int i,j;

Ca passera la compilation mais je ne suis pas sûr que ça fera ce que tu
souhaites ...

L
Avatar
Laurent
Salut,

On 11/03/2013 01:10, Olivier Miakinen wrote:

int i,j;
[...]
printf("Enter A[%s][%s] = ", i, j);



Cordialement,



avec les options de compilation par défaut de gcc (4.7), ça passe ...

:/tmp$ echo "#include<stdio.h>
main()
{
int i,j;
printf("Enter A[%s][%s] = ", i, j);
}
" > toto.c

:/tmp$ gcc toto.c
:/tmp$
:/tmp$ gcc -v
(snip)
gcc version 4.7.2 (Debian 4.7.2-5)
Avatar
Nicolas George
Laurent , dans le message <513dc6cd$0$2127$, a
écrit :
rajoute juste la ligne

double calc_func(double**,int,int);

après int i,j;



Un prototype dont la visibilité ne couvre pas la définition correspondante :
très mauvais conseil.
1 2