AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Mon mini programme en C (débutant)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
SonnixVI
Bonne participation


Messages : 73
Localisation : int *chezmoi=&cbna;

MessageSujet: Mon mini programme en C (débutant)   Mar 3 Jan 2012 - 7:10

Bonjour!, Very Happy

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) Yum! . Je suis en quête pour faire des jeux videos en C awesome .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 gnii ça me ferai un grand plaisir Very Happy !
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Mon mini programme en C (débutant)   Mar 3 Jan 2012 - 7: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).

_________________
                 
Revenir en haut Aller en bas
SonnixVI
Bonne participation


Messages : 73
Localisation : int *chezmoi=&cbna;

MessageSujet: Re: Mon mini programme en C (débutant)   Mar 3 Jan 2012 - 12: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? awesome

Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Mon mini programme en C (débutant)   Mar 3 Jan 2012 - 12: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.

_________________
                 
Revenir en haut Aller en bas
SonnixVI
Bonne participation


Messages : 73
Localisation : int *chezmoi=&cbna;

MessageSujet: Re: Mon mini programme en C (débutant)   Mar 3 Jan 2012 - 12:57

Ah! Ouais ça fait rouler plus rapidement le programme merci de m'avoir appris un nouveau type de fonction Yum! .
Revenir en haut Aller en bas
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: Mon mini programme en C (débutant)   Mar 3 Jan 2012 - 18: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.
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
avatar

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

MessageSujet: Re: Mon mini programme en C (débutant)   Ven 6 Jan 2012 - 16: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.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Mon mini programme en C (débutant)   Ven 6 Jan 2012 - 18: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.

_________________
                 
Revenir en haut Aller en bas
Morwenn
Très bonne participation
avatar

Messages : 151
Projet Actuel : Icare

MessageSujet: Re: Mon mini programme en C (débutant)   Mar 10 Jan 2012 - 21: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.
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Mon mini programme en C (débutant)   

Revenir en haut Aller en bas
 
Mon mini programme en C (débutant)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Projet mini-bibliothèque en centre de loisirs pour enfants
» pliko mini de peg perego
» [programme] RoboForm c'est quoi ?
» tee shirt du modem et programme de bayrou presidentielle
» Ma mini micro collec'7 mois plus tard une MAJ s'impose !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: