oui, mais si tu l’utilise uniquement en console (comme un vrai puriste), pas besoin des menus.
Pis si tu t’interresse à l’info, il faut se mettre à l’anglais.
Même sans, d’ailleurs, ça sert partout ailleurs qu’en france.
Dis moi, en console c’est pas un petit peu galère de remonter au début du code (vive la molette) ?
Quant à l’anglais, j’ai bien compris qu’il faut s’y mettre !
Il y a forte à parier que je remonte plus vite en début de mon fichier avec mes touches clavier que toi avec la molette de ta souris
Ah ? Et comment ça, môssieur ?
C’est possible de tout remonter/redescendre d’un coup ?
Je suppose bien-sûr qu’il y a de la coloration syntaxique.
Avec vim c’est possible ( coloration syntaxique, auto-indentation…)
vim ? vi tu veux dire, non ?
Sinon j’ai testé le emacs en console, je pige rien, moi je suis habitué à mon nano !
[quote=“wavesound”]Ah ? Et comment ça, môssieur ?
C’est possible de tout remonter/redescendre d’un coup ?
Je suppose bien-sûr qu’il y a de la coloration syntaxique.[/quote]
Essaye emcas et tu adopteras !
M-< et M-> + coloration syntaxique …
Bon, je viens de terminer l’ajout d’une boucle qui demande de rejouer pour le petit jeu du plus et du moins.
Seulement, quelque chose m’intrigue.
Vers la fin :
printf("Rejouer une partie [o/n] ? ");
scanf("%c", &rejouer);
scanf("%c", &rejouer);
printf("\n");
Le scanf ne fonctionne pas si je ne le saisis qu’une fois, mais lorsque mon père m’a conseillé de le saisir une seconde fois pour tester, ça a fonctionné cette fois. Pourtant, les scanf sont exactement les mêmes. Si vous pouviez essayer de compiler mon code afin de m’expliquer un peu tout ça, je vous en serai très reconnaissant !
Voici le code complet :
[code]/* GNUPlusMinus 1.0.0 (06/07/07)
GNU General Public License 2.0 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
// Un petit menu\n");
// Fin (Un petit menu)
char rejouer = 'O';
// La boucle qui permet de rejouer une fois le bon nombre trouvé
do
{
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;
// Génération d'un nombre aléatoire
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
// Fin (Génération d'un nombre aléatoire)
// La boucle qui ne s'arrêtera que lors de la saisie du bon nombre
do
{
printf("Quel nombre pensez-vous que j'ai choisi ? ");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
{
printf("C'est supérieur.\n\n");
}
else if (nombreMystere < nombreEntre)
{
printf("C'est inférieur.\n\n");
}
else
{
printf("C'est exact ! Epatant, vous êtes épatant !\n\n");
}
}
while (nombreEntre != nombreMystere);
// Fin (La boucle qui ne s'arrêtera que lors de la saisie du bon nombre)
printf("Rejouer une partie [o/n] ? ");
scanf("%c", &rejouer);
scanf("%c", &rejouer);
printf("\n");
} while (rejouer == 'o');
// Fin (Le début de la boucle qui permet de rejouer une fois le bon nombre trouvé)
return 0;
}[/code]
Quelqu’un a une idée ?
Il faudrait penser à utiliser puts au lieu de printf si ta chaine de caractères ne contient aucune variable ! En plus, cela t’éviteras de mettre des “\n” tout le temps.
puts, je ne connais pas encore.
Je vais aller me renseigner sur le site du Zér0.
Bon ! Je suis sûr d’avoir bien bossé aujourd’hui, décidément j’ai l’impression que j’avance vite, confiant.
Demain, lever 8h30, hop hop je m’y mets.
Nope même pas de petit-déj !
Bonne nuit à tous !
Comme apparemment ici on parle de prog en C, je ne peux pas m’empêcher de venir y faire un tour pour embêter le monde
Voilà c’est un peu complexe pour les débutants mais je ne connais pas mieux au niveau tutos pour débuter.
bien-programmer.blogspot.com/
mapage.noos.fr/emdel/
et maintenant le forum 82478.forums.motigo.com/
Pour ton scanf qui n’est pas pris en compte, c’est un problème de buffer (tampon) qui n’est pas vide, à mon humble avis.
[quote=“wavesound”]vim ? vi tu veux dire, non ?
Sinon j’ai testé le emacs en console, je pige rien, moi je suis habitué à mon nano ! [/quote]
Non c’est bien vim, c’est une amélioration de vi (vi improved)
http://www.vim.org/
Ah, merci.
J’ai un suivi les tutos de Ash et j’adore surtout /emdel qui m’a appris quelques petits trucs.
Je me suis donc lancé ce matin dans la création d’une boucle pour ma calculette avec menus, qui demande à l’utilisateur s’il veut effectuer un autre calcul.
Hélas j’ai des problèmes.
Y a t-il quelque chose d’anormal ?
[code]/* SimpleCCalculator 1.0.0 (06/07/07)
GNU General Public License 2.0 */
#include <stdio.h>
int main(void)
{
int choix = 0;
float resultat = 0, nombre = 0, nombre2 = 0;
// Le menu du programme
printf("\n");
char autreCalcul = 'o';
// La boucle qui permet d'effectuer un nouveau calcul
do
{
switch (choix)
{
// L'addition
case 1:
printf("Vous souhaitez effectuer une addition.\n\n");
printf("Entrez le premier nombre : ");
scanf("%f", &nombre);
printf("Entrez le deuxième nombre : ");
scanf("%f", &nombre2);
resultat = nombre + nombre2;
printf("%f + %f = %f", nombre, nombre2, resultat);
printf("\n\n");
break;
// Fin (L'addition)
// La soustraction
case 2:
printf("Vous souhaitez effectuer une soustraction.\n\n");
printf("Entrez le premier nombre : ");
scanf("%f", &nombre);
printf("Entrez le deuxième nombre : ");
scanf("%f", &nombre2);
resultat = nombre - nombre2;
printf("%f - %lf = %f", nombre, nombre2, resultat);
printf("\n\n");
break;
// Fin (La soustraction)
// La multiplication
case 3:
printf("Vous souhaitez effectuer une multiplication.\n\n");
printf("Entrez le premier nombre : ");
scanf("%f", &nombre);
printf("Entrez le deuxième nombre : ");
scanf("%f", &nombre2);
resultat = nombre * nombre2;
printf("%f * %f = %fLa boucle qui permet d'effectuer un nouveau calcul", nombre, nombre2, resultat);
printf("\n\n");
break;
// Fin (La multiplication)
// La division
case 4:
printf("Vous souhaitez effectuer une division.\n\n");
printf ("Entrez le dividande : ");
scanf("%f", &nombre);
printf("Entrez le diviseur : ");
scanf("%f", &nombre2);
resultat = nombre / nombre2;
printf("%f / %f = %f\n\n", nombre, nombre2, resultat);
break;
// Fin (La division)
// default, utilisé si un nombre incorrect est saisi lors de l'invite
default:
printf("Opération inconnue. Veuillez relancer le programme et saisir un nombre valide.\n\n");
break;
// Fin (default, utilisé si un nombre incorrect est saisi lors de l'invite)
}
printf("Effectuer un autre calcul [o/n] ? ");
scanf("%c", &autreCalcul);
printf("\n");
} while (autreCalcul == 'o');
// Fin (La boucle qui permet d'effectuer un nouveau calcul)
return 0;
}[/code]
si tu disais ce qui ne va pas…
Désolé.
Lorsque je compile tout va bien, lorsque je lance aussi.
Il me printe bien “Effectuer un autre calcul [o/n] ?” mais je ne peux pas saisir quoi que ce soit, on me redonne la main en $ (en gros le programme est fini).
[...]
Effectuer un autre calcul [o/n] ?
wavesound@Whale:~$
J’ai trouvé, même problème que l’autre fois : j’ai dû resaisir une seconde fois un scanf pour que ça fonctionne.
Comment vider mon buffer pour que le “problème” disparaisse ?
bon, OK.
Déjà, une première chose à faire serait avant de faire le code, d’ecrire ça en français moyen,
(etape 1) sans détailler trop ce que ça fait (faire un algorithme), avec des “tant que ceci” pour la boucle, et
"au cas ou choix vaut
telle valeur: faire ceci
telle autre: faire celà
…"
sans détailler trop le faire ceci ou faire celà.
(etape 2) Ensuite, les “faire ceci” et "faire celà, tu va les coder sous forme de fonctions séparées du main que tu va appeler ensuite avec les bons arguments depuis le main.
(étape 3)Un indice, et aprés, je te laisse expliquer ou est le problême et je te dirais si tu es sur la bonne piste:
une fois rentré dans ta boucle, à quel moment peut il executer la partie “faire le choix de l’operation” ?
Etape 1 (la plus facile ?)
Afficher menu
Afficher menu des opérations à effectuer
{Faire
Nombre saisi = 1, 2, 3 ou 4 pour 1, 2, 3 ou 4
Sinon, "impossible, connait pas ce nombre"
Si nombre saisi 1, 2, 3 ou 4
alors faire calcul correspondant
Tant que
Utilisateur écrit o, recommencer au début de la boucle
}
// Sinon, sortir de la boucle
Fin du programme
Etape 2
GNU General Public License 2.0 */
#include <stdio.h>
int main(void)
{
int choix = 0;
float resultat = 0, premierNombre = 0, deuxiemeNombre = 0;
// Le menu du programme
printf("\n");
// La boucle qui permet d'effectuer un nouveau calcul
do
{
// Le menu de choix pour les opérations à effectuer
printf("1. Addition\n2. Soustraction\n3. Multiplication\n4. Division\n\nTapez le nombre correspondant à votre choix : ");
scanf("%d", &choix);
printf("\n");
// Fin (Le menu de choix pour les opérations à effectuer)
// Le switch
switch (choix)
{
// L'addition
case 1:
printf("Vous souhaitez effectuer une addition.\n\n");
printf("Entrez le premier nombre : ");
scanf("%f", &premierNombre);
printf("Entrez le deuxième nombre : ");
scanf("%f", &deuxiemeNombre);
resultat = premierNombre + deuxiemeNombre;
printf("%f + %f = %f", premierNombre, deuxiemeNombre, resultat);
printf("\n\n");
break;
// Fin (L'addition)
// La soustraction
case 2:
printf("Vous souhaitez effectuer une soustraction.\n\n");
printf("Entrez le premier nombre : ");
scanf("%f", &premierNombre);
printf("Entrez le deuxième nombre : ");
scanf("%f", &deuxiemeNombre);
resultat = premierNombre - deuxiemeNombre;
printf("%f - %f = %f", premierNombre, deuxiemeNombre, resultat);
printf("\n\n");
break;
// Fin (La soustraction)
// La multiplication
case 3:
printf("Vous souhaitez effectuer une multiplication.\n\n");
printf("Entrez le premier nombre : ");
scanf("%f", &premierNombre);
printf("Entrez le deuxième nombre : ");
scanf("%f", &deuxiemeNombre);
resultat = premierNombre * deuxiemeNombre;
printf("%f * %f = %f", premierNombre, deuxiemeNombre, resultat);
printf("\n\n");
break;
// Fin (La multiplication)
// La division
case 4:
printf("Vous souhaitez effectuer une division.\n\n");
printf ("Entrez le dividande : ");
scanf("%f", &premierNombre);
printf("Entrez le diviseur : ");
scanf("%f", &deuxiemeNombre);
resultat = premierNombre / deuxiemeNombre;
printf("%f / %f = %f\n\n", premierNombre, deuxiemeNombre, resultat);
break;
// Fin (La division)
// default, utilisé si un nombre incorrect est saisi lors de l'invite
default:
printf("Opération inconnue. Veuillez relancer le programme et saisir un nombre valide.\n\n");
break;
// Fin (default, utilisé si un nombre incorrect est saisi lors de l'invite)
}
// Fin (Le switch)
printf("Effectuer un autre calcul [o/n] ? ");
scanf("%c", &autreCalcul);
scanf("%c", &autreCalcul);
printf("\n");
} while (autreCalcul == 'o');
// Fin (La boucle qui permet d'effectuer un nouveau calcul)
return 0;
}[/code]
Etape 3
Tout au début de la boucle.
do
{
// Le menu de choix pour les opérations à effectuer
printf("1. Addition\n2. Soustraction\n3. Multiplication\n4. Division\n\nTapez le nombre correspondant à votre choix : ");
scanf("%d", &choix);
printf("\n");
Par contre, je vois toujours pas pour mon problème…