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;
}

6 réponses

1 2
Avatar
Laurent
On 11/03/2013 19:51, Nicolas George wrote:
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.



j'ai pas dit que c'est beau. J'ai dit que ça règle le problème de
compilation ...

L
Avatar
Laurent
On 11/03/2013 19:57, Laurent wrote:
On 11/03/2013 19:51, Nicolas George wrote:
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.



j'ai pas dit que c'est beau. J'ai dit que ça règle le problème de
compilation ...

L



nan nan j'ai dit une connerie. Faut le mettre avant le main(). Mais ça
compile quand même après int i,j; ...

L
Avatar
Nicolas George
Laurent , dans le message <513e2946$0$1861$, a
écrit :
nan nan j'ai dit une connerie. Faut le mettre avant le main().



Oui.

Mais ça
compile quand même après int i,j; ...



C'est néanmoins un très mauvais conseil.
Avatar
Antoine Leca
yamo' écrivit :
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>.



... et si tu citais (in extenso ou par référence) le message original,
cela nous permettrait de faire des commentaires sans passer notre temps
(chacun de notre côté) à pêcher...


Dans <msgid:, "aidann" écrivit
: 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));

Où comme l'as déjà expliqué Olivier, A n'est jamais alloué.


Antoine
Avatar
Antoine Leca
Tonton Th écrivit :
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.



Si cela « compile avec plein de warnings, _mais_ ça compile »,
ÀMHA ce n'est peut-être pas le compilateur qu'il faut changer...

Maintenant effectivement, ce qui suit ne devrait pas compiler, 6.5.2.2p9
et surtout le fait qu'en général une fonction de type flottant n'a pas
l'interface habituelle pour la valeur retournée.

#include <stdio.h>
int main() {
printf("Result = %.0fn", calc_func());
return 0;
}
double calc_func(void)
{ double result=0; return result; }


Antoine
Avatar
cynthiajeanloui
Le lundi 11 Mars 2013 à 01:10 par 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


Spécial offre de prêt entre particulier Particuliers sérieux qui ont besoin pour les petites entreprises, investissements personnels

pour seulement 5% à 25 % d'intérêt selon le montant demander. Nous faisons des prêts locaux et des prêts internationaux à des

personnes partout dans le monde. Contactez-nous dès aujourd'hui et faites-nous connaître le montant d'argent que vous voulez

prêter. Nous sommes prêts à satisfaire nos clients dans les 72 heures suivant la réception de votre demande formulée. Si vous

êtes intéressés veillez bien nous contactez :
1 2