2017-05-03 2 views
-2

Ainsi que le titre le dit, je ne veux pas utiliser le système ("pause") parce que je ne veux pas développer un mauvais habbit. Et je n'arrive pas à comprendre pourquoi il continue à fermer même si j'ai cin.get();Pourquoi l'application est-elle fermée même si j'ai cin.get() ;?

#include <iostream> 

using namespace std; 


float medel(int v[], int n) 
{ 
    float res = 0.0; 

    for (int i = 0; i < n; i++) 

    { 
     cin >> v[i]; 

     res += ((double)v[i]/n); 
    } 

    return res; 


} 

int main() { 
    const int num = 10; 
    int n[num] = { 0 }; 

    cout << "Welcome to the program. Enter 10 positive numbers: " << endl;; 
    cin.get(); 
    cout << "The average of ten numbers entered is: " << medel(n, num) << endl; 
    cin.get(); 
    return 0; 
} 
+0

char x, while (x! = 'Q') {cin.get();} –

+3

Comment apprenez-vous C++? 'cin.get();' ne va pas lire en 10 nombres et il ne stocke pas non plus ce qu'il a lu dans n'importe quoi. On dirait que vous pourriez utiliser un [bon livre C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver

Répondre

4

cin.get() consomme un seul caractère de votre flux d'entrée.

S'il n'y en a pas déjà un, le programme bloquera l'attente d'un, ce qui est votre attente.

Cependant, il est un là: la nouvelle ligne du Entrez après votre dernière keypress opération cin >> v[i].

Don't use cin.get() to keep your application running at the end, anyway. Par ailleurs, la logique de votre programme est défectueuse; vous semblez inviter des nombres positifs, puis introduire la sortie, avant de demander réellement n'importe quelle entrée.

Que diriez-vous quelque chose comme ceci:

int main() 
{ 
    const int num = 10; 
    int n[num] = { 0 }; 

    cout << "Welcome to the program. Enter " << num << " positive numbers: " << endl; 
    const float average = medel(n, num); 
    cout << "The average of the numbers entered is: " << average << endl; 
} 

Trouver un moyen en dehors de votre programme pour garder la fenêtre de terminal ouverte, si elle est pas déjà. Ce n'est pas le travail de votre programme.

+0

Je recommande d'utiliser 'cin.ignore', comme dans 'cin.ignore (100000, '\ n')'. Cela va ignorer les caractères jusqu'à ce qu'une nouvelle ligne soit entrée. –

+2

@ThomasMatthews: Je ne sais pas. Il n'y a pas besoin de tels trucs ici –

+0

@BoundaryImposition Je voulais vous demander cela, été une longue journée. – RH6