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 :

corrigé IV-G-Exercice n°7 => Segmentation fault


Sujet :

C++

  1. #1
    Membre à l'essai Avatar de moniroje
    Homme Profil pro
    retraité
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 18
    Points
    18
    Par défaut corrigé IV-G-Exercice n°7 => Segmentation fault
    Bonjour....
    mon premier appel au secours!!! ouinnnn!!!!
    Depuis un moment je m'évertue à faire cet exercice mais vraiment, je foire!!
    http://cpp.developpez.com/tutoriels/...-debutant/#LIV
    Donc je regarde votre corrigé; of course, c'est beau!!! oui mais,
    quand je le copie-colle dans mon Code-Blocks, ça marche à me demander d'entrer des entiers
    et... c'est tout!!! avec ce message: Segmentation fault
    Je fais Debug-start/continue de mon CodeBlocks et j'ai de nouveau la console
    * avec ce message:" warning: GDB: Failed to set controlling terminal: opération non
    * permise" suivi de mon premier cout: Veuillez taper l'entier numero 0: je fais, j'entre
    * les 10 entiers et s'ouvre alors une fenêtre avec une ligne bien rouge: Nr 0 Adress:
    * 0x5555554ab9 Function main() File /Mesdocs/... qui se termine par Line 18: OK, c'est
    * la ligne 18 qui foire: if (a[j]<min) : j'essaie de comprendre quoi qui foire et me voilà
    * plongé dans les abysses de la perplexité... depuis heu... quelques jours
    Ci-joint le code fallacieux:
    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
    #include<iostream>
    using namespace std;
     
    const int N=10;
     
    int main()
    {
    int a[N],i,j,min,imin,tmp;
     
    for(i=0;i<N;i++)
      {
      cout<<"Veuillez taper l'entier numero "<<i<<" : ";cin>>a[i];
      }
     
    for(i=0;i<N-1;i++)
      {
      imin=i;min=a[i];
      for(j=i+1;j<<N;j++)if(a[j]<min){min=a[j];imin=j;}
     
      tmp=a[imin];a[imin]=a[i];a[i]=tmp;
      }
    cout<<"VOICI LE TABLEAU TRIE :"<<endl;
    for(i=0;i<N;i++)cout<<"a["<<i<<"]="<<a[i]<<endl;
     
    return 0;
    }
    je ne montre pas mon code à moi, vous allez hurler...

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 163
    Points
    17 163
    Par défaut
    Avant toute chose, je souligne que les tableaux bruts sont à éviter autant que possible, puisqu'il y a des classes comme vector et array qui sont beaucoup plus sures, car validantes.

    Une fois cela dit, c'est effectivement gênant d'avoir une erreur dans un corrigé.
    Il y a une grosse faute dans la boucle for interne (celle sur j).
    D'après toi, laquelle?

    Note personnelle:
    Il faudrait nettoyer ces exercices qui sentent le C d'avant la norme de 99, au cout près.
    Puisqu'il s'agit de traduction d'un wikibook, je suggère très vivement d'ajouter au moins un avertissement.

  3. #3
    Membre à l'essai Avatar de moniroje
    Homme Profil pro
    retraité
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    hum hum, les classes, je n'en suis pas là. En fait, je révise;
    dans un premier temps, j'avais découvert le C++ avec un cours. Ça m'avait bien plu
    mais ceux qui m'aidaient sur le forum adéquat s'arrachait les cheveux pour les codes de mon cru
    et même, ils m'ont conseillé de re-apprendre le C++ avec un livre plus sérieux et certains, pas sympas, m'ont conseillé d'apprendre à planter les choux...
    J'ai donc suivi leur conseil et j'ai découvert votre cours jusqu'à ici:
    http://bruce-eckel.developpez.com/li...eference-copie
    mais je suis à la peine!!! Vachement plus théorique que mon premier cours et décourageant: j'arrête.
    Mais comme ça m'énerve d'abandonner, je me suis trouvé une méthode plus adaptée à mon cas:
    j'apprends en faisant des exos; voilà, voilou...

    Chouette j'ai trouvé le faute, hi hi:
    en fait c'est:
    et voilà, ça marche!!!
    Merci de ton aide.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 163
    Points
    17 163
    Par défaut
    C'est une bonne méthode que de faire des exercices.

    Mais il faut avoir une bonne correction, et ceux que tu as trouvé chez nous sont une traduction de vieilleries.
    Malheureusement, c'est difficile à améliorer.

    N'hésite pas à nous présenter, à l'occasion, ta solution d'un exercice qui t'a semblé intéressant, pour qu'on commente ta solution.

    Concernant les classes, il y a beaucoup de "beau langage" qui peut effrayer pour rien. (exactement comme avec les pointeurs).
    Par ailleurs, les classes standards, tu les utilises déjà.
    En effet, cout et cin sont deux objets issus de classes. Un objet est à une classe ce que 2 est à int.

    Une classe n'est jamais qu'un type utilisable pour définir des variables.
    L'astuce, c'est que tu peux créer des classes qui permettent de représenter n'importe quel concept dont tu as besoin.
    La bibliothèque standard te propose un certain nombre de (modèles de) classes très utilitaires, comme vector pour représenter une séquence de chose, string pour les chaines de caractères, etc.

  5. #5
    Membre à l'essai Avatar de moniroge
    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2016
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    re-moi mais j'ai dû me re-inscrire, ayant oublié mon mot de passe.
    J'envisageai d'abandonner le C++; c'est dur, tout seul!!
    mais après t'avoir lu, en fait, je vais reprendre ma révision sur le cours de classroom qui m'avait bien convenu
    et quand j'aurais un "help! c'est quoi que je dois faire ?? "
    je viendrai ici poser mes questions.
    Merci à toi, kernel, heu, oups!! pardon, ternel.

    Me présenter: je ne suis pas un jeune, pas un étudiant...
    plutôt un vieux qui a voulu s'épargner Aïe Zenhmer;
    pour cela, j'avais le choix: apprendre le japonais
    ou plus utile?? apprendre mes prières???
    et j'ai opté pour le C++!!! franchement !!!

  6. #6
    Membre averti
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Points : 435
    Points
    435
    Par défaut
    Salut,

    Je ne veux pas faire de pubs mais apprendre une grosse partie des bases avec Op***room c est impeccable.
    Je te parle en connaissance de cause, vu que j ai reussi a trouver du boulot apres avoir appris seul sur ce site puis en posant mes questions et tentant des reponses sur ce forum.
    En revanche, la communauté ici est bien plus théoriquement a meme de t aider pour toutes les questions possibles et inimaginables

    Ce sera donc avec plaisir de partager entre debutants quand tu seras pret!

    Bon courage

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

Discussions similaires

  1. Pb segmentation fault avec glutinit()
    Par pipistrelle dans le forum GLUT
    Réponses: 2
    Dernier message: 17/11/2004, 23h17
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. [REDHAT] Segmentation fault systematique
    Par mela dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 21/09/2004, 06h05
  4. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

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