Problème matrice dynamique en C

Résolu/Fermé
jeanlouisvalval Messages postés 2 Date d'inscription mardi 1 février 2011 Statut Membre Dernière intervention 1 février 2011 - 1 févr. 2011 à 19:14
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 févr. 2011 à 22:46
Bonjour, l'erreur doit surement etre idiote mais lorsque j'éxécute le compilateur m'affiche une erreur de segmentation. Voici mon code :
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  int n, i, j;
  puts("Taille de la matrice?");
  scanf("%d", &n);
  double * *A;
  A=malloc(n*sizeof(double*));
  for (i=0; i<n; i++) {
    A[i]=malloc(n*sizeof(double));
  }
  for (i=0; i<n; i++) {
    for (j=0; j<n; i++) {
	  A[i][j]=1;
	}
  }
  for (i=0; i<n; i++) {
    for (j=0; j<n; i++) {
	  printf("%lf\t", A[i][j]);
	}
	printf("\n");
  }
  return 0;
}


Si une âme charitable pouvait me dire d'où vient l'erreur je lui en serais très reconnaissant

2 réponses

KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
1 févr. 2011 à 19:26
Quand tu incrémentes j, tu dois faire j++ et non i++

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

int main(void) 
{
  int n, i, j;
  puts("Taille de la matrice?");
  scanf("%d", &n);

  double** A=(double **) malloc(n*sizeof(double*));

  for (i=0; i<n; i++) 
	A[i]=(double*) malloc(n*sizeof(double));

  for (i=0; i<n; i++) 
  for (j=0; j<n; j++)
	  A[i][j]=1;

  for (i=0; i<n; i++)
  {
	  for (j=0; j<n; j++)
		  printf("%ld\t", A[i][j]);
	  printf("\n");
  }

  return 0;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 838
1 févr. 2011 à 22:46
printf("%ld\t", A[i][j]);
printf("%f\t", A[i][j]); serait mieux vu qu'il s'agit d'un double.

Cdlt,
0