IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Afficher tableau à 2 dimensions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Par défaut Afficher tableau à 2 dimensions
    Bonjour à tous,

    je débute en C et je rencontre un problème d'affichage, je veux juste afficher mon tableau de 2 dimensions, il n y a pas d'erreur, mais mon tableau ne s'affiche pas.

    Voici mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #include <stdio.h>
    #include <stdlib.h>
     
     int main(int argc, char const *argv[]){
     
     	int** tableau = NULL;
     	int ligne, temp;
     
     	printf("Combien de lignes voulez-vous? \n");
     
     	scanf("%d", &ligne);
     
     	tableau = malloc(ligne*sizeof(*tableau));
     
     	if(tableau == NULL){
            exit(1); // je teste si il y a bien de la mémoire disponible
        }
     
     	for(int i = 0; i<ligne; i++){
     
     		printf("Taille de la ligne %d ?\n", i + 1);
     
     		scanf("%d", &temp);
     
     		tableau[i] = malloc(temp*sizeof(**tableau));
     
     			if(tableau[i] == NULL){
            exit(1); // je teste si il y a bien de la mémoire disponible
        	}
     
        	printf("Entrez les nombres pour cette ligne \n");
     
        	for(int j = 0; j<temp; j++){
     
        		scanf("%d", tableau[j]);
     
     		}
     	}
     
     	printf("Voici vos donnees: \n");
     
        for(int i = 0; i<ligne; i++){
        	for(int j = 0; j<sizeof(tableau[i])/sizeof(int); j++){
                printf("%d ", tableau[i][j]);
            }
            printf("\n");
        }
     
     
     
     
     
     }
    Merci d'avance

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Par défaut
    C'est bon j'ai trouvé l'erreur.

    Est-il possible d'effacer ce post pour éviter de remplir inutilement le forum?

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par yoshi13 Voir le message
    Est-il possible d'effacer ce post pour éviter de remplir inutilement le forum?
    C'est possible si tu alertes un modérateur et qu'il prend la décision. Mais tout post a son utilité, ne serait-ce que pour montrer les erreurs et leurs solutions (que tu aurais pu expliquer) ou pour montrer d'autres erreurs que tu n'as pas vu.

    Par exemple ici
    Citation Envoyé par yoshi13 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for(int i = 0; i<ligne; i++){
     
     		printf("Taille de la ligne %d ?\n", i + 1);
     
     		scanf("%d", &temp);
     
     		tableau[i] = malloc(temp*sizeof(**tableau));
     
     			if(tableau[i] == NULL){
            exit(1); // je teste si il y a bien de la mémoire disponible
        	}
    Déjà tu as une indentation de merde. Or un programme non seulement ça s'écrit fonctionnellement, mais aussi ça s'écrit beau. ne serait-ce que pour le relire (et éventuellement le faire évoluer) plus facilement ensuite.
    Mais en dehors de l'esthétisme, tu ne gères pas correctement la mémoire. En effet, si tu as 10 lignes et que tu alloues correctement les 8 premières mais que ça plante à la 9°, ben toi tu quittes ton code, naturel. Et donc libérer les 8 lignes déjà alloués c'est quand ? Tu comptes sur l'OS pour le faire ? Bon là il se trouve que ça va parce que les OS modernes effectivement récupèrent la mémoire allouée par un programme qui se termine mais ça n'a pas toujours été le cas. Et de toute façon c'est une habitude à prendre. Parce que si tu ne la prends pas, alors tu ne l'auras pas le jour où tu en auras réellement besoin (si par exemple tu fais de l'allocation dans une boucle dans un code qui ne s'arrête jamais comme par exemple un serveur).

    Et sinon quant à ça
    Citation Envoyé par yoshi13 Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(int j = 0; j<temp; j++){
     
        		scanf("%d", tableau[j]);
     
     		}
    Faire saisir un nombre et tenter de le rentrer dans un tableau de nombres là c'est sans commentaire...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher un tableau à double dimension
    Par The Molo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/02/2008, 12h37
  2. [Tableaux] Afficher un tableau à deux dimension
    Par Space Cowboy dans le forum Langage
    Réponses: 4
    Dernier message: 05/07/2007, 09h36
  3. Réponses: 9
    Dernier message: 26/04/2007, 15h17
  4. afficher un tableau 2 dimensions dans une fenetre
    Par igor24 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 29/04/2006, 13h50
  5. Réponses: 27
    Dernier message: 19/04/2006, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo