Programme C

Résolu
kirua-93 Messages postés 652 Statut Membre -  
kirua-93 Messages postés 652 Statut Membre -
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

Romiinet Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   107
 
je n'est pas lu toute les raiponces, je ne sait pas si on te la déja dit mais tes 6 1er ligne se résume a sa :
int a,b,c;
a = b = c = 1;

ou :

int a=1,b=1,c=1;

la boucle while est plus simple a utiliser si tu a du mal avec le for.

les GOTO oublie c'est très mauvais.
0
kirua-93 Messages postés 652 Statut Membre 72
 
Hum je crois que j'ai compris l'idée je crée un tableau avec dedans la fonction triangulaire et dans la fonction nombre j'appel la fonction triangulaire pour quel "supprime" les nombres égaux.
0
kirua-93 Messages postés 652 Statut Membre 72
 
Merci Romiinet mais je ne connais pas la boucle while ^^
0
Romiinet Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   107
 
un while c'est comme un if qui se répète temps que la condition est vrai.

exemple :

i=0;
while(i<10){
...
...
...

i++;

}

voila ;)
0

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

Posez votre question
kirua-93 Messages postés 652 Statut Membre 72
 
ah oki merci du petit cour
0
kirua-93 Messages postés 652 Statut Membre 72
 
Je pense avoir trouver l'idée pour faire tournée ma fonction
#include<stdio.h>
#include<stdlib.h>
main(){
int a;
int b;
int c;
a = 1;
b = 1;
c = 0;
encore:
retour:
a=a+1;
b=a+b;
c++;
if(c==b), goto retour; // c et le compteur et recois 1 a chaque tour et b contient les nbr triangulaire si c=b alors il retour et rajoute 1 a c et passe au second nbr triangulaire.
printf("%d ",c); // affiche c ci c n'est pas egale a b.
if(b<100) goto encore; //recommence la fonction tant que b et inférieure a 100
}


j'utilise une fonction if pour dire de faire apparaitre c sauf quand c=b la il nafiche rien et continue son bout de route.
Mais je narive pas a faire tourner la fonction je ne ces pas pourquoi
0
loupius Messages postés 789 Statut Membre 148
 
if(c==b), goto retour;
C'est quoi la virgule ?
Enlève-là, compile, lance le programme et tu auras le résultat suivant:
1 2 3 4 5 6 7 8 9 10 11 12 13
C'est bien ce que tu voulais ? Si ce n'est pas le cas, c'est que ton programme n'est pas correct.
Bonne continuation.
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
lorsque tu écris un programme, il faut prendre l'habitude de prendre une feuille de papier, un crayon et une gomme. Tu essayes d' "exécuter" toi-même ton programme en le faisant, ligne par ligne. Note bien ce qui se passe au niveau des variables. Il faut aussi écrire qqpart ce qui va s'afficher à l'écran. Après 2 ou 3 tours (ou plus), tu verras que ton programme ne fait pas ce que tu veux.
0
kirua-93 Messages postés 652 Statut Membre 72
 
oki merci du conseil
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
ici dans ce que le code que tu as donné : qu'est ce que ça te donne ?
0
kirua-93 Messages postés 652 Statut Membre 72
 
Sa me donne une erreure pour goto.
En faite j'ai compris comment faire mon programme ces juste que je ne connais pas les bon "mot" pour le faire marcher
grossièrement l'idée que j'ai actuellement ces de calculé le 1er triangulaire puis de le comparer a mon compteur si ces nes pas les meme je rajoute 1 au compteur et je recommence si c les meme je naffiche rien et je passe au second nombre triangulaire.
Ces juste que je ne ce pas utiliser les fonctions de boucle comme for while et if
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
alors il faut apprendre ;) ce n'est pas très compliqué :

la structure de décision :

if (condition) {
  //ligne(s) de code à exécuter si condition est vraie
}
//à partir d'ici peu importe condition ce sera exécuté


On peut faire aussi :
if (condition) {
  //ligne(s) de code à exécuter si condition est vraie
}
else {
  //lignes de code à exécuter si condition est fausse
}
//à partir d'ici peu importe condition ce sera exécuté
 


Mais il me semble que tu avais déjà compris ça.


Ensuite les boucles (aussi appelées structures d'itération):
while (condition) {
  //ligne(s) de code qui s'exécuteront tant que la condition est vraie
}


Ex :
//Dans ce programme rien ne s'affiche.
int a=5;
while (a < 3) {
  printf("Salut \n");
  a = a+1;
}


//Dans ce programme "Salut" d'affiche 3 fois.
int a=5;
while (a < 8) {
  printf("Salut \n");
  a = a+1;
}
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  
 
note : il y a deux autres façon de faire une boucle : avec do{...}while() et for(;;){...}, mais en fait tu peux absolument tout faire avec while(){...} uniquement, les autres sont juste des raccourcis ou des petites variantes en quelque sortes.
0
kirua-93 Messages postés 652 Statut Membre 72
 
Oki je croi que j'ai compris pour while je vais essayer avec sa merci
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
n'hésite pas à faire des essais, mais comme je t'ai dis avant : essaye de voir ce que ça va donner, à l'avance, avec un bout de paier et un crayon, et ensuite teste-le pour voir si tu avais raison.

Si tu ne comprends pas pourquoi tu obtiens qqchose alors que tu pensais obtenir autre chose, fias-nous part de ta question ici, mais en précisant ce que tu pensais obtenir et ce que tu obtiens en fait.
0
kirua-93 Messages postés 652 Statut Membre 72
 
Heu comment on fait pour que quand la fonction arrive a la fin elle retourne au debut ? (sans utiliser goto)
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
je ne comprends pas ta phrase. Pourrais-tu préciser ou mettre de la ponctuation et des connecteurs ?
0
kirua-93 Messages postés 652 Statut Membre 72
 
#include<stdio.h>
#include<stdlib.h>
main(){
int a;
int b;
int c;
a = 1;
b = 1;
c = 0;

Depart

a=a+1;
b=a+b;
while(c=b){
c++;
}
printf("%d ",c);

Arriver
}

Je souhaite quel parte de depart et aille a arriver autant de fois que je le veux.
Merci

0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
regarde l'exemple de boucle while() que je t'ai donné plus haut. Essaye de raisonner et de créer une boucle qui affiche autant de fois "Salut" que tu le souhaites (disons : 10 par exemple).

Ensuite, on mélangera ça avec ton programme :)
0
kirua-93 Messages postés 652 Statut Membre 72
 
int a=5;
while (a < 15) {
printf("Salut \n");
a = a+1;
}

Comme sa ?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
voilà (Attention : pas de majuscule à int ... essaye ton code sur ton compilateur dans un programme test! ).

On peut faire plus simple : int a = 0; while(a<10) { ... }


donc voilà, il suffit de rajouter une variable comme ça et une boucle while . Pas "a" car tu utilises déjà ce nom de variable, mais peu importe ;).

PS : a = a+1; s'écrit a++; habituellement
0
kirua-93 Messages postés 652 Statut Membre 72
 
A oui je voix sa crée une boucle obligant le programme a recommencer
oki merci v test sa se soir je posterais surement demain
merci encore pour ton aide
0
kirua-93 Messages postés 652 Statut Membre 72
 
Merci j'ai trouver
0