CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Ce programme ne marche pas pourquoi ? :(

_[near]_2
_[near]_2
Niveau 9
14 mai 2016 à 14:21:23

Je dois faire une structure CD qui admet un nombre de piste et qui leur associe à chacun une durée (J'ai donc tout naturellement choisit de créer un tableau dynamique dans cette structure qui aurait la taille du nombre de piste.)

Mais ça ne marche pas [[sticker:p/1lmk]]

struct CD{

    int piste;
    int * duree=new int[piste];

};

CD cree(CD){

    CD CD1;
    CD1.piste=4;
    CD1.duree={0};
    return CD1;


}

int main(){
    CD CD2;
    cree(CD2);
    std::cout<<CD2.piste;
        for(int i=0;i<CD2.piste;i++)
            {
        std::cout<<"piste "<<i+1<<",Durée : "<<CD2.duree[i]<<std::endl;
    }

    return 0;

}

J'ai conscience que le probléme via de la manière dont je déclare le tableau dans la structure mais je trouve rien sur google sur ça [[sticker:p/1lmk]]

Market56
Market56
Niveau 5
14 mai 2016 à 14:33:55

Je pense que c'est parce que tu ne peux créer un tableau d'une taille non déterminée à la compilation.

Là la taille de ton tableau est variable car elle dépend de la variable "piste".

JoachimDuck
JoachimDuck
Niveau 9
14 mai 2016 à 14:50:42

Pourquoi utiliser une structure quand tu peux utiliser une classe ? [[sticker:p/1jnh]]

_[near]_2
_[near]_2
Niveau 9
14 mai 2016 à 14:52:53

Le 14 mai 2016 à 14:33:55 Market56 a écrit :
Je pense que c'est parce que tu ne peux créer un tableau d'une taille non déterminée à la compilation.

Là la taille de ton tableau est variable car elle dépend de la variable "piste".

Je devrais faire comment alors d’après toi ?

Le seul moyen d'associer à chaque piste une durée est un tableau et d'après l'énoncé de l'exercice je dois passer par la structure :

"1)On cherche a définir une structure CD contenant : un nombre de pistes et leurs durées respectives."
2)écrire une fonction cree qui crée un CD et le renvoie.

_[near]_2
_[near]_2
Niveau 9
14 mai 2016 à 14:53:23

Le 14 mai 2016 à 14:50:42 JoachimDuck a écrit :
Pourquoi utiliser une structure quand tu peux utiliser une classe ? [[sticker:p/1jnh]]

L'exercice qui oblige à passer par là c'est tout [[sticker:p/1kkn]]
¨Puis on a pas vu les classes [[sticker:p/1kki]]

Message édité le 14 mai 2016 à 14:54:58 par _[near]_2
LGV
LGV
Niveau 28
14 mai 2016 à 15:12:51

int * duree=new int[piste];

Tu ne peux pas assigner une valeur au niveau de la declaration si cette valeur depend d'une expression qui n'est pas connue au moment de la compilation. Pour que ca marche, il faudrait que "piste" soit une "constante", ie. une expression dont la valeur est connue a la compilation, et non specifiee a l'execution

Il faut que tu cases ton "new int[]" durant l'execution, pour que "piste" soit une expression evaluable.

2 solutions :

- tu as vu les constructeur et/ou methodes (une struct n'etant qu'une class avec droits d'access public par defaut au lieu de private). Tu fais l'assignation dans une constructeur ou methode appele dans le main, et donc sera evalue au runtime

- tu fais l'assignation directement dans ton main (ou fonction pour structurer un peu, e.g. ton Cree(CD) ), la ou "piste" a une valeur connue ; c'est pas "joli" au niveau encapsulation, mais a ce stade on s'en fiche un peu

Message édité le 14 mai 2016 à 15:15:47 par LGV
VIeRepublique
VIeRepublique
Niveau 20
14 mai 2016 à 18:28:21

voilà :

struct CD{

    int piste;
    int * duree=new int[piste];

};

CD cree(int nbPiste, int durees[]){

    CD CD1;
    CD1.piste= nbPiste;
    for(int i = 0; i<nbPiste; i++)
      CD1.duree[i]=durees[i];
    return CD1;


}

int main(){
    int piste = 4;
  	int durres[]={185,200,124,167};
    CD cd = cree(piste, durres);
    std::cout<<cd.piste;
  
    for(int i=0;i<cd.piste;i++)
    	std::cout<<"piste "<<i+1<<",Durée : "<<CD2.duree[i]<<std::endl;
   
  return 0;

}
VIeRepublique
VIeRepublique
Niveau 20
14 mai 2016 à 18:34:42

et alloue le tableau dans la fonction cree() sinon ça marche pas.

Junichirou-san
Junichirou-san
Niveau 10
15 mai 2016 à 04:17:09

l'erreur est simple tu utilise un "objet" c'est pas vraiment le cas la puisque qu'une struct , qui s'apelle CD2 hors je vois aucun objet qui s'apelle come sa

89ron
89ron
Niveau 10
15 mai 2016 à 22:44:00

Une soluce : http://pastebin.com/gL2wBCRc

Même si c'est pas très joli, au moins ça va te débloquer.

[[sticker:p/1kki]]
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment