Algorithme_Racine_Carree

Résolu
CALiiMERO Messages postés 77 Statut Membre -  
CALiiMERO Messages postés 77 Statut Membre -
Bonjour,

Je trouve des problémes pour faire un algorithme :

Ecrire un algorithme qui vérifie si X , un entier donné par l'utilisateur , est un carré , si oui retourne la valeur de l'entier dont il est le carré , sans passer par la racine carrée.


Exemple : X=9 , l'entier est 3


"sans passer par la racine carrée" je trouve que cette solution : X = x^(1/2) mais ça n'arrange pas les choses pour le traduire en algo.
Vous pensez quand peut faire mieu que ça?

10 réponses

  1. CALiiMERO Messages postés 77 Statut Membre 8
     
    Je crois que parce que tu n'as pas donner une valeur initiale à "i" .

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int i=0,carre,nbr;
    printf("entrer un nbr");
    scanf("%d",&nbr);
    while(carre<nbr)
    {
    carre=i*i;
    if(carre==nbr)
    printf("la racine est %d",carre);
    else
    i++;

    return 0;
    }
    0
  2. CALiiMERO Messages postés 77 Statut Membre 8
     
    Algorithme_Carre
    Variables: i, carre, nbr;
    Debut
    Ecrire("Entrer un nombre :");
    Lire(nbr);
    Tant que (carre<nbr) faire 
      carre<-i*i;
      Si (carre=nbr) alors
         Ecrire("La racine carre est",carre);
      Sinon
         i<-i+1;
      FinSi
     FinTantque
    Fin
    0
    1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
       
      ici de même tu as oublié d'initialiser i à 0 ;)
      0
  3. dr hisoka Messages postés 70 Date d'inscription   Statut Membre 3
     
    on compare carre avec nbr .... mais ou est la valeur initiale de carre ????
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. CALiiMERO Messages postés 77 Statut Membre 8
     
    J'ai donner comme valeur initiale de carre = 0, et j'ai compiler le programme et ça donne
    X=9
    La racine carre est 9
    Il y a quelque chose qui cloche quelques part :s
    0
    1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
       
      quel programme as-tu compilé exactement ? celui donné plus haut ne compile pas, il manque une accolade.
      0
  6. CALiiMERO Messages postés 77 Statut Membre 8
     
    Celui là :
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int i=0,carre,nbr;
    printf("entrer un nbr");
    scanf("%d",&nbr);
    while(carre<nbr)
    {
    carre=i*i;
    if(carre==nbr)
    printf("la racine est %d",carre);
    else
    i++;

    return 0;
    }
    0
  7. le père
     
    Bonjour
    printf("la racine est %d",carre);
    Et ça t'étonne que ça affiche le carré au lieu de la racine ?
    0
    1. dr hisoka Messages postés 70 Date d'inscription   Statut Membre 3
       
      il faut afficher i pas le carre
      0
  8. CALiiMERO Messages postés 77 Statut Membre 8
     
    erreur de frappe lol
    0
  9. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    il faut faire plus simple et plus "naïf". Comment aurais-tu pu dire, depuis que tu as appris ce qu'est un carré, que 9 en est effectivement un ?

    Et bien tu fais simplement des essais :
    1 au carré -> 1 c'est pas 9
    2 -> 4 , c'est pas 9
    3 -> 9 , c'est 9 !!! Donc, oui, 9 est un carré et c'est le carré de 3.

    Autre exemple, avec 21.
    1 -> 1, c'est pas 21
    2 -> 4, c'est pas 21
    3 -> 9, c'est pas 21
    4-> 16, c'est pas 21
    5-> 25, c'est pas 21.
    En plus, avec 5 on a dépassé 21. On a aucune chance qu'un nombre plus grand au carré donne 21, on s'arrette là et on constate que 21 n'est pas un carré.

    Tu comprends ?
    -1
  10. dr hisoka Messages postés 70 Date d'inscription   Statut Membre 3
     
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int i , carre,nbr;
    printf("entrer un nbr");
    scanf("%d",&nbr);
    while(carre<nbr)
    {
    carre=i*i;
    if(carre==nbr)
    printf("la racine est %d",carre);
    else
    i++;

    return 0;
    }

    je les compiler sans prob mais ça n'exécute pas !!!??? prq ?
    -1