Pb code

Signaler
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007
-
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007
-
voici le code je veux cree une boucle infini qui rempli tout l'ecran de nombre mais le prob c que ds le code ci dessous il y a en bas un demi ligne qui n'est pas rempli

#include <stdlib.h>

main()
{
int sortie = 0;
int i=1;
int j=1;

do
{
randomize();
sortie --;

for(i=0;i<80;i++)
{
gotoxy(1+i,j);
printf("%d",random(9)+1);
for(j=0;j<25;j++)
{
gotoxy(i,1+j);
printf("%d",random(9)+1);
}
}
}while(sortie !=100);
getch();
return(0);
}
A voir également:

41 réponses

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
ca fait koi si tu enleves les gotoxy?
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

euh la meme chose , il ya toujours une demi-bande en bas a droite qui n'est pas rempli par des nombres
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
en fait c a cause de la rapidité de ton pc !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Hum,
Plusieurs remarque a faire!

1) Alors la le pire de pire!!!
int sortie = 0;
do {
sortir--;
...
}while(sortir != 100)


2) A quoi ca sert d'utiliser des gotoxy ? Tu peux utiliser \t et \n si c'est simplement pour remplir l'ecran de nombre aleatoire!

3)
int i=1;
int j=1;

for(i=0;i<80;i++)
{
...
}

Pareil pour j!

Il est inutile d'initialiser des variables pour ensuite les traités dans une boucle for!

4) Et voila la surprise ... Le meilleure pour la fin !
main()
{
  return(0);
} 


Bon j'en arrete ici pour les commentaires !
Mais au fait tu t'es inspiré de la "Bible des mots tordu C/C++" pour faire ce programme ?

Bref, voila comment faire simplement :
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main(void)
{
int		nAlea;
bool	c = true;

/*On initialise la graine*/
srand(time(NULL));

/*On boucle indéfiniment : while(c) <=> tant que "c" est vrai*/
while(c)
{
/*On genere le nombre aleatoirement*/
nAlea = rand();
/*On affiche le nombre avec une tabulation entre chaque nombre*/
printf("%i\t",nAlea);
}

return 0;
}


Voili voilou...
A l'avenir demande pourquoi est ce que tu fais tout ca alors qu'il y a plus simple!

Samir
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
DeAtHCrAsH ==>

main()
{
return(0);
}

c'est correct ? qu'est ce qui te gene?
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

ok jaimerai te poser quelque question sur ton code pour remplir un ecran de nb alea
a quoi sert
-bool c = true;
-srand(time(NULL));
-\t(je sais que \n sert a sauter des ligne)
je suis un debutant
et pour le tuto jai pris un qui etait sur developez.com
pour en finir le tuto est pour turbo c

merci quand meme de m'avoir eclairée
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

et encore un chose ton code rempli par colone
mais sa ne rempli pas tout lespace de la fenetre
moi je voudrais vraiment une boucle qui rempli toute la fenetre
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
djl> L'oubli d'avoir specifié le type de main!
int main() -> return 0;

Tu pourrais très bien mettre char main() -> return 10; et le programme compilerais quand meme ... Mais ce n'est pas correcte pour autant.

C'est pas parceque les compilateurs actuels accepte cette syntaxe qu'il faut coder comme des crados.
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

et en plus
jai compris comment a quoi sert \t
quand on nen met pas
il ya toujours une petite demi ligne qui n'est pas rempli ,
faut til mettre un boucle d'attente???
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
DeAtHCrAsH ==> dis moi quel est le type implicite en c ansi?
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
- le /t est le caractere tabulation.
- bool c true c'est pour la boucle while(c){ ... }, ca dis a la boucle de "tourner" tant que c est vrai(true) ... Elle tourne tout le temps dans mon cas... Pour mieux comprendre mets c false; juste avant la fin de la boucle et tu verras que tu sortira de la boucle a cet instant.

- srand(time(NULL)) permet d'initialiser la graine du générateur de nombre aléatoire. le generateur de nombre aléatoire n'est rien de plus qu'une fonction qui se base sur un nombre de départ et qui te donné d'autre nombre. La graine correspond au nombre de depart pour la fonction.
Si tu n'initialise pas la graine, tu remarqueras que ton programme te sortiras toujours les memes nombres aleatoire et dans le meme ordre.

Pour que ca écrive dans toute la fenetre tu as juste a enlever le \t .

Voili voilou ...

A++ et bonne continuation ...

Samir
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
djl> c'est un type int ... C'est pas ca que je voulais te dire!

Le prototype d'une fonction est le suivant :

type MaFonction(MesParams)
{
    ....
    return meme_type_qe_ma_fonction;
}

Le prototype d'une procédure est le suivant

MaProcedure(MesParams)
{
  ....
}


Mieux vaut coder clairement et "correctement"!
Les compilateurs rectifie beaucoup d'erreur de code sans meme qu'on s'en rende compte, et on pense avoir juste alors que c'est faut! Il ne faut pas oublier les bases instaurées par le C !

Samir
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

merci de tes explication
mais malgré que le code est mieux il ya toujours cette petite demi ligne qui n'est pas rempli du fait de la vitesse ou tout le code est executé n'y a til aucun moyen de la faire disparaitre ??
sinon je me debroullerai avec
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
sinon tu stock tous les nombres d'une ligne dans un tablo et tu l'affiches... ou un truc dans le genre !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

ou alors yatil moyen de remplir par colone
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Rafffel> C'est pas normal qu'il te manque des lignes. SI tu prends mon code tel quel et que tu enleve juste le \t, le programme devrait t'afficher des nombres sur toutes les lignes.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
DeAtHCrAsH ==> ! la base la plus profonde du c c'est le type int, avant char et void n'existait pas

int main() est rigoureusement identique à main()

en c/c++ les procedure n'existe pas, avnt que le type void existe elles renvoyait un int...

aujourd'hui main() est correcte en c, seul c et c++ necessite un type explicite
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
pardon, je ve dire seul c99 et c++
Messages postés
37
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

oui il marche tres bien mais la derniere ligne s'affiche a moitié et ceci me gene legerement on ne voit pas complement s'afficher la dernière ligne
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
rafffel> hum, c'est un probleme de rafraichissement alors... dans ce cas tu n'y peut rien, tu auras toujours ce décalage...

djl> vi vi =)

A++ all et bonne prog, puis bonne aprem ...

Samir