Problème matrice dynamique en C

Résolu
jeanlouisvalval Messages postés 2 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      printf("%ld\t", A[i][j]);
      printf("%f\t", A[i][j]); serait mieux vu qu'il s'agit d'un double.

      Cdlt,
      0