Mảng một chiều C/C++

memset gán theo byte :smiley: nên thg` chỉ dùng khi gán bằng 0 thôi.

1 Like

Em làm bài ạ:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
	cout << "---WHO HAVE THE HEIGHEST SCCORE ?---" << endl;
	cout << endl; //blank line
	int32_t score[100]; //int32_t là kiểu dữ liệu số nguyên với mỗi số chiếm 4 bytes; tên array là score, số phần tử là 100.
	cout << "This calculator can only handle under 100 students and their scores." << endl;
	cout << endl; //blank line
	for (int32_t index = 1; index <= 100; index++) {
		int32_t stop;
		cout << "Type \"2\" to continue, type in \"1\" to escape, if you have finished.";
		cin >> stop;
		if (stop != 1) {
		cout << "This student serial number is " << index << " and his/her score is: ";
		cin >> score[index];
		}
		else {
			break;
		}
	}
	int max = score[0];
	for (int32_t i = 1; i <= 100; i++) {
		if (score[i] > max) {
			max = score[i] ;
			system("cls");
			cout << endl; // blank line
			cout << "The student with serial number of " << i << " has the heighest score of " << max << " ." << endl;
		}
	}
	
	system("pause");
	return 0;
}
1 Like

Chỗ này đâu cần thiết bạn. Vì điều kiện không đúng thì nó vẫn giữ giá trị đó mà.

1 Like

A post was split to a new topic: Tìm vị trí các học sinh có điểm cao nhất giống nhau

A post was merged into an existing topic: Tìm vị trí các học sinh có điểm cao nhất giống nhau

#include<iostream>
#include<stdint.h>
using namespace std;
/*TÌM HỌC SINH CÓ ĐIỂM CAO NHẤT*/
int main(){
    int32_t num;
    cout << "Enter the number of students: " << endl;
    cin >> num;
    float array[50];
    for (int32_t i = 0; i <= num - 1; i++) {
        cout << "Marks of students has ordinal number " << i << ": ";
        cin >> array[i];
    }
    cout << "The mark list is: " << endl;
    for (int32_t i = 0; i <= num - 1; i++) {
        cout << array[i] << endl;
    }
    float max;
    for (int32_t i = 0; i <= num - 1; i++) {
        if (max < array[i]) {
            max = array[i];
       }
    }
   cout << "The highest mark is: " << max << endl;
   cout << "The order(s) of student have highest point is: ";
    for (int32_t i = 0; i <= num - 1; i++) {
            if (max == array[i]) {
                cout << i << "\t";
            }
        }
    cout << endl;
    system("pause");
    return 0;
}

Hơi… cồng kềnh đấy. Vòng for tìm max không cần biết slot nào max đâu, chỉ cần biết max(keys) thôi, sau đó cũng đi tìm lại mà.

6 Likes

Có thể giải thích cho em thêm được không a, em không hiểu lắm :frowning: ?

Bạn sử dụng 2 vòng for, vòng for thứ nhất để tìm max và vị trí, vòng for thứ 2 để tìm vị trí có cùng giá trị. Vậy tại sao không dùng 1 vòng tìm max, 1 vòng tìm vị trí nè. Vòng thứ nhất chỉ có tác dụng tìm max, vòng thứ 2 chỉ có tác dụng tìm vị trí. Làm như thế sẽ giảm được việc xét điều kiện ở vòng for dưới.

Bạn bỏ cái cout << "The highest mark is: " đi vì điểm bằng nhau rồi thì in điểm ra làm gì nữa đúng không nè.

5 Likes

Em cảm ơn nhiều nha! Em hiểu rồi ^^. Em edited lại rồi, anh check giúp em với!

2 Likes

Xin chào mọi người ạ
Cho mình hỏi, Mảng khai báo trong chương trình con thì giá trị của nó có thay đổi khi thay đổi trong những chương trình chính và chương trình con khác như khi khai báo trong hàm main không ạ
MÌnh cảm ơn ạ

Hmm
Khai báo biến cục bộ thì đâu đưa ra ngoài để thay đổi giá trị được nhỉ. Nếu bạn dùng biến static thì tất nhiên là giá trị của nó bị thay đổi.

1 Like

Mn xem có chỗ nào cần sửa thì giúp em với ạ

#include<iostream>

using namespace std ;

int main()
    {
        int diem[30] ;
        int best = diem[0] ;
        int thutu = 1 ;
        
        for(int i = 0; i <= 29; i++)
        {
            cout<<"nhập điểm của SV thứ "<<i+1<<":" ;
            cin>>diem[i] ;
        }
        
        for(int i = 0; i < 29; i++)
        {
            if (best < diem[i+1])
            {
                best = diem[i+1] ;
                thutu = i+2      ;
            }
        }
    cout<<"học sinh thứ "<<thutu<<" có số điểm cao nhất với: "<<best<<" điểm"<<endl ;
    system("pause");
    return 0 ;
}

Sao lại i + 1 với i + 2 tùm lum hết vậy?

1 Like

Phải để i + 2 để cho nó đúng stt

#include <iostream>
using namespace std;

int main() {
	/*BÀI TẬP
	Với yêu cầu đặt ra ban đầu, giảng viên cần biết điểm số cao nhất của 30 sinh viên trong lớp 
	đồng thời muốn biết điểm cao nhất là của sinh viên có số thứ tự bao nhiêu.
	Bạn hãy sử dụng mảng 1 chiều để giải quyết vấn đề này. (Điểm của sinh viên được nhập từ bàn phím)
	*/

	int32_t score_of_students[30];
	int32_t max_score = score_of_students[0];  
	
	//Enter score 
	for (int32_t index = 0; index <= 29; index++) {
		do{
			cout << "Enter score of students " << index << " : ";
			cin >> score_of_students[index];

			//Check score
			if (score_of_students[index] < 0 || score_of_students[index] > 10)
				cout << "Error score! Please enter your score again." << endl;

		} while (score_of_students[index] < 0 || score_of_students[index] > 10);

		if (max_score < score_of_students[index])
			max_score = score_of_students[index];
	}
	cout << endl;
	cout << "Max score of students = " << max_score << endl;

	//Find index of max score
	for (int32_t index = 0; index <= 29; index++) {
		if (score_of_students[index] == max_score)
			cout << "Index of students have a score is " << max_score << " = " << index << endl;
	}
	
	system("pause");
	return 0;
}
1 Like

cho mình hỏi câu này có ý nghĩa gì vậy mà tại sao lại phải có câu này thế bạn

int diem_max = mang_diem[0];

// phần điều kiện này bạn giải thích giúp mình được không
if (diem_max < mang_diem[i])
        {
            diem_max = mang_diem[i];
        }
        else 
            {
            diem_max = diem_max;
          
            }

Dạ đây là bài giải bài tập của em, em in được điểm cao nhất mà chưa in được số thứ tự mong mọi người chỉ cho em ạ.

#include <iostream>;
#include <cstdint>;

using namespace std;

int main() {
    int32_t sosv[5];
    int32_t sottsv = sizeof(sosv) / sizeof(int32_t);
    int32_t maxdiem = INT32_MIN;
    for (int32_t stt = 1; stt <= (sottsv - 1); stt++) {
        cout << "Diem hoc sinh thu " << stt << ": ";
        cin >> sosv[stt];   
        if (sosv[stt] > maxdiem)
            maxdiem = sosv[stt];
    }
    cout << "Hoc sinh co so diem cao nhat la: " << maxdiem << endl;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?