getchar() ne fonctionne pas bien?

J'ai écrit ce code en C++, et j'ai utilisé getchar() à la pause de la console, mais je ne vois aucun effet de l'utilisation de cette fonction, voici le code:

#include<iostream>
#include<stdio.h>//to pause console screen

using namespace std;
//function prototypes
int  getSmallest(int*);
int getOccurrence(int, int*);

int main(){

    int a[7], counter=0, smallest;
    cout<<"Please enter 7 integers"<<endl;
    while(counter!=7){
        cin>>a[counter];
        counter++;
    }
    smallest=getSmallest(a);
    cout<<"The smallest number is "<<smallest<<"; it apears "<<getOccurrence(smallest,a)<<" times"<<endl;
    getchar();//to pause console screen
    return 0;
}

int  getSmallest(int*x){
int count=0, smallest=*x;
//loop till last item in array
while(count!=7){

    if(*x<smallest)
        smallest=*x;
    count++;
    x++;
}
return smallest;
}


int getOccurrence(int smallest, int* address){

int count=0,occ=0;
//loop till last item in array
while(count!=7){

    if(*address==smallest)
    occ++;
    count++;
    address++;
}
return occ;

}
  • En général, il n'est pas bon de mélanger cin avec les autres fonctions d'entrée tels que getchar.
  • ¤ Le problème technique est probablement qu'il y a au moins un caractère de saut de ligne à gauche dans la mémoire tampon d'entrée. La solution pratique pour la tâche de garder la fenêtre de la console à la fin, c'est soit (1) exécutez le programme à partir de la ligne de commande, ou (2) de l'exécuter via un utilitaire qui s'arrête, comme le faisant glisser vers un fichier de commandes avec un pause de commande, ou à l'aide de Ctrl F5 dans Visual Studio, ou (3) de l'exécuter dans un débogueur (par exemple, F5 dans Visual Studio) et de placer un point d'arrêt sur l'accolade de fermeture de main. Il n'y a pas besoin d'attendre pour une clé dans le programme lui-même. Cheers & hth.,
  • Ou peut-être qu'il ne fait pas cela pour les répétitions, mais juste pour aider les gens. (Mais je suis d'accord que c'est vraiment le mérite d'être une réponse, si ce n'est pour être plus facilement visible. C'est la réponse définitive à ce genre de question.)
InformationsquelleAutor Aan | 2011-12-09