Débutant en C... - C - Programmation
Marsh Posté le 05-10-2013 à 22:45:38
Citation : coder des "B" pour en faire un carré a taille variable dont les coins sont des 'C' et des 'A', |
Soit plus explicite.
Marsh Posté le 05-10-2013 à 23:08:09
Coder des char(66) si tu préfères pour donner en gros un carré qui se définit comme ça :
Carré(int x, int y)
Si x = 3
Y = 4
Ça donne
ABC
B B
B B
CBA
En gros voilà. Mais je veux pas la solution je suis la pour chercher pas pour me faire servir, j'ai juste besoin d'une aide concernant la logique informatique, la façon de démanteler un énoncé pour construire ma fonction pièce par pièce.. Je sais que c'est la clé mais je sais pas comment faire...
Marsh Posté le 05-10-2013 à 23:17:11
shize815 a écrit : Coder des char(66) si tu préfères pour donner en gros un carré qui se définit comme ça : |
je peux te dire qu'un carré les dimensions des côtés son identiques donc c'est Carré(int size)
Après je sais pas de suite mais j'ai la nuit pour y réfléchir.
Marsh Posté le 05-10-2013 à 23:29:26
Epitech..
Sinon, pour ton problème, cherche du côté des boucles for.
Une boucle for te permet de répéter un bout de code plusieurs fois, elle se décompose comme ça :
Code :
|
En général, tu verras la boucle for dans ce genre :
Code :
|
Le principe dans ce cas est simple :
On initialise une variable i à 0 (attention, dans ce cas la variable i n'existe qu'à l'intérieur de ta boucle, en dehors de celle-ci elle n'existe plus, cf le scope)
On vérifie si i est bien inférieur à 2. Si ce test est faux, alors on arrête la boucle, sinon, on exécute le code à l'intérieur, puis on exécute le pas (i++, qui signifie on incrémente i, équivalent à i+=1 et i = i+1).
En somme, dans ce cas tu va exécuter le code 2 fois :
Une fois i=0
Une fois i=1
Lorsque i passe à 2, on arrête.
Un exemple pour dessiner une ligne de * en C, on peut configurer le nombre d'étoile :
Code :
|
Un autre pour afficher i à chaque étape (séparés par un espace)
Code :
|
Ca te sortira 0 1 2 3 4 sur ta console. (printf est formaté, tu peux facilement afficher des entier via %i, des nombre décimaux via %f / %d (float ou double), etc..)
Dans ton cas, tu vas devoir utiliser une double boucle for (c'est plus simple à concevoir comme ça)
Essais avec une double boucle for de faire un carré d'étoile. Lorsque tu auras pigé le truc, tu pourras facilement faire ton exercice.
Marsh Posté le 05-10-2013 à 23:52:09
En fait j'ai dit carré mais c'est une forme a 4 côté, rectangle ou carré quoi ^^
Ouais sauf qu'en fait la bas on a une "norme" a respecter, très restrictive mais qui force a se creuser les méninges, la commande For est interdite, et la seule fonction a laquelle on ait droit est my_putchar.
Sinon on a droit aux while, aux if et aux else !
Sinon, je vois que tu te moques d'Epitech... À moi cette école m'a l'air très bien, très exigeante mais ça permet une meilleure productivité au final, enfin je pense
Après si c'est pour le prix... Ça peut faire sourire mais je me dis qu'avec 100% d'anciens étudiants engagés en CDI a 2.000€ net minimum dès la sortie (ils s'y engagent par contrat lors de l'inscription), je vois plus ça comme un investissement qu'autre chose ^^ mais c'est vrai que c'est cher.
Je comprends que des gens comme toi, qui ont déjà des connaissances de bases, puissent préférer d'autres écoles, mais j'aime bien son fonctionnement et son ambiance
Marsh Posté le 05-10-2013 à 23:53:05
Je précise que, si For est interdite durant toute la scolarité, on aura droit à d'autres fonctions que my_putchar après la piscine... Une fois qu'on les aura codées nous-même.
Marsh Posté le 06-10-2013 à 00:12:01
Moi j'ai fait ça, mais ça compile pas.
L'idée est la quoi.
Code :
|
Marsh Posté le 06-10-2013 à 00:18:16
L'alternative à for, c'est while, et for n'est q'une facilité du while.
Marsh Posté le 06-10-2013 à 00:19:32
Oulah c'est bien trop compliqué pour mon niveau ça ^^ je sais pas ce qu'est Struct. Ni Void ni <stdio> et j'ai pas le droit à printf. Tout un challenge ^^ je dois me démerder avec my_putchar, int, while, if et else ! Haha
Marsh Posté le 06-10-2013 à 00:25:42
Tu peux aussi coder ça avec un while effectivement :
Code :
|
Ou en récursif :
Code :
|
Mais commence par faire avec des boucles for pour comprendre le principe, ensuite tu pourras chercher un moyen de faire sans for.
Pour ce qui est de my_putchar, faudrait voir la fonction pour juger.
Jovalise : Il manque les espaces et retours à la ligne dans ton implémentation
Pour ce qui est d'Epitech, j'en ai entendu parler et au final, on paye pour faire de l'autodidactie, chose qui est faisable gratuitement chez soi, qui plus et on m'a raconté qu'avec un peu de pognon en plus, on validait son année plus facilement..
Mais bon, c'est pas vraiment le sujet du topic
edit : Ok je viens de voir les messages pendant que je rédigait, my_putchar permet d'afficher un caractère sur la console ?
Marsh Posté le 06-10-2013 à 00:37:37
C'est ça pour my_putchar, un caractère à la fois
Ouais je vais m'entraîner avec while et je verrai bien, merci en tout cas !
Haha oui c'est une manière de voir les choses mais c'est de l'autodidacte très poussif, jamais je me ferai 15h/jour d'exos au dessus de mes capacités en autodidacte ^^ et puis t'es encadré et tout ça, après si t'es assez consciencieux pour te pousser au Max tout seul, tout ce qui tu perds c'est l'ambiance mais effectivement ça justifie pas le prix comme je t'ai dit, ce qui le justifie c'est surtout la perspective d'emploi dès la sortie.
Ils ont le bras long chez Epitech, ils se grattent les pieds sans se baisser si tu veux ^^ mais bref, oui c'est pas le sujet ^^
Du coup bon, je vais essayer de maintenir le cap quitte a ne pas rendre mes exos a temps.. Faut que j'arrive à choper la logique de coder en C, c'est surtout ça. Ça viendra...
Rassurez moi, au début vous en avez chié aussi ? Vous faisiez que des petites fonctions bidon ?
Remarque c'est pas vraiment comparable, généralement on m'a dit que ceux qui codent apprennent directement avec une librairie alors que nous on doit se contenter de my_putchar donc c'est différent mais bon...
Marsh Posté le 06-10-2013 à 00:51:45
Voilà, donc suffit de remplacer avec un while :
Code :
|
Ou si tu veux, en récursif (tu appelle la même fonction plusieurs fois)
Code :
|
Pour le retour à la ligne, c'est le caractère spécial '\n'.
Si tu fais dans une boucle my_putchar('*'); my_putchar('\n'); ça t'affichera une colonne d'étoiles.
Et oui, en prog au début on galère jusqu'à avoir le déclic (ce que tu cherche, la logique derrière la prog), faut te trouver un truc ludique à faire et ça viendra
Quand tu commences, en général tu te sers de la librairie standard (stdio, stdlib) pour avoir accès aux fonctions comme printf / scanf (écrire sur la console / saisir du texte), la gestion des fichiers, les allocations mémoire, les fonctions et tout le tralala.
Les libraires sont dispo via la commande #include (#include <stdio.h> pour printf/scanf et les fichiers par exemple), si jamais t'es tenté
Marsh Posté le 06-10-2013 à 01:45:44
Code :
|
Marsh Posté le 06-10-2013 à 13:05:55
shize815 a écrit : Je précise que, si For est interdite durant toute la scolarité, on aura droit à d'autres fonctions que my_putchar après la piscine... Une fois qu'on les aura codées nous-même. |
L'interdire durant toute la scolarité serait d'une stupidité absolue.
Tu peux utiliser cette équivalence:
for (A; B; C) { code; } équivaut à { A; while (B) { code; C; } }
A+,
Marsh Posté le 06-10-2013 à 13:35:25
Crée une fonction qui t'affiche les caractères ligne par ligne, tu lui envoies 3 parametres, le premier caractere, celui du milieu et le dernier. Tu l'appelles autant de fois que tu as de lignes en changeant les parametres envoyés.
Marsh Posté le 06-10-2013 à 14:19:29
C'est pas mal comme idée, enfin, elle me diverti. Mais je suis pas certain de vouloir mettre la moitié d'un algo à un bout du code et la moitié à l'autre.
Marsh Posté le 06-10-2013 à 14:58:58
shize815, dans un premier temps, ça peut ressembler à ceci:
Imprimer un rectangle, c'est imprimer la première ligne, puis imprimer les lignes du milieu, puis imprimer la dernière ligne
Imprimer une ligne, c'est imprimer le premier caractère, puis les caractères du milieu, puis le dernier caractère, puis le caractère de retour à la ligne
Code :
|
Ensuite, tu peux regrouper cela en une version plus condensée:
Code :
|
A+,
Marsh Posté le 06-10-2013 à 16:08:50
Pourquoi vous écrivez tous votre code dans des balises cpp ?
Marsh Posté le 06-10-2013 à 18:09:44
Parce que c'est pas du Ada ?
Marsh Posté le 06-10-2013 à 18:20:00
ReplyMarsh Posté le 06-10-2013 à 18:32:06
Non, la balise était code=ada, vérifie
Marsh Posté le 06-10-2013 à 19:58:33
Rebonsoir, je bloque complètement a un truc tout con. Je dois coder un sapin, soit une superposition de triangle.
Donc je code mes triangles a taille variable mais ça fait juste un escalier vu qu'il manque les espaces, donc je code mes espaces (des triangles à l'envers donc) pour mettre mes triangles derrière. Sauf que je sais pas comment aligner les deux, il me met mon triangle "invisible" (fait d'espaces) au dessus et mon escalier de caractères que je voulais changer en triangle en dessous, du coup bah ça se change pas en triangle.
Comment faire ? Je pense que c'est à cause d'un '\n' mal placé mais je vois pas comment les bouger sans simplement virer les escaliers... Et si je mélange les deux fonctions (mon escalier invisible inversé et mon escalier visible donc), j'ai peur de faire de la merde et en plus je dépasserais largement les 25 lignes/fonction autorisées...
Donc des idées ? ^^
Marsh Posté le 06-10-2013 à 20:00:08
shize815 a écrit : En fait j'ai dit carré mais c'est une forme a 4 côté, rectangle ou carré quoi ^^ |
shize815 a écrit : Je précise que, si For est interdite durant toute la scolarité, on aura droit à d'autres fonctions que my_putchar après la piscine... Une fois qu'on les aura codées nous-même. |
Non
Et tu ferais mieux de travailler avec tes camarades en galère à 2m de toi, c'est un peu le but de la piscine
Marsh Posté le 06-10-2013 à 20:04:25
Oui sauf que c'est déjà eux qui m'aident depuis le premier jour et je commence à culpabiliser de leur demander de l'aide tout le temps... Surtout qu'expliquer au lieu de donner la solution est bien plus long.
Mais je suppose que je vais retourner leur demander oui...
Autant pour moi pour For, je croyais avoir lu ça dans la norme.
Un problème avec l'autruche ?
Marsh Posté le 06-10-2013 à 20:08:29
Tu devais avoir beaucoup fumé pour imaginer un contrat de la sorte
Et si ce sont toujours les même qui t'aident tu peux
- aller en voir d'autres
- continuer à voir les même et réaliser qu'expliquer permet d'appréhender + de subtilités et qu'un jour ils ne connaîtront pas la réponse
Et il doit te rester 3 heures et demi pour le sapin, tu es en retard
Marsh Posté le 06-10-2013 à 22:53:50
gilou a écrit : shize815, dans un premier temps, ça peut ressembler à ceci:
|
c'est l'idée, mais l'idée c'était aussi de juste lui donner l'idée, pas le code tout fait.
Marsh Posté le 06-10-2013 à 23:54:44
Vu son post initial j'ai préféré faire du pédagogique.
A+,
Marsh Posté le 05-10-2013 à 21:44:58
Bonjour messieurs-dames, je suis nouveau sur ce fofo et je me suis inscrit pour une raison simple.
Après avoir perfectionné mon anglais pendant 2 ans en fac (d'anglais donc), je m'attaque à Epitech, content de ne pas avoir a me soucier de mon TOEIC et, jusque la du moins, décidé à apprendre le C avec ferveur !
Sauf que là, c'est la grosse débandade. Alors qu'on m'avait dit qu'aucune connaissance ni en maths ni en info n'étaient requises pour l'école puisque qu'on apprenait tout sur le tas pendant la fameuse "piscine", je suis complètement largué alors qu'on finit a peine la première des trois semaines...
Des le début j'entendais mes voisins parler de récursives, d'appels de fonctions et de pointeurs, et moi à côté je passe la journée à tourner en rond dans les exos que je suis incapable de finir...
Je commence à piger le fonctionnement de "base" du c, j'intègre une partie du vocabulaire, mais je galère, on nous jette directement dedans sans aucune explication ou théorie, sauf que du coup c'est pas du tout équitable parce que contrairement à beaucoup, j'ai ni bac S (donc pour les exos ou je dois coder une factorielle, je peux me brosser.) ni connaissances en C, j'avais jamais touché une console avant lundi et je rame comme pas permis...
Du coup je me demandais ou je pourrais trouver des petites leçons de C en ligne, mais des leçons bien spécifiques, je veux pas qu'on m'apprenne a utiliser des pointeurs ou des trucs compliqués comme ça, j'ai d'abord besoin, avant ça, qu'on m'apprenne la manière de raisonner pour coder. De la "méthodo" en quelques sortes...
J'ai un projet à présenter pour demain ou je dois coder des "B" pour en faire un carré a taille variable dont les coins sont des 'C' et des 'A', et en soi c'est pas très compliqué je pense qu'avec la bonne manière de découper mon projet étape par étape je peux m'en sortir, mais les raisonnements logiques avec un Bac L et 2 ans de fac d'anglais c'est vrai que j'ai quand même perdu la main quoi...
Voilà donc la j'ai un peu raconté ma vie (la piscine est une période très éprouvante moralement aussi donc je devais avoir besoin de vider mon sac ^^) mais en gros voilà le topo. J'aurais besoin qu'on me montre comment raisonner en C, comment penser en C. Après, et après seulement, je me concentrerai sur les récursives, les appels de fonction, les pointeurs, les tableaux et autres réjouissances... (Encore que, les appels de fonctions, ça commence à rentrer.)
Si vous avez pris le temps de me lire (et j'ai conscience qu'il y a matière à se décourager avant la fin), merci de votre temps/attention bye !