CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [C] Vous validez mon code ? C'est pas dégueu ?

DébutPage précedente
123
Page suivanteFin
[Key]Board [Key]Board
MP
Niveau 10
23 novembre 2015 à 22:34:00

Salut !

Bon voilà je viens de faire cet exercice :
https://www.noelshack.com/2015-48-1448313961-ex1.png

Il est au final pas très difficile, mais en fait j'ai énormément galéré, je savais pas par où commencer, j'ai tenté des trucs chelou, essayé d'aller beaucoup trop loin... Bref je me suis retourné le cerveau un grand nombre de fois :hap:
J'ai quand même passé 2h sur l'exercice n°1 d'un TP qui doit durer 1h30 au total (oui je m'avance, et alors ? :hap: )
J'en suis arrivé à la fin à un code qui fonctionne correctement et qui répond à la question, seulement j'arrive pas à avoir assez de recul pour savoir si mon code n'est pas "trop compliqué" et si on aurait pas pu faire plus simple, étant donné qu'il reste peut-être des traces de mes raisonnements chelou :hap:
Sachant que mon objectif, en plus d'avoir un programme qui fonctionne, est d'avoir un code le plus clair et le plus simple possible, avec mes petites connaissance de L1 info.

Le code :
http://pastebin.com/2nVU5Xg6

:merci:

Groindeporc Groindeporc
MP
Niveau 9
23 novembre 2015 à 22:58:29

Je pense pas que tu ais besoin de deux fonctions (pour la partie inférieur et supérieur du X), avec 2 for imbriqué tu peux directement créer ton X. :ok:, il suffit de compter le nombre d'espace à mettre et de rajouter une conidtion (if)

[Key]Board [Key]Board
MP
Niveau 10
23 novembre 2015 à 23:02:56

Le 23 novembre 2015 à 22:58:29 GroinDePorc a écrit :
Je pense pas que tu ais besoin de deux fonctions (pour la partie inférieur et supérieur du X), avec 2 for imbriqué tu peux directement créer ton X. :ok:, il suffit de compter le nombre d'espace à mettre et de rajouter une conidtion (if)

