Programme C

Résolu
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   -  
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Voila j'ai un programme en C mais celui-ci ne marche que sur codeblock sous windows et des que je le lance dans le terminal de ubuntu il ne m'affiche que 0 1..
Help me



#include<stdio.h>
#include<stdlib.h>
main(){
int a;
int b;
int c;
a = 1;
b = 1;
c = 0;
printf("%d\n", c);
triangulaire:
if(a>1000)exit(0);
a = a+1;
b = a+b;
entier:
if(c>100)exit(0);
c = c+1;
if(c<a)
{ printf("%d\n",c);
goto entier;
}
goto triangulaire;
}


35 réponses

Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
if(c<a)
{ printf("%d\n",c);
goto entier;
}
goto triangulaire;
}


en fait, je n'avais pas regardé ton code du début, mais j'ai vu ce que j'ai copié ci-dessus.
goto == le mal en personne (ou plutot en commande C)

il faut que tu apprennes l'utilisation des variables et des boucles. n'utilise jamais le goto, on peut tout faire sans lui même si ça parait plus compliqué. Le goto est une énorme source de bug. Oublie ce mot. Pour toujours.
1
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
up
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Question con, as tu recompilé ?
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Le résultat est normal. Il ne faut pas trop se fier à ce qui se passe sous Windows ;-)
Rajoute des 'printf' du style
  printf("a=%d b=%d c=%d\n", a, b, c);
et tu comprendras.
Bonne réflexion.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
Oki merci je vais essayer
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
heu quesque l'action de compiler ?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
compiler = transformer ton code (du texte) en programme ( du code binaire machine). Lorsque tu fais des modifications dans ton code, selon l'environnement que tu utilises, il faut bien compiler ton programme avant de le lancer, sinon l'environnement va lancer le dernier programme compilé, c-est-à-dire avant que tu fasses la modification, c'est pour cela qu'il te conseillait d'essayer de recompiler avant.

Mais suis les conseils de Loupius surtout.
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663 > Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention  
 
oups pardon, j'ai mal compris ton problème :
La c'est un problème de systèmes d'exploitation : le programme compilé avec code blocks sous windows ce sera un .exe , avec du code conçu pour être compris par Windows.
Pour Ubuntu, vu que c'est linux, il faut reprendre ton code et le compiler (gcc ...) pour en faire un programme linux. Sinon il n'y a aucune chance que ça marche : Windows et Linux (ou plutot Unix) ne parlent pas la même langue.
0
Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   47
 
Installe Cygwin pour Windows, tous les packages de Dev, et fais moi signe quand tu auras déjà fait ca.
0
Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   47
 
Bon je balance la suite. Il t'aura surement installé Cygwin dans C:/cygwin.

Place ton fichier C dans c:/cygwin/home

Lance Cygwin.

On lance la compilation du fichier :

gcc -c fichier.c
gcc fichier.o -o fichier
./fichier
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
Ah non ces bon pour windows ce n'est que sous linux que le programme marche d'ailleur que sa marche ou pas sous win je men fiche un peu ^^
mais merci quand meme
0
Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   47
 
Je suis peut être allé un peu vite sur les explications. Cygwin est un programme qui te simule un environnement Linux sous Windows, et très simple d'emploi. Donc si tu veux faire marcher ton programme sous windows, ou meme programmer sou swindows... CYGWIN !
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
Oki merci
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
Mais jai deja compiler mais ligne de code sous ubuntu avec gcc -o nomdufichier.c test
./test
et c la que sa maffiche 0 1
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Mais c'est normal que tu n'aies que 0 1.
Comme dirait Paco, fais tourner ton code à la main et avec un crayon note le résultat.... et tu trouveras 0 1.
Bonne réflexion.
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
arf ji suis presque je le sens
voila la fonction que j'ai faite elle fait apparaitre les nombres triangulaires et maintenant je doit faire apparaitre les nombres entier (1 2 3 4 5 ect..) sans les triangulaire dedans
La question ces comment faire cela ? ces avec unefonction for que lon fait sa nn ?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
oui il faudra une boucle for, bien entendu.

Pour afficher tous les nombres entiers jusqu'à 99:

for (int nombre=1; nombre< 100; nombre++) {
  printf("%d ", nombre);
}


pour ne pas écrire ceux qui sont triangulaires, tu peux utiliser un tableau de nombres triangulaires que tu as calculé.
je suppose que c'est celui-ci : int nbTriang[N] // contient les N premiers nombres triangulaires

Alors, comme les nombres triangulaires sont rangés dans le tableau (le plus petit est nbTriang[0]), ilsuffit d'attendre que tu tombes sur le premier. Si tu tombes dessus, tu n'affiches rien. Et ensuite tu t'attends à voir apparaitre le deuxième, etc... ça devient ceci :

int compteur=0;

for (int nombre=1; nombre< 100; nombre++) {

  //on vérifie si le nombre actuel est le prochain nombre triangulaire
  if (nombre == nbTriang[compteur]) {
    //ici on n'affiche pas le nombre
    //mais il faut avancer le compteur pour le prochain qui apparaitra
    compteur++;
  }
  else {
    //le nombre n'est pas le prochain trangulaire alors on l'affiche
    printf("%d ", nombre);
  }
}
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
Oki merci pour votre aide.
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
Ah oki mais fraudré surtout le dire a nos prof a la fac ils nous le sorte toutes les 30 secondes ^^
Enfin personnellement j'apprend plus chez moi avec le net que a la fac enfin bon merci du conseil.
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
à la fac : non, c'est pas vrai, tu rigoles ? Tu peux nous dire laquelle est-ce, je suis extrêmement curieux :) ?
0
Romiinet Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   107
 
quel horreur enlevé moi ses GOTO !! O_o
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
Paris 8 université de Saint seint denis dans le 93
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
On vien juste de commencer les boucles for avec on a plus besoin d'utiliser goto donc je pourais suivre ton conseil et ne plus lutiliser enfin je crois
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
oui, alors ça doit juste être très très temporaire, le temps que tu apprennes les boucles en effet. J'ai eu peur tout d'un coup :)
0
kirua-93 Messages postés 599 Date d'inscription   Statut Membre Dernière intervention   72
 
C'est si horrible que sa mdr
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
et je me rends compte que ma réponse avec le tableau doit être incompréhensible pour toi alors, désolé.
0