| | Mon mini programme en C (débutant) | |
| | Auteur | Message |
---|
SonnixVI Bonne participation
Messages : 73 Localisation : int *chezmoi=&cbna;
| Sujet: Mon mini programme en C (débutant) Mar 3 Jan 2012 - 8:10 | |
| Bonjour!, je me présente mon pseudo c'est SonnixVI et je veux vous montrer mon mini programme que j'ai programmer en C. C'est un calculateur d'aire de forme! Soyez indulgent je suis un tout nouveau programmeur(débutant) . Je suis en quête pour faire des jeux videos en C .Bon assez bavardé je vous présente mon script: - Code:
-
#include <stdio.h> #include <stdlib.h>
//calcule rectangle double rectangle(double hauteur,double largeur) {
return hauteur*largeur; } //calcule carrer double carrer(double coter) { return coter*coter; } //calcule triangle double triangle(double hauteur,double largeur) { return hauteur*largeur/2; } //calcule trapeze double trapeze(double grosseBase,double base,double hauteur) { return (grosseBase+base)*hauteur/2; } //calcule losange double losange(double grosseDiagonal,double diagonal) { return grosseDiagonal*diagonal/2; } //calcule polygone régulier double polygoneregulier(double coter,double apoteme,double nombre) { return (coter+apoteme)/2*nombre; } //l'affichage int main(int argc, char *argv[]) { while(1) { //variables double reponse; double apoteme1=0,nombreCoter1=0; double bigdigonal1=0,diagonal1=0; double bigBase1=0,base1=0; double coter1=0; double largeur1=0; double hauteur1=0; int choix=0; //Je sais la phrase est longue :/ printf("Si vous voulez calculer l'aire d'un : rectangle taper 1, carrer taper 2,triangle taper 3,trapeze taper 4,losange taper 5 ou polygone regulier taper 6 \n"); scanf("%d",&choix); switch (choix) { //rectangle case 1: printf("Quel est la hauteur ne taper pas l'uniter apres \n"); scanf("%lf",&hauteur1); printf("Quel est la largeur ne pas taper l'uniter apres \n"); scanf("%lf",&largeur1); printf("Alors l'aire est %f \n\n",reponse=rectangle(hauteur1,largeur1)); break; //carrer case 2: printf("Quel est le coter ne taper pas l'uniter apres \n"); scanf("%lf",&coter1); printf("Alors l'aire est %f \n\n",reponse=carrer(coter1)); break; //triangle case 3: printf("Quel est la hauteur ne taper pas l'uniter apres \n"); scanf("%lf",&hauteur1); printf("Quel est la largeur ne pas taper l'uniter apres \n"); scanf("%lf",&largeur1); printf("Alors l'aire est %f \n\n",reponse=triangle(hauteur1,largeur1)); break; //trapeze case 4: printf("Quel est la hauteur ne taper pas l'uniter apres \n"); scanf("%lf",&hauteur1); printf("Quel est la plus grande base ne pas taper l'uniter apres \n"); scanf("%lf",&bigBase1); printf("Quel est la plus petite base ne pas taper l'uniter apres \n"); scanf("%lf",&base1); printf("Alors l'aire est %f \n\n",reponse=trapeze(bigBase1,base1,hauteur1)); break; //losange case 5: printf("Quel est la grand diagonal ne taper pas l'uniter apres \n"); scanf("%lf",&bigdigonal1); printf("Quel est la petite diagonal ne pas taper l'uniter apres \n"); scanf("%lf",&diagonal1); printf("Alors l'aire est %f \n\n",reponse=losange(bigdigonal1,diagonal1)); break; //polygone regulier case 6: printf("Quel est l'apoteme ne taper pas l'uniter apres \n"); scanf("%lf",&apoteme1); printf("Quel est la longueur d'un coter ne pas taper l'uniter apres \n"); scanf("%lf",&coter1); printf("Combien il y a de coters \n"); scanf("%lf",&nombreCoter1); printf("Alors l'aire est %f \n\n",reponse=polygoneregulier(coter1,apoteme1,nombreCoter1)); break; //tu es quel qu'un qui essaye de faire son malin héhé default: printf("Il y a une erreur!\n"); break; } } return 0; } Si vous êtes assez gentil pour le tester ça me ferai un grand plaisir ! |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Mon mini programme en C (débutant) Mar 3 Jan 2012 - 8:46 | |
| Salut. J'ai rendu ton code plus clair, mais finalement y a plus de fautes d'orthographe (et de calculs d'airs) que de fautes de syntaxe x) - Code:
-
#include <stdio.h> #include <stdlib.h>
//calcule rectangle inline double rectangle(double hauteur, double largeur) { return hauteur*largeur; } //calcule carre inline double carre(double cote) { return cote*cote; } //calcule triangle double triangle(double hauteur,double largeur) { return hauteur*largeur/2; } //calcule trapeze double trapeze(double grosseBase,double base,double hauteur) { return (grosseBase+base)*hauteur/2; } //calcule losange inline double losange(double grosseDiagonal,double diagonal) { return grosseDiagonal*diagonal/2; } //calcule polygone régulier double polygoneregulier(double coter,double apoteme,double nombre) { return (coter+apoteme)/2*nombre; } //l'affichage int main(int argc, char *argv[]) { while(1) { int choix=0; printf("Entrez: \n"); printf("1 pour un rectangle\n"); printf("2 pour un carre\n"); printf("3 pour un triangle rectangle\n"); printf("4 pour un trapeze\n"); printf("5 pour un lozange\n"); printf("6 pour un polygone regulier\n"); printf("0 pour quitter\n");
scanf("%d", &choix); switch(choix) { //rectangle case 1: { double largeur=0, hauteur=0; printf("Quel est la hauteur ne taper pas l'unite apres \n"); scanf("%lf",&hauteur); printf("Quel est la largeur ne pas taper l'unite apres \n"); scanf("%lf",&largeur); printf("Alors l'aire est %f \n\n", rectangle(hauteur,largeur)); break; } //carre case 2: { double cote=0; printf("Quel est le cote ne taper pas l'unite apres \n"); scanf("%lf",&cote); printf("Alors l'aire est %f \n\n", carre(cote)); break; } //triangle case 3: { double largeur=0, hauteur=0; printf("Quel est la hauteur ne taper pas l'unite apres \n"); scanf("%lf",&hauteur); printf("Quel est la largeur ne pas taper l'unite apres \n"); scanf("%lf",&largeur); printf("Alors l'aire est %f \n\n", triangle(hauteur,largeur)); break; } //trapeze case 4: { double hauteur=0, bigBase=0, base=0; printf("Quel est la hauteur ne taper pas l'unite apres \n"); scanf("%lf",&hauteur); printf("Quel est la plus grande base ne pas taper l'unite apres \n"); scanf("%lf",&bigBase); printf("Quel est la plus petite base ne pas taper l'unite apres \n"); scanf("%lf",&base); printf("Alors l'aire est %f \n\n",trapeze(bigBase,base,hauteur)); break; } //losange case 5: { double bigdigonal=0, diagonal=0; printf("Quel est la grand diagonal ne taper pas l'uniter apres \n"); scanf("%lf",&bigdigonal); printf("Quel est la petite diagonal ne pas taper l'uniter apres \n"); scanf("%lf",&diagonal); printf("Alors l'aire est %f \n\n",losange(bigdigonal,diagonal)); break; } //polygone regulier case 6: { double apoteme=0, cote=0, nombreCote=0; printf("Quel est l'apoteme ne taper pas l'unite apres \n"); scanf("%lf",&apoteme); printf("Quel est la longueur d'un cote ne pas taper l'unite apres \n"); scanf("%lf",&cote); printf("Combien il y a de cotes \n"); scanf("%lf",&nombreCote); printf("Alors l'aire est %f \n\n", polygoneregulier(cote,apoteme,nombreCote)); break; } default: return 0; } } return 0; }
Sinon pour ce qui est de faire un jeu, je te conseillerais de te tourner vers le C++, c'est je dirais plus adapté pour (même s'il est bien sur possible de faire un jeu en C). |
| | | SonnixVI Bonne participation
Messages : 73 Localisation : int *chezmoi=&cbna;
| Sujet: Re: Mon mini programme en C (débutant) Mar 3 Jan 2012 - 13:34 | |
| Ah! C'est nouveau le type de fonction inline qu'es que ça fait?.Je vais justement me diriger vers le C++ c'est pour ça que je commence par le C non? |
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Mon mini programme en C (débutant) Mar 3 Jan 2012 - 13:43 | |
| Ouai bien sur vaux mieux passer par le C avant de foncer dans le C++ Sinon inline c'est pour dire au compilo de mettre directement le code de la fonction la ou tu l'utilise (un peu comme une macro quoi). C'est une optimisation a n'utiliser que pour les petites fonctions, ou les fonctions appelées dans beaucoup de boucles (ça évite les appels de fonctions, et c'est donc plus rapide). Mais bon évite d'en mettre partout, le compilo s'en charge tout seul en général. |
| | | SonnixVI Bonne participation
Messages : 73 Localisation : int *chezmoi=&cbna;
| Sujet: Re: Mon mini programme en C (débutant) Mar 3 Jan 2012 - 13:57 | |
| Ah! Ouais ça fait rouler plus rapidement le programme merci de m'avoir appris un nouveau type de fonction . |
| | | Morwenn Très bonne participation
Messages : 151 Projet Actuel : Icare
| Sujet: Re: Mon mini programme en C (débutant) Mar 3 Jan 2012 - 19:23 | |
| Attention, "inline" n'est pas un type de fonction à proprement parler, mais plutôt un "qualificateur" de fonction, qui donne un indice au compilateur. Mais bon, il vaut mieux s'en méfier : il n'accélère pas toujours les programmes et parfois les ralentit même, bien qu'il n'y ait pas trop de risques pour ce genre de fonctions. Aussi, pour qu'il soit pris en compte, il vaut mieux passer l'option -std=c99 au compilateur, je ne crois pas qu'il existe en C89. _________________ Dur Dabla, pour qui voudrait écouter un brin de metal celtique. |
| | | Termite Utilisateur confirmé: Rang ****
Messages : 1005 Localisation : Dans ta charpente ! Projet Actuel : RayEngine 5.0
| Sujet: Re: Mon mini programme en C (débutant) Ven 6 Jan 2012 - 17:14 | |
| - onilink_ a écrit:
- Ouai bien sur vaux mieux passer par le C avant de foncer dans le C++
Sinon inline c'est pour dire au compilo de mettre directement le code de la fonction la ou tu l'utilise (un peu comme une macro quoi). C'est une optimisation a n'utiliser que pour les petites fonctions, ou les fonctions appelées dans beaucoup de boucles (ça évite les appels de fonctions, et c'est donc plus rapide). Mais bon évite d'en mettre partout, le compilo s'en charge tout seul en général. C'est gênant une classe avec que des fonctions inline ? Pasque j'ai eu besoin d'utiliser les templates en C++, et on peut pas s'en servir dans une classe avec header/corps séparé (à moins de faire à l'instar d'un vector, en gros pas de templates différent par fonctions) _________________ Because these are not the words of God, the same God that burnt the knowing.
|
| | | onilink_ Modérateur
Messages : 9178 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Mon mini programme en C (débutant) Ven 6 Jan 2012 - 19:30 | |
| Alors ça je peut pas te dire. Les templates je n'ai eu que rerement besoin de les utiliser. Mais quand tu regarde les codes sources de la stl, tout est dans le header la plupart du temps. |
| | | Morwenn Très bonne participation
Messages : 151 Projet Actuel : Icare
| Sujet: Re: Mon mini programme en C (débutant) Mar 10 Jan 2012 - 22:06 | |
| Là, je peux répondre assez clairement^^ : Les fonctions/classes/autre template doivent par défaut être entièrement définis dans les headers. On peut séparer des template en utilisant le mot-clef export. ex.h - Code:
-
export template<typename T> T foo(const& T other);
ex.cpp - Code:
-
template<typename T> T foo(const& T other) { return bar(T); }
Cependant, le mot-clef export n'est à ce jour supporté que par les compilateurs Borland Experimental C++ (pas toutes les versions je crois) et Commeau C++. Par conséquent, il y a très peu de chances pour que vous ayez accès à ce mot-clef. Quant au mot-clef inline, toute fonction inline doit être entièrement définie dans un header et ne peut pas être placée dans un .cpp. Une fonction ne peut pas être à la fois inline et export. Voilà tout^^ _________________ Dur Dabla, pour qui voudrait écouter un brin de metal celtique. |
| | | Contenu sponsorisé
| Sujet: Re: Mon mini programme en C (débutant) | |
| |
| | | | Mon mini programme en C (débutant) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |