Programme C

Résolu/Fermé
kirua-93 Messages postés 599 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 - 12 janv. 2010 à 16:17
kirua-93 Messages postés 599 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 - 28 janv. 2010 à 20:03
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 jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 janv. 2010 à 00:21
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 mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
12 janv. 2010 à 16:37
up
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
12 janv. 2010 à 16:46
Question con, as tu recompilé ?
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
12 janv. 2010 à 16:55
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 mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
12 janv. 2010 à 19:58
Oki merci je vais essayer
0
kirua-93 Messages postés 599 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
12 janv. 2010 à 20:06
heu quesque l'action de compiler ?
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
12 janv. 2010 à 20:19
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 jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
12 janv. 2010 à 20:29
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 mardi 13 novembre 2007 Statut Membre Dernière intervention 25 août 2011 47
12 janv. 2010 à 20:15
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 mardi 13 novembre 2007 Statut Membre Dernière intervention 25 août 2011 47
12 janv. 2010 à 20:18
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 mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
12 janv. 2010 à 20:25
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 mardi 13 novembre 2007 Statut Membre Dernière intervention 25 août 2011 47
12 janv. 2010 à 20:27
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 mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
12 janv. 2010 à 20:50
Oki merci
0
kirua-93 Messages postés 599 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
12 janv. 2010 à 21:12
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
12 janv. 2010 à 21:42
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 mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
12 janv. 2010 à 23:35
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 jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
12 janv. 2010 à 23:48
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 mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
13 janv. 2010 à 00:12
Oki merci pour votre aide.
0
kirua-93 Messages postés 599 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
13 janv. 2010 à 00:25
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 jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 janv. 2010 à 00:31
à 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 samedi 17 mai 2008 Statut Membre Dernière intervention 2 novembre 2014 107
13 janv. 2010 à 00:27
quel horreur enlevé moi ses GOTO !! O_o
0
kirua-93 Messages postés 599 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
13 janv. 2010 à 00:34
Paris 8 université de Saint seint denis dans le 93
0
kirua-93 Messages postés 599 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
13 janv. 2010 à 00:37
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 jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 janv. 2010 à 00:41
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 mardi 8 janvier 2008 Statut Membre Dernière intervention 27 octobre 2014 72
13 janv. 2010 à 00:42
C'est si horrible que sa mdr
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
13 janv. 2010 à 00:42
et je me rends compte que ma réponse avec le tableau doit être incompréhensible pour toi alors, désolé.
0