30/09/2018, 23:27
Hỏi đáp vền vấn đề dùng getch() và getchar() để dừng màn hình
Như tít thì mình thấy getch() không thuộc chuẩn nên không nên dùng.
Nhưng trong bài dưới đây mình dùng getch() thì màn hình đứng lại còn getchar() thì không.
Mn giúp mình giải đáp cái này đc không. Tks
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <conio.h>
using namespace std;
void taoMang(int a[], int &n)
{
cout << "Nhap so phan tu toi da: ";
cin >> n;
//tao mang ngau nhien
srand(time(NULL));
for (int i = 0; i < n; i++)
a[i] = rand() % 99 + 0;
}
void xuatMang(int a[], int n)
{
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
cout << "
";
}
void swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
void interChangeSort(int a[], int n)
{
//so sanh a[i] voi tat ca phan tu trong mang. roi doi vi tri a[i] vs a[j]
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
if (a[j] < a[i])
swap(a[i], a[j]);
}
}
//------------------------------------------***---------------------------------------------------
int main()
{
int a[100];
int n;
taoMang(a, n);
xuatMang(a, n);
interChangeSort(a, n);
xuatMang(a, n);
cout << "Push -ENTER- to quit.";
getchar();
return 0;
}
Bài liên quan
Bạn có thể xài hàm system(“pause”) trong thư viện windows.h để đừng màn hình
Bạn bị thiếu
cin.ignore()
ngay sau chỗcin >> n
trong hàmtaoMang
, do đó nó còn để lại kí tự ‘\n’ trong stdin, hàmgetchar()
nhận vào và lấy kí tự đó ra stdin nên trong trường hợp này bạn không dừng màn hình được, còn hàm getch() chờ mình nhập do nó nhận gia trị trực tiếp từ bàn phím không lấy trong stdinHàm swap của bạn trong trường hợp này là dùng tham chiếu :
void swap(int &a, int &b)
Vòng lặp nên là:
for (int i = 0; i < n - 1; i++)
system(“pause”) mình thấy mn khuyên không nên dùng vì nó không portable
Bạn giải thích rất chi tiết. cảm ơn bạn