[ c++ problème ]

SAADAM Messages postés 28 Statut Membre -  
 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

  • 1
  • 2
  1. tafiscobar Messages postés 1281 Statut Contributeur 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
  2. greg49 Messages postés 154 Statut Membre 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
    1. sichoud
       
      Merci
      0
  3. greg49 Messages postés 154 Statut Membre 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
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. SAADAM Messages postés 28 Statut Membre
     
    Et comment on fait la racine ??

    MERCI
    0
  7. SAADAM Messages postés 28 Statut Membre
     
    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
  8. SAADAM Messages postés 28 Statut Membre
     
    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
  9. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  10. SAADAM Messages postés 28 Statut Membre
     
    ... 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
  11. 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
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  13. arth
     
    en mettant j en unsigned, tu peux aussi mettre printf("%d",j);
    ca marche aussi.
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      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
  14. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    si j'utilise
    short int
    unsigned short int

    le résutat est celui attendu
    -1
    65535
    0
  15. 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
  16. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  17. SAADAM Messages postés 28 Statut Membre
     
    Salut. Quelqu'un pourrait-il me donner un exemple d'utilisation de " switch " ? Parce que les information de mon manuel sont confuses.
    merci
    0
  18. 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
  19. 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
  20. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    qu'apel tu un scalaire?
    0
  • 1
  • 2