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] problème tableau

Aziraqbot
Aziraqbot
Niveau 10
13 octobre 2013 à 20:44:49

Bonjour.

Je souhaite faire un programme qui calcule la moyenne de notes inscrites au clavier ainsi que les X meilleures notes parmis celles-ci.

J'avais pensé à faire un tableau, mais je me retrouve avec un Segmentation Fault. J'aimerais donc qu'une âme charitable m'aide à résoudre ce problème.

Le code: http://pastebin.com/ARaCeMMj

Merci beaucoup de votre aide future ! :)

godrik
godrik
Niveau 30
13 octobre 2013 à 21:04:11

Que faire en cas de segfault? http://erik.deblan.org/blog/index.php?article13/c-que-faire-en-cas-de-segmentation-fault

Aziraqbot
Aziraqbot
Niveau 10
13 octobre 2013 à 21:11:05

Merci je vais potasser ça :)

[denshaotoko]
[denshaotoko]
Niveau 25
13 octobre 2013 à 22:04:45

Ligne 24, à un moment donné x sera égale à nbmeilleurcote, soit la taille de ton tableau

du coup à la 29ème ligne tu accèdes à une case mémoire qui ne t'appartient pas (je ne comprends pas trop l'intérêt du tab[x] = tab[x])

et à la 27ème ligne aussi, tu fais tab[x+1], dans le cas où x est égale à la dernière case du tableau, tu rajoutes 1 => tu accèdes à une case qui ne t'appartient pas => segmentation fault

et tu as mis "x += 1", donc tu incrémentes à l'initialisation, et tu incrémentes au 3ème slot du for (x++), ça fait x+=2 à chaque itération si je dis pas de bétises

ligne 19, je sais pas si c'est autorisé, du moins conseillé de déclaré une variable au sein du boucle

ryviel
ryviel
Niveau 5
13 octobre 2013 à 22:10:46

Le premier problème se trouve bien avant ça.
Si tu choisis de n'avoir qu'une seule valeur, tab[1] n'existe pas, et tu as directement un segmentation fault sur la ligne 11.

@Azira:
Je te conseille de revoir les principes de base sur les tableaux.

Aziraqbot
Aziraqbot
Niveau 10
13 octobre 2013 à 22:13:09

ryviel oui on a vu ça y'a pas longtemps je maitrise pas encore bien, j'ai voulu faire le fou mais bon ça n'a pas marché :o))

ryviel
ryviel
Niveau 5
13 octobre 2013 à 22:18:17

Les tableaux commencent à l'indice 0 ;)

Aziraqbot
Aziraqbot
Niveau 10
13 octobre 2013 à 22:19:32

je l'avais corrigé dans mon code ça :)

Mais bon toujours un segfault, j'vais laisser ça de coté pour ce soir je reprendrais demain ça viendra tout seul :hap:

Glosoli
Glosoli
Niveau 10
14 octobre 2013 à 02:06:45

Un simple malloc ça marcherait non ?

Aziraqbot
Aziraqbot
Niveau 10
14 octobre 2013 à 07:48:31

je ne sais pas ce que c'est le malloc, on a pas vu ça :hap:

Aziraqbot
Aziraqbot
Niveau 10
14 octobre 2013 à 18:12:04

Je up car j'ai trouvé le problème pour ceux qui rencontrent ce problème.

En fait il faut faire une allocation dynamique quand on ne sait pas combien de valeurs à l'avance on aura dans le tableau :)

Glosoli
Glosoli
Niveau 10
15 octobre 2013 à 17:27:38

Oui c'est ça, il faut utiliser Malloc :hap:

Aziraqbot
Aziraqbot
Niveau 10
15 octobre 2013 à 20:46:34

Et pour les curieux j'ai aussi réussi à faire sans, en fait j'écrasais les variables dans le mauvais sens.

Du coup on utilise moins d'opérations et le programme est plus optimal :)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment