[ c++ problème ]

SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
 sichoud -
bonjour. Je voudrais savoir comment on marque le puissance en c++. Et aussi où est l'erreur dans
#include <iostream.h>
#include <stdlib.h>
int aleat(float n1,float n2);
int aleat(float n1,float n2,float n3)
{
       float m = n1*n2*n3 / n1 - (n2 + n3) - n1;
       cout << m;
       return 1;
}
int main(int argc,char* args)
{
       float tab[3];
       int indextab;
       while (tab[indextab])
       {
              indextab++;
       }
       for(int i;i <= indextab;i++)
       {
              cout << "Entrez nombre : ";
              cin >> tab[i];
       }
       aleat(tab[1],tab[2],tab[3]);
       return 1;
}

30 réponses

tony
 
voila plus d'info sur le switch

http://www.commentcamarche.net/c/ccond.php3
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
salut. Et " call ". Comment peut-on l'utiliser ?
Parce que mon but est de me rapprocher le plus possible du language machine(sans utiliser l'assembleur)
. @+
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
et quelle est l'erreur dans :
#include <iostream.h>
#include <stdlib.h>
#include <string.h>

char note(float note);
int main()
{
      float m=0.0;
      cout <<"Quelle est votre note?";
      cin  >>m;
      cout <<note((float)m);
      system("PAUSE");
      return 0;
}
char[] note(float note)
{
        if (note==0) { return "C'est nul";break; }
        if (note>0||note<=10){ return "Ce n'est pas bien du tout";break; }
        if (note>10||note<15){ return "C'est moyen";break; }
        if (note>=15||note!=20){ return "C'est très bien";break; }
        if (note==20) { return "C'est parfait.";break; }
}
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,
essaie ça
#include <iostream>
#include <stdlib.h> // pas besoin
#include <string.h> // pas besoin
using namespace std;

char note(float notes);
int main()
{
     float m=0.0;
     cout <<"Quelle est votre note? ";
     cin  >>m;
     system("sleep 2"); // 2 sec pour afficher le resultat
     cout << note(float(m)); 
     return 0;
}
char note(float notes)
{
       if (notes == 0) { cout << "C'est nul\n"; }
       if (notes > 0 && notes <= 10){ cout << "Ce n'est pas bien du tout\n"; }
       if (notes > 10 && notes < 15){ cout << "C'est moyen\n"; }
       if (notes >= 15 && notes < 20){ cout << "C'est très bien\n"; }
       if (notes == 20) { cout << "C'est parfait.\n"; }
}

0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut,
Lamij, je croi que tu ne repond pas au problème !
et je ne pense pas que ton programme fonctionne, deja note ne retourne rien....
sadaam :
Je te conseil de déclarer :
char* note(float)
et d'implemeter:
char* note( float notes){...}
si ça ne marche pas, essaie avec const char* comme type.
Dans tout les cas, il ne faut pas changer le type d'une fonction entre sa declaration et son implementation.
derniere remarque, tout ce qui est derriere un return n'es jamais executer, tes break ne servent à rien !
derniere chose, dans tes if, fait
if(notes==0)...
if(notes<10)...
if(notes<15)...
sinon, ta boucle s'arrete au deuxième if pour les notes différentes de 0. Voila
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Lamij, je croi que tu ne repond pas au problème !
et je ne pense pas que ton programme fonctionne, deja note ne retourne rien....


Toi tu pense, moi je teste. Et tu sais quoi? Le programme fonctionne et j'ai bien repondu à son problème. ( un interval par exemple on le déclare avec quelque chose de genre a >= 0 && a <=10 , c'est à dire a est compris entre 0 et 10, c'étai une correction)

Je te conseil de déclarer :
char* note(float)
et d'implemeter:
char* note( float notes){...} Tu n'as pas remarquer qu'il n'a que 12 ans et à peine il arrive à comprendre la racine carré, Monsieur le Professeur?


sadaam
Je te conseil de déclarer :


Ca sonne un peut à insulte et déconsidération et ce n'est pas gentil de ta part.
En traduction ça donne quelque chose de genre.
Laisse tomber les conneries que t'a dit lamij (c'est lami20j) et écoute moi parce que moi je sais tout.

P.S. A propos c'est SAADAM, je constate que tu lit et tu comprends tout.

SAADAM tu peut tester la variante que je t'ai écrit, et qui n'est pas unique ni la meilleure.
Et en plus si jamais je voudrais récrire ton code moi aussi j'utiliserai peut être une autre façon de le faire.

En revanche c'est vrai pour return, j'ai omis de l'enlever.

Bonne soirée
0

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

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
C'est étonnant que ton programme fonctionne.
moi quand je fait une fonction avec un type (ici char) le compilo me retourne une erreur comme quoi ma fonction ne retourne rien.
saadam avait l'air de vouloir récupérer une chaine de caractère par une fonction. Toi tu donne une fonction qui ne retourne rien. de plus en declarant char note, avec mon compilo la taille de la chaine de caractère est limité à 8. Tu as quoi comme compilo exotique?
Ensuite, un conseil n'es pas insultant. C'est juste un conseil, d'ailleur, si il pose une question sur le forum, c'est pour ça.
Pour les if, ta boucle fonctionne parfaitement lamij20 , un test sur 2 est inutil, c'est tout.
Et je ne sais pas tout, mais comme toi tu as l'air caller, répond à mes post sans réponse. Mais c'est sur, c'est moi facile que de critiquer.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut Char Snipeur,

Ca ne me derrange pas les corrections et les conseils au contraire je les acceptes, mais plutôt la manière de les donner.

moi quand je fait une fonction avec un type (ici char) le compilo me retourne une erreur comme quoi ma fonction ne retourne rien.


Ici tu as raison, de toute façon tu as lu à la fin de mon message En revanche c'est vrai pour return, j'ai omis de l'enlever.
.
Parce que en fait il ne s'agit pas d'une fonction mais d'un apel d'une procédure ( en fait chez moi j'ai utilisé main() pas int main() ), mais comme j'ai fait copier/coller du code du SAADAM tout simplement j'ai oublié de l'enlever.

Dans le cas de SAADAM pas besoin d'une fonction puisque il ne calcule rien du tout. Il veut tout simplement afficher à l'écran le résultat d'une interogation (au moins c'est ça que je vois) donc je crois qu'un apel d'une procédure ç'est suffisant.

Et concernant les if je n'ai fait que modifier l'opérateur || qui est plus approprié pour définir un interval, puisqu'en fait je préfere aussi ta méthode.

if(notes==0)...
if(notes<10)...
if(notes<15)...

Mais pour C'est étonnant que ton programme fonctionne. je dirai plutôt que c'est normal qu'il fonctionne (avec ou sans return - qui ne doit pas être present dans le code vu qu'il ne s'agit pas d'une fonction donc rien à retourner)

Et tout sais trés bien que si on veut on peut parler de ça beaucoup plus mais ça ne vaut pas le coup. On est toujours entrin d'apprendre et de corriger aujourd'hui les erreurs qu'on a fait hier.

Dissons que j'ai mal compris ta demarche.

A+ et bonne soirée

lami20j
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
ce que je trouve etrange, c'est de declarer une procedure avec un type char.
bonne soirée à toi aussi
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
ET "const" ? Et "short" ? Et "using namespace std"?
Merci
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Et comment déclare-t-on une procédure ? Quelle est l'en-tête d'une procédure ?
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Oulà je crois que tu devrais commencer par faire quelques tutoriels saadam ;o)

const -> paramètre qui reste constant. Typiquement un paramètre de fonction qui n'évolue pas dans cette fonction.

short -> précise que l'entier est de valeur faible. Ca permet de réduire sa taille en mémoire.

using namespace std -> Bon là vu les questions précédentes on va faire simple. Normalement cout, cerr,... ça n'exite pas. Ca appartient à l'environement std et ça s'appelle donc std::cerr, std::cout. En toute rigueur on devrait donc toujours écrire std::cout std::cerr... mais comme c'est un peu lourd on peu utilise run using namespace.

Une procédure est un nom peu adapté au C++, on parle plutôt de fonction.
#include <iostream>

int f(double d){//la fonction prend en paramètre un double et retourne un entier
   std::cout<<"Mon double vaut"<<d<<std::endl;
   return 1;//l'entier retourné
}

int main(){
   int mon_entier=0;
   mon_entier=f(3.5);//f retourne 1, donc mon_entier vaut 1 à la fin de l'instruction
   return 0;
}

Quand tu auras appréhendé le concept d'objet tu verras qu'il existe des fonctions particulières, les méthodes... Et encore après tu verras qu'il existe des fonctions et des méthodes template. mais ça c'est pour beaucoup plus tard ;o)
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Mamiemano mais pour using namespace std il ne me sert à rien car cout,cin,cerr... fonctionnent sans. Je mets iostream.h,string.h,stdlib.h et cela me suffit. Merci pour le reste j'ai compris. J'ai un cour de 448 pages qui m'attend maintenant !
@+
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Merci MamiemanDo mais pour using namespace std il ne me sert à rien car cout,cin,cerr... fonctionnent sans.

Il sert à être standard.

Je mets iostream.h,string.h,stdlib.h et cela me suffit

Tu utilises un syntaxe obsolète et fortement déconseillé. Pas de .h dans le include, sinon ce n'est pas standard. C'est d'ailleurs de par le fait que tu mets le .h que tu n'as pas besoin de using namespace std. Il n'en reste pas moins que c'est très mal.

-->

1) Transforme tes cin cerr cout endl en std::cin std::cout ... std::endl (ou rajoute le using namespace std)
2) Vire le .h de tes include #include <iostream.h> --> #include <iostream.h>
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je ne pense pas que ça soi la peine de lui prendre la tête avec ça.
Pour commencer, c'est plus leger de ce passer du std::
En plus ce n'es devenu obligatoire qu'avec la version 3 de gcc...
En plus c'est très facile à intégrer dans la suite.
dans ma verions, iostream.h inclue iostream et rajoute des using. Ce qui fait qu'au final ça ne change pas gran chose.
Mais c'est sur que dans la suite il faut s'habituer à utiliser les entete sans .h (même si je n'ai pas encore compris exactement pourquoi)
0