[ 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

tafiscobar Messages postés 1277 Date d'inscription   Statut Contributeur Dernière intervention   177
 
salut, while(tab[index]) -> risque d'etre vrai pendant un bon moment, car les parties de la mémoire qui st allouées a ton programme ont pu etre utilisé par d'autres programmes et par conséquent ne sont pas forcément vide. Je ne sais pas ce que tu veux faire, mais ds tous les cas le fonctionnement de ton programme risqe d'etre tres aléatoire.
0
greg49 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   8
 
salut,

Pour la puissance inclu <math.h> dans ton prog et pour utilisé la puissance:

pow(nombre, indice)
ex: 3² -> pow(3,2)

Ensuite pour ton pb, index tab n'est pas initialisé, tjr initialisé les variables d'incrémentation sinon elle savent pas d'ou commencé à s'incrémenté donc tu obtient de la m..de! Ensuite ta boucle for inclu la dans ton while...et tu m'en dira des nouvelles!

Tcho
0
sichoud
 
Merci
0
greg49 Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   8
 
Re salu,

En fait après mur réflexion ton while sert strictement à rien, essaie ça dans ton main:

int main(blablabla)
{

for(int i;i <= indextab;i++)
{
cout << "Entrez nombre : ";
cin >> tab[i];
}
aleat(tab[1],tab[2],tab[3]);
return 1;
}

Mais je comprend pas vraiment se ke tu veux faire, explike ce à koi tu veux arriver et je t'aiderai.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut
Je vous rapel quand même qu'en C les tableau commencent à 0 ! alors float tab[3]; si on apel tab[3] ça depasse la taille du tableaux.
la boucle While risque fort de faire aussi une erreur de segmentation.
ensuite pour la puissance, pour completer, si T est un type primitif, le proto de la fonction est :
T pow(T nombre,T puissance);
ainsi pow(3.1,2) renvoie un warning car 3.1 est float et 2 est int.
0

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

Posez votre question
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Et comment on fait la racine ??

MERCI
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Je vois que tu manipules des tableaux, donc je suppose que tu as lu un peu.
Tu trouves de la documentation ici : http://www.developpez.com/cours/

Pour la racine (carré) je suppose regarde ici :

http://emmanuel-remy.developpez.com/C++/Instructions/TP.htm

lami20j
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Euh merci mais dsl, j'ai 12 ans et je ne comprend dificilement les formules mathématiques. Je les comprend certes(je lis des ouvrages de phisyque) mais c'esst dur. Et pour les autre puissances ? Merci.
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Euh merci mais dsl, j'ai 12 ans et je ne comprend dificilement les formules mathématiques. Je les comprend certes(je lis des ouvrages de phisyque) mais c'esst dur. Et pour les autre puissances ? Merci.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
a vi, en effet, alors ça va être plus dur...
donc, les racine...
tu sais que racine carré de 2 est le nombre solution de l'équation x²=2
racine cubique de 2 de l'équation x^3=2 (^ represente la puissance)
et l'on peut ecrire racine de 2 : 2^(1/2), racine cubique de 2 : 2^(1/3)
voila, si tu n'as pas compris la logique, je veux bien essayer de mieu m'expliquer.
pour resumer ecri racine de x : pow(x,0.5)
il exite aussi la fronction :
double sqrt(double x){return pow(x,0.5);}
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
... Bonjour ...
Est-ce que quelqu'un pourrait meut dire à quoi sert " unsigned ", ou tout autre mots-clés dans les déclaration de variable ?
... Merci ...
0
arth
 
en fait le unsigned sert pour déclarer des variables non signées.

par exemple en déclarant un int la valeur pourra etre de -32768 à 32767, alors qu'en mettant unsigned int, le tout passe en positif, et tu pourras avoir des valeurs entre 0 et 65535.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Bonsoir SAADAM,

unsigned veut dire non signé.

Prenons le cas de la variable entier.
                  val min                    val max
int i  -     -2147483648                   +2147483647
unsigned int i       0          2 puissance 32 -1 = 4294967295


En codage binaire ( dans l'exemple sur 16 bits) on a ça dans le cas signé (le 1er bit à gauche c'est pour le signe 0 pour + et 1 pour -):

Nombres positives
0 111111111111111  pour + 32767
---------------------------
0 000000000000010 pour  + 2
0 000000000000001 pour + 1
0 000000000000000 pour 0
Nombres negatives
1 111111111111111 pour - 1
1 111111111111110 pour - 2
1 1111111111111101 pour -3
----------------------------
1 000000000000000 pour - 32768

Dans le cas unsigned (non signé) on a
1111111111111111 pour + 65535
--------------------------
1000000000000000  pour + 32768
0111111111111111 pour  + 32767
---------------------------
0111111111111111 pour + 1
0000000000000000 pour + 0


Exemple :
# include <stdio.h>
main()
{
 int i; /*entier signé*/
 unsigned int j; /*entier nonsigné*/
 i = -1;
 j = i;

 printf("%d\n",i);
 printf("%u\n",j); /*%u c'est pour afficher le format non signé*/
}
0
arth
 
en mettant j en unsigned, tu peux aussi mettre printf("%d",j);
ca marche aussi.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

je suis d'accord avec toi en mettant j en unsigned, tu peux aussi mettre printf("%d",j);

Cependant quand je mets %d et je compile chez moi affiche -1 à la place de 4294967295 c'est pour ça que j'ai préféré %u et je suis entrin de m'expliquer ça.

A+
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
si j'utilise
short int
unsigned short int

le résutat est celui attendu
-1
65535
0
arth
 
ok désolé .moi j'utilise %d pour les int voire unsigned int mais apres je prend l'instruction "cout" qui m'affiche ce que je veux.

au fait tu as un proc 64 bits??? juste pour savoir
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
non, donc c'est pour ça je crois.

pas besoin d'être désolé, tu as trés bien fait de le dire.

En fait c'est pour SAADAM
Euh merci mais dsl, j'ai 12 ans

a+
0
SAADAM Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Salut. Quelqu'un pourrait-il me donner un exemple d'utilisation de " switch " ? Parce que les information de mon manuel sont confuses.
merci
0
arth
 
par exemple tu veux choisir une tache a faire en fonction de l'info rentrée au clavier, par exemple en rentrant '1' j'execute une tache, en rentrant '2',une autre tache et ainsi de suite.

pour l'exemple ca se presente a peu pres comme ca:

touche=getch;

switch(touche)
{
case '1' : tache1(); ( tu peux mettre autant
d'instructions que tu veux)
printf("erreur"); -> c'est un exemple

case '2' : tache();
............. ->represente d'autres instructions
.............
..............
.
.
. ->d'autres choix possible
.
.
}
0
tony
 
bonjour,

un switch est un équivalent de plus if imbriqués! il a l'avantage de rendre bcp plus lisible ton code

ex :

switch( val ou exp)
{
case a: // si val ou exp est égal à a alors
instructions //on fait les instructions
break; //on sort du swith
case b: //si val ou exp est égal à b alors
instructions //on fait les instructions
break; //on sort du swith
...
...
default: //dans le cas ou val ou exp n'est égal à aucun des case
//précédent alors
instructions //on fait les instructions par défault
break; //on sort du swith
//default est un cas optionnel t pa obligé de le mettre
}
val doit être un entier ou un char (car un char est un entier représenté par son code acsii
exp doit retourner un scalaire

voila bon courage!!
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
qu'apel tu un scalaire?
0