Programme C
Résolukirua-93 Messages postés 652 Statut Membre -
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;
}
--
MUHAHAHAHAHAHAHAHAHA
Configuration: xp
35 réponses
- 1
- 2
Le problème vient de la différence entre Windows et Linux : un programme compilé sous Code Blocks produit un exécutable .exe qui ne peut pas être exécuté tel quel sur Ubuntu. Pour Ubuntu, il faut recompiler en utilisant GCC ou un autre compilateur Linux afin d’obtenir un programme native, car Windows et Linux ne partagent pas le même format binaire. Le code utilisait des goto et des boucles simulées, ce qui rend le débogage difficile et peut générer des boucles infinies, privilégier for ou while et des conditions plus claires. D'autre part, il peut être utile de décrire les sorties observées et le flux attendu pour déterminer s’il faut réécrire une section de code ou adopter une approche plus structurée.
-
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. -
-
Question con, as tu recompilé ?
-
Le résultat est normal. Il ne faut pas trop se fier à ce qui se passe sous Windows ;-)
Rajoute des 'printf' du styleprintf("a=%d b=%d c=%d\n", a, b, c);et tu comprendras.
Bonne réflexion. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
-
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.- 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.
-
-
Installe Cygwin pour Windows, tous les packages de Dev, et fais moi signe quand tu auras déjà fait ca.
-
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 -
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 -
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 !
-
-
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 -
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 ?-
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); } }
-
-
-
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. -
quel horreur enlevé moi ses GOTO !! O_o
-
-
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
-
-
et je me rends compte que ma réponse avec le tableau doit être incompréhensible pour toi alors, désolé.
- 1
- 2