C'est surtout une question de lisibilité je pense :(
Après c'est clair que déjà sans rien modifier j'aurais pu rassembler les 2 for dans une même fonction :(

Par contre j'ai pas compris quelle condition rajouter. :(

jordi132 jordi132
MP
Niveau 6
23 novembre 2015 à 23:14:48

:salut:

J'ai bien aimé ton exo donc j'ai essayé de le refaire sans avoir vu ce que t'as proposé, en 20 minutes je suis arrivé à ça:

http://pastebin.com/AvKEtF5n

J'ai fais que le "affichageHaut" mais une fois qu'on a compris le principe du haut c'est facile de faire le bas :)

Message édité le 23 novembre 2015 à 23:18:01 par jordi132
Chocolate Chocolate
MP
Niveau 40
23 novembre 2015 à 23:17:56

Dans le genre bonne pratique, j'aurais tendance à dire que le "h - (k * 2 + 2)" (et ses consœurs) dans la boucle for est pas top, parce que ce calcul est réalisé à chaque ré-exécution de ta boucle alors que le résultat pourrait être conservé dans une variable. Mais c'est pas grand chose

Message édité le 23 novembre 2015 à 23:18:15 par Chocolate
[Key]Board [Key]Board
MP
Niveau 10
23 novembre 2015 à 23:23:47

Le 23 novembre 2015 à 23:17:56 Chocolate a écrit :
Dans le genre bonne pratique, j'aurais tendance à dire que le "h - (k * 2 + 2)" (et ses consœurs) dans la boucle for est pas top, parce que ce calcul est réalisé à chaque ré-exécution de ta boucle alors que le résultat pourrait être conservé dans une variable. Mais c'est pas grand chose

Bonne remarque :oui:
EDIT : Pas vraiment en fait, à chaque tour de boucle le résultat est différent puisqu'il y a un nombre différent d'espaces à chaque fois :(

Message édité le 23 novembre 2015 à 23:26:25 par [Key]Board
Chocolate Chocolate
MP
Niveau 40
23 novembre 2015 à 23:28:20

Pas pour h - (k * 2 + 2) surtout. Dans la boucle, h et k ne sont jamais modifiés puisque tu ne fais que des printf. ^^

Message édité le 23 novembre 2015 à 23:29:32 par Chocolate
[Key]Board [Key]Board
MP
Niveau 10
23 novembre 2015 à 23:29:49

Le temps d'écrire mon 2eme edit, le temps est dépassé :

EDIT2 : Ah ouais j'aurais pu faire une variable dans le 1er for, ça calculera quand même moins souvent :(
ça a vraiment un intérêt ? :(
Pour le coup je me dis que ça fera encore une variable de plus et potentiellement plus de fouillis ?
Par ailleurs, dans ce cas précis on s'en fiche mais, si on met plein de variables, ça va bouffer plus de RAM, mais si à la place on fait pus de calculs ça bouffe plus de CPU, qu'est-ce qui est mieux côté optimisation ?

[Key]Board [Key]Board
MP
Niveau 10
23 novembre 2015 à 23:31:12

Le 23 novembre 2015 à 23:28:20 Chocolate a écrit :
Pas pour h - (k * 2 + 2) surtout. Dans la boucle, h et k ne sont jamais modifiés puisque tu ne fais que des printf. ^^

Oui en effet, là où k est modifié c'est à chaque tour de la 1ere boucle.
Donc c'est au début de cette boucle "répétition de l'affichage d'une ligne" que tu je devrais ajouter une variable ?

Chocolate Chocolate
MP
Niveau 40
23 novembre 2015 à 23:35:23

ça a vraiment un intérêt ?

Je ne sais pas. :hap:
Dans ton script, clairement pas, on s'en fout en terme de performances vu le nombre de tours et la puissance des PCs actuels. Mais il peut y avoir des situations où des boucles réalisent des millions d'itérations et ce genre de détail peut (je pense) devenir important, surtout si le matériel est peu puissant (vu que c'est du C, ça peut être de l'embarqué).

Bref, il en reste que ma remarque ne casse pas trois pattes à un canard. Toutefois, moi je trouve ça plus lisible. Tu peux même te passer du commentaire, avec une variable correctement nommée.

int nb_spaces = h - (k * 2 + 2);
for (int p = 0; p < nb_spaces; ++p) {
    printf(" ");
}
Message édité le 23 novembre 2015 à 23:35:55 par Chocolate
[Key]Board [Key]Board
MP
Niveau 10
23 novembre 2015 à 23:47:37

Le 23 novembre 2015 à 23:35:23 Chocolate a écrit :

ça a vraiment un intérêt ?

Je ne sais pas. :hap:
Dans ton script, clairement pas, on s'en fout en terme de performances vu le nombre de tours et la puissance des PCs actuels. Mais il peut y avoir des situations où des boucles réalisent des millions d'itérations et ce genre de détail peut (je pense) devenir important, surtout si le matériel est peu puissant (vu que c'est du C, ça peut être de l'embarqué).

Bref, il en reste que ma remarque ne casse pas trois pattes à un canard. Toutefois, moi je trouve ça plus lisible. Tu peux même te passer du commentaire, avec une variable correctement nommée.

int nb_spaces = h - (k * 2 + 2);
for (int p = 0; p < nb_spaces; ++p) {
    printf(" ");
}

OK merci, c'est clair :oui:

jordi132 jordi132
MP
Niveau 6
23 novembre 2015 à 23:49:03

Bah dans:

Do
{
blabla;
} while (Condition d'arrêt);

la condition d'arrêt c'est ce qui vient après le while dans ce cas

[Key]Board [Key]Board
MP
Niveau 10
23 novembre 2015 à 23:51:29

Le 23 novembre 2015 à 23:49:03 Jordi132 a écrit :
Bah dans:

Do
{
blabla;
} while (Condition d'arrêt);

la condition d'arrêt c'est ce qui vient après le while dans ce cas

Bah ouais donc il fonctionne comment ton Do ? :hap:

[SOD]Keisuke [SOD]Keisuke
MP
Niveau 7
23 novembre 2015 à 23:58:29

La boucle
Do
{
// instructions
}while(condition);

Sert à effectuer au moins une fois l'instruction, et puis si la condition n'est pas respectée il sort de la boucle

[Key]Board [Key]Board
MP
Niveau 10
24 novembre 2015 à 00:07:01

Le 23 novembre 2015 à 23:58:29 [SOD]Keisuke a écrit :
La boucle
Do
{
// instructions
}while(condition);

Sert à effectuer au moins une fois l'instruction, et puis si la condition n'est pas respectée il sort de la boucle

OK merci :ok:

[SOD]Keisuke [SOD]Keisuke
MP
Niveau 7
24 novembre 2015 à 00:08:25

En gros,


int i = 0;
do
{
    printf("Je ne m'affiche qu'une fois");
}while(i > 0);

Affichera "Je ne m'affiche qu'une fois" à l'écran alors que la condition de boucle n'est pas respectée

[Key]Board [Key]Board
MP
Niveau 10
24 novembre 2015 à 00:26:43

Le 24 novembre 2015 à 00:08:25 [SOD]Keisuke a écrit :
En gros,


int i = 0;
do
{
    printf("Je ne m'affiche qu'une fois");
}while(i > 0);

Affichera "Je ne m'affiche qu'une fois" à l'écran alors que la condition de boucle n'est pas respectée

OK merci je comprends :ok:

ZelteHonor ZelteHonor
MP
Niveau 7
24 novembre 2015 à 00:46:17

Je dis peut-être des conneries et je connais pas le C, mais pourquoi ne pas considérer les 2 barres du X comme des équations d'une droite?

Donc tu te créer un tableau de char de taille h par h. Et ensuite tu traverse le tableau avec un x et un y. Si: (y égal x) ou (y égal -x + h) tu mets une étoile.

[Key]Board [Key]Board
MP
Niveau 10
24 novembre 2015 à 00:52:22

Le 24 novembre 2015 à 00:46:17 ZelteHonor a écrit :
Je dis peut-être des conneries et je connais pas le C, mais pourquoi ne pas considérer les 2 barres du X comme des équations d'une droite?

Donc tu te créer un tableau de char de taille h par h. Et ensuite tu traverse le tableau avec un x et un y. Si: (y égal x) ou (y égal -x + h) tu mets une étoile.

Heu je sais pas comment tu veux faire ça :noel:

ZelteHonor ZelteHonor
MP
Niveau 7
24 novembre 2015 à 01:02:56

Tu ne peux pas faire un tableau en dimension en C et le parcourir?

Message édité le 24 novembre 2015 à 01:03:14 par ZelteHonor
DébutPage précedente
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment