IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

mon prog ne boucle pas et ne donne pas de résultat


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 164
    Points : 12
    Points
    12
    Par défaut mon prog ne boucle pas et ne donne pas de résultat
    Bonjour,
    Mon programme doit calculer deux surfaces, ensuit pour la plus petite surface il doit faire un zoom en réduisant la largeur jusqu’à ce que la surface petite soit égale a l'autre surface.
    Pour le moment il ne boule pas et ne me donne pas de résultat.

    Aider moi svp.


    Main.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    #include <highgui.h>
    #include <cv.h>
    #include <cxcore.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include "cvaux.h"
    #include "highgui.h"
    #include <ctype.h>
    #include <math.h>
    #include <string.h>
     
     
    #define CV_MAT_ELEM_CN( mat,elemtype,row,col) (*(elemtype*)((mat).data.ptr + (size_t)(mat).step*(row) + sizeof(elemtype)*(col)))
     
    using namespace std;
     
    int calcul_surf(IplImage *pic)
    {
      int n=pic->height;
      int m=pic->width;
      int tab[n][m];//creer une matrice de meme taille que notre image
     
      CvScalar pixel;
     
        int i=0;
        int j=0;
     
    for(int i=0; i<pic->height; i++)
      {
      for(int j=0; j<pic->width; j++)
        {  pixel = cvGet2D(pic, i, j);//elle recupere le pixel de l image
     
            if ((pixel.val[0]==0)&&(pixel.val[1]==0)&&(pixel.val[2]==0))
                                    {tab[i][j]=1;}
            if ((pixel.val[0]==255)&&(pixel.val[1]==255)&&(pixel.val[2]==255))
                                    {tab[i][j]=0;}
     
         }
       }
    //on calcule la surface de l image a partire avoir calculer la somme des 1 de la matrice
    int s=0;
    for(int i=0; i<pic->height; i++)
    {
        for(int j=0; j<pic->width; j++)
            {if (tab[i][j]==0)           s++;}
    }
     
    int k=(pic->height*pic->width)-s;
     
    return k;
     
    }
     
    int main()
    {
        int s1,s2;
        IplImage *img1=NULL;
        IplImage *img2=NULL;
        IplImage *pic=NULL;
        img1=cvLoadImage("C:/Users/ATHMANE/Desktop/chien-05.bmp");
        img2=cvLoadImage("C:/Users/ATHMANE/Desktop/chien-01.bmp");
        double larg1=img1->width;
        int haut1=img1->height;
        double larg2=img2->width;
        int haut2=img2->height;
        //On calcul la surface de nos deux images
     
        s1=calcul_surf(img1);
        s2=calcul_surf(img2);
     
        cout << s1 << endl;
        cout<<endl;
        cout << s2 << endl;
     
    if(s1<s2)
       {while(s1<s2){
        while(s1<s2)
             {pic= cvCreateImage(cvSize(larg2,(haut1/larg1)*larg2), img1->depth,img1->nChannels);
              cvResize(img1,pic, CV_INTER_LINEAR);
              larg2=larg2+((larg2*5)/100);
              s1=calcul_surf(img1);
             break;
             }}
     
       }
     
      else
       {
        while(s2<s1)
             {pic= cvCreateImage(cvSize(larg1,(haut2/larg2)*larg1), img2->depth,img2->nChannels);
              cvResize(img2,pic, CV_INTER_LINEAR);
              s2=calcul_surf(pic);
              larg1=larg1+((larg1*5)/100);
             }
     
        }
     
        cout << s2 << endl;
        cout<<endl;
        cout << s1 << endl;
        cout<<endl;
     
    }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Vous pouvez utilisez un debuggueur pour trouver là ou votre programme pose problème. Notamment en plaçant des point d'arrêts (breakpoints) ou en executant pas à pas, vous allez trouver ou est ce que la boucle fonctionne ou pas.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Je ne vois pas de "return 0;" dans le main. Après, il est tard, mais la compil. doit râler non?

    (Suivez le conseil de LittleWhite, celui de Visual Studio express fera par exemple l'affaire)

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    int tab[n][m];//creer une matrice de meme taille que notre image
    cette ligne va poser une erreur de compilation"error C2057: expected constant expression"

    lorsque vous précisez le nombre d'éléments d'un tableau en le déclarant, la valeur doit être une constante entière

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par bretus Voir le message
    Bonsoir,

    Je ne vois pas de "return 0;" dans le main. Après, il est tard, mais la compil. doit râler non?
    main est un cas particulier. Elle doit avoir int en type de retour, mais on peut ne pas mettre return (dans ce cas, on retourne EXIT_SUCCESS).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/06/2010, 11h43
  2. mon prog c++ n'utilise pas le swap
    Par keket123 dans le forum C++
    Réponses: 11
    Dernier message: 18/08/2006, 08h05
  3. [C#/DataView] Pourquoi mon tri ne donne pas le resultat escompté ?
    Par Low-Fi dans le forum Accès aux données
    Réponses: 1
    Dernier message: 12/08/2006, 22h15
  4. Réponses: 11
    Dernier message: 04/05/2006, 11h50
  5. Réponses: 2
    Dernier message: 06/06/2005, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo