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 :

Problème Vecteur Multidimension


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Problème Vecteur Multidimension
    Je bosse sur un tp que je dois rendre sous peu mais la je cale complètement, je viens donc faire appel à vos sage lumière

    Je dois écrire un programme qui demande le nombre de dimension d'un tableau et ensuite pouvoir aller y rechercher les indices en entrant des coordonnées ou lui demander les coordonnée de l'indice. J'ai fait ce travail en fonction de l'exe qu'on nous à remis et en fonction des formules trouvée dans mon cours.

    Pour un tableau où la

    dimension 3 = 3
    dimension 2 = 2
    dimension 1 = 3

    Le tableau devrais me donner en page 1

    0 1 2
    3 4 5

    page 2

    6 7 8
    9 10 11

    page 3

    12 13 14
    15 16 17

    ... malheureusement je n'arrive pas du tout à ça

    voici mon code, j'espère que vous pourrez m'aider à y voir plus clair.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    void TStructure();
    void IndiceVecteur();
    void IndiceAllVecteur();
     
    int NbrDimension, i, j;
    int *D, *d;
     
     
    main() {
        int Choix;
        do {
            printf("\n\n Menu\n\n");
            printf("-1- Definir les tailles de la structure multidimensionnee\n");
            printf("-2- Calculer l'indice dans le vecteur a partir des indices de chaque dimension\n");
            printf("-3- Obtenir les indices de chaque dimension pour un indice du vecteur\n");
            printf("-0- Fin\n");
            printf("\n Choix ? ");
            scanf("%d",&Choix);
     
            switch(Choix) {
                case 0:
                    printf("\n Bye ...\n\n");
                    break;
                case 1:
                    TStructure();
                    break;
                case 2:
                    IndiceVecteur();
                    break;
                case 3:
                    IndiceAllVecteur();
                    break;
            }
        } while(Choix!=0 || Choix>1);
        system("pause");
        return 0;
    }
     
    void TStructure(){
        printf("\n Nombre de dimension ? ");
        scanf("%d", &NbrDimension);
        D=malloc(NbrDimension*sizeof(int));
        d=malloc(NbrDimension*sizeof(int));
        for(i=NbrDimension-1; i>=0; i--) {
            printf("\n Taille de la dimension %d ? ", i+1);
            scanf("%d", &D[i]);
        }
        return;
    }
     
    void IndiceVecteur() {
        int indiced;
        int indiceD=1, indice=0;
        for(i=NbrDimension-1; i>=0; i--) {
            printf("\n Indice dans la dimension %d ? ", i+1);
            scanf("%d", &d[i]);
        }
        for(i=NbrDimension-1; i>=0; i--) {
            for(j=NbrDimension-2; j>=0; j--) {
                indiceD *= *(D+j);
            }
            indiced = *(d+i) * indiceD;
            indice+=indice+indiced;
        }
        printf("\nIndice = %d", indice);
        return;
    }
     
    void IndiceAllVecteur() {
        int indiceV, indice, y, k;
        printf("\n Indice dans le vecteur ? ");
        scanf("%d", &indice);
        for(i=NbrDimension-1; i>=0; i--) {
            int x=1;
            for(j=i-2; j>=0; j--) {
                x*= *(D+j);
            }
            y=i/x;
            indiceV=y% *(D+i);
            printf("\n Indice dans la dimension %d = % d", i+1, y);
        }
        return;
    }
    pour info nous traivaillons en ANSI C sous Dev C++.

    Un tout grand merci

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Moi j'aimerais bien que tu nous aides nous à y voir plus clair. C'est quoi pour toi des "dimensions" ? Parce que pour moi, un tableau en 1 dimension c'est une simple ligne, un tableau en 2D c'est une grille (ou un jeu d'échecs) et un tableau en 3D ça devient un cube. Ensuite ben après c'est toujours programmable mais ça devient très difficile à conceptualiser.
    Et en C, un tableau en 1D c'est une étoile, 2D c'est deux étoiles et N "dimensions" c'est N étoiles (très très schématisé bien sûr parce que sinon les puristes vont hurler).

    Alors tu nous parles de page 1, page 2, page 3, tu nous donnes des nombres ; dans ton code (super commenté) je vois un int *d, un int *D (super recherchés les noms des variables !!!) mais je panne que dalle soit à ce que tu dois faire, soit à ce que tu nous expliques.

    Sinon pour le code lui-même ben que dire: main() devrait peut-être avoir un type et mettre des indices de boucles en variables globales montre que tu ne te foules pas des masses pour concevoir ton truc (déjà rien que le concept de "globale" est un concept à n'envisager que quand on ne peut pas faire autrement...)
    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]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Je comprend tout à fais que tu sois perdu, je ne fais que respecter les consignes du prof en utilisant les parties de code qu'il nous donne avec les variables se trouvant dedans...
    Je n'aime pas non plus ce système de variable D, d , x, y, idem pour les variables général ... etc
    Mais je dois respecter ses consignes et ses énoncé sous peines de perdre des points stupidement

    Je vais essayer de scanner la page du cours pour vous permettre d'y voir plus clair, mais nous ne sommes pas en étoile.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    J'ai fini par le trouver la solutions j'ai effectivement renommer toutes mes variables pour moi y voir plus clair et mieux m'y retrouver.
    Le problème venait de la construction des boucles.

    Je ne met pas le code final sur le forum, sachant que d'autres de mon groupe sont ici et attendent des solutions toute faite.
    (pas envie d'avoir 0 parce que quelqu'un copie/colle mon code :p )

    Mnt je vais renommer les variables comme le prof les veut et je vais attaquer le 2iem labos :p

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par Sve@r
    Et en C, un tableau en 1D c'est une étoile, 2D c'est deux étoiles et N "dimensions" c'est N étoiles (très très schématisé bien sûr parce que sinon les puristes vont hurler).
    je ne peux pas me retenir de hurler au casse-cou!

    Citation Envoyé par comateen
    Je comprend tout à fais que tu sois perdu, je ne fais que respecter les consignes du prof en utilisant les parties de code qu'il nous donne avec les variables se trouvant dedans...
    Je n'aime pas non plus ce système de variable D, d , x, y, idem pour les variables général ... etc
    Mais je dois respecter ses consignes et ses énoncé sous peines de perdre des points stupidement
    C'est compréhensible que tu veuilles répondre dans le sens du prof (?) mais le programme sera (restons poli).

    Pour t'aider, il faut se mettre d'accord sur la numérotation des tableaux :

    1- Avec Di = D[i], ton tableau multidimensionnel est-il int[D0][D1][D2]...[DNbrDimension-1] ou int[DNbrDimension-1]...[D1][D0] ?

    2- Avec di = d[i], l'élément de ton tableau multidimensionnel est-il int[d0][d1][d2]...[dNbrDimension-1] ou int[dNbrDimension-1]...[d1][d0] ?

    Cela importe de le savoir pour faire la correspondance entre un ensemble d'indices d0, d1,... dans le tableau multidimensionnel et l'indice dans ce tableau vu comme unidimensionnel .
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

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

Discussions similaires

  1. Problème vecteurs Arbre binaire
    Par Flo FR dans le forum Débuter
    Réponses: 5
    Dernier message: 11/01/2015, 00h42
  2. [Débutant] Problème vecteur texte
    Par keaxter dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/06/2014, 18h25
  3. Problème vecteur de string
    Par Titiii25 dans le forum C++
    Réponses: 3
    Dernier message: 14/06/2010, 16h35
  4. problème Vecteur matrice
    Par aerosniper dans le forum MATLAB
    Réponses: 7
    Dernier message: 18/12/2009, 10h42
  5. [AIDE] Problème Vecteur
    Par kikouu dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/01/2008, 17h41

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