Crash khi chọn 'y'

Mọi người ơi giúp mình chạy ctirnh này với, mình cho người dùng ấn Y or “y” thì nó crash luôn, không thể nào quay lại lúc enter your choice.

typedef struct Student{
	char name[20];
	char country[20];
	int birthday_year ;
	struct mark{
		float diemToan;
		float diemHoa;
		float diemLy;
	}Mark3mon;
} Student;
void Input(Student *students, int numberofstudents){
	int i =0 ;
	for(i = 0;i<numberofstudents; i++){
	Student	*currentstudent = students+i;
		printf("\nNhap ten: ");fflush(stdin);gets(currentstudent->name);
		printf("\nNhap que huong: ");fflush(stdin);gets(currentstudent->country);

		do{
		printf("\nNhap nam sinh: "); scanf("%d",&currentstudent->birthday_year);fflush(stdin);
		}while((CURRENT_YEAR-currentstudent->birthday_year)>20);
		
		do{
		printf("\nNhap diem Toan: ");scanf("%f",&currentstudent->Mark3mon.diemToan);fflush(stdin);
		}while(currentstudent->Mark3mon.diemToan>10&&currentstudent->Mark3mon.diemToan<0);
		
		do{
		printf("\nNhap diem Ly: ");scanf("%f",&currentstudent->Mark3mon.diemLy);fflush(stdin);
		}while(currentstudent->Mark3mon.diemLy>10&&currentstudent->Mark3mon.diemLy<0);
		
		do{
		printf("\nNhap diem Hoa: ");scanf("%f",&currentstudent->Mark3mon.diemHoa);fflush(stdin);
		}while(currentstudent->Mark3mon.diemHoa>10&&currentstudent->Mark3mon.diemHoa<0);
	}
}



void Output(Student *students, int numberofstudents){
	int i = 0;
			printf("\n=================================================================================================");
			printf("\n|Ten hoc sinh	|Que Huong	|Nam Sinh	|Diem Toan	|Diem Ly	|Diem Hoa	|");
	for(i = 0;i<numberofstudents;i++){
		Student *currentstudent = students+i;
			printf("\n=================================================================================================");
			printf("\n|%15s|%15s|%15d|%15.2f|%15.2f|%15.2f|",
			currentstudent->name,
			currentstudent->country,
			currentstudent->birthday_year,
			currentstudent->Mark3mon.diemToan,
			currentstudent->Mark3mon.diemLy,
			currentstudent->Mark3mon.diemHoa
			);
	}	
}
void Sort(Student *students, int numberofstudents){
	int i =0;
	int j =0;
	Student temp;
	Student *si = students+i;
	Student *sj = students+j;
	float TotalI = si->Mark3mon.diemLy+si->Mark3mon.diemLy+si->Mark3mon.diemHoa;
	float TotalJ = sj->Mark3mon.diemLy+sj->Mark3mon.diemLy+sj->Mark3mon.diemHoa;
	for(i=0;i<numberofstudents-1;i++){
		for(j = i+1;numberofstudents;j++){
			if (TotalI<TotalJ)
			 temp = *si;
			*si = *sj;
			*sj = temp;
		}
	}

}
int main (){
	Student *students = NULL;
	int numberofstudents;
	char choice;
	
	printf("---------------------Student Management---------------------\n");
	printf("------------------------------------------------------------\n");
	printf("1. Input |2. Sort |3. Analyze|4. Find|5. Save|6. Open|7.Exit ");

	do{	
	printf("\nEnter your choice: "); 
		choice = getchar();
		fflush(stdin);
		while(choice == '\n'){
			choice = getchar();
		}
		switch(choice){
			case '1': 
				printf("\nNhap so luong sinh vien :"); scanf("%d",&numberofstudents); fflush(stdin);
				students = (Student*)malloc(numberofstudents*sizeof (Student*));
				Input(students,numberofstudents);
				Output(students,numberofstudents);
				break;

			case '2':
				if(students == NULL&&numberofstudents >0)
					Sort(students,numberofstudents);
					Output(students,numberofstudents);
				break;
			case '3':
				printf("You chose to analyze\n");
				break;
			case '4':
				printf("You chose to find\n");
				break;
			case '5':
				printf("You chose to save\n");
				break;
			case '6':
				printf("You chose to open\n");
				break;
			default:
				break;
		}
		printf("\nDo you want to continue the program?\n");
		printf("Co. (bam phim y, Y) \n");
		printf("Khong (bam phim  n, N)\n");
		printf("Clear man hinh ! (bam c, C)\n");

		printf("Your choice is: ");
		fflush(stdin);
		choice = getchar();
		
		if(choice == 'c'||'C'){
		system("cls");	
	}	
	}while(choice !='n'||choice !='N');

}

code như này ko đúng cú pháp r b @@

6 Likes

bajn gjiusp minh code lai dc k

Cậu đọc lại cú pháp của if condition trong C rồi tự sửa đi Nam :smile:
Chắc code này cậu lấy của ai đó, rồi sửa để nộp bài phải không? :smile: Làm vậy không giúp cậu giỏi lên được đâu.

6 Likes

Ủa sao cậu lại nói thế? :smile:
Tớ nói bình thường mà, cậu tự ti tới mức coi đó là lời nói nặng nề à?
Tớ biết có phải ai cũng sinh ra là đã giỏi đâu.
Việc nhìn code người khác code theo chẳng vấn đề gì, miễn là cậu hiểu từng dòng cậu đang copy. Nhưng việc cậu copy toàn bộ mà không hiểu, thì không thể gọi là “nhìn mà code theo được”. Đừng đánh tráo khái niệm nhé! :smile:


Để tớ chứng minh việc cậu đang làm không phải là “nhìn và code theo”:
Cậu nhìn dòng này:

Với dòng này:

Nếu cậu hiểu thứ mà cậu đang copy, thì cậu hẳn hiểu cách viết đúng ở dòng while ở dưới. Đây không phải là nhìn và code theo đâu.


Giờ, tớ có thêm suggestion cho cậu:

  • Cậu nên sửa cái tính tự ái vặt vãnh của cậu. Cậu không giỏi đâu, thế nên việc tự ái trước lời góp ý sẽ khiến cậu ở mãi chỗ cậu đang đứng hơi lâu đấy :smile:
    Mở rộng cho cậu, không ai muốn làm việc với 1 fresher mới ra trường nhưng tự ái như trẻ con vậy đâu.
  • Cậu nên chăm chỉ học căn bản hơn. Code cậu đưa cho tớ thể hiện cậu không nắm được căn bản của C. Cậu đừng biện luận do C khó, nó khó, nhưng không phải là thứ khiến cậu không viết nổi if-condition đúng (đó là thứ căn bản nhất, và tất cả các tutorial về C if condition sẽ nói cho cậu cách viết đúng).
    Việc chăm chỉ học hơn sẽ giúp cậu bớt tự ti đấy. Ngoài ra, cậu cũng không có đường nào khác để học ngoài việc chăm chỉ đâu.
  • Dừng ngay việc copy code mà không hiểu. Một lần nữa, nó không khiến cậu giỏi ra đâu.

Đó là ý kiến đóng góp cá nhân của tớ dành cho cậu. Cậu hoàn toàn có thể giữ cái tôi nhỏ bé của cậu và ignore hoàn toàn nó đi, đó là lựa chọn của cậu, và chịu trách nhiệm cho quyết định đó.

7 Likes

hey , cậu không hiểu thế nào là tự ái thế nào là góp ý à? tớ bảo cậu nói nhẹ nhàng hơn một tí đi thì cậu chết à :slight_smile: tớ mới học nên có nhiều cái phải hỏi, nếu cậu không muốn trả lời thì cậu có thể cho qua hoặc không để ý tới, tớ không cần cậu nói là tớ copy người khác vì đây là tớ TỰ LÀM OK ? :slight_smile: đừng có judge người khác và nghĩ ai cũng giống ai? Để được một vị trí cao thì chắc chắn phải trải qua những giai đoạn thế này, cậu tự nhắm mắt, bắt tay suy nghĩ xem hồi xưa cậu có như tớ không? Ai cũng như ai cả thôi,

Share more, get more, dont judge, send love :slight_smile:

Cảm ơn về những lời góp ý của cậu nhé @Nam_Pham_Hoai.

Tớ hiểu chứ. Ở comment trước của cậu đã thể hiện rõ ràng là tự ái mà? :slight_smile:
Ngay cả việc cậu đang tranh cãi lại ở comment này cũng thể hiện sự tự ái của cậu. Cậu không phân biệt được à? :smile:

Không, tớ không chết. 2 thứ đó không liên quan tới nhau.
Cơ mà những thứ dưới đây có lẽ sẽ liên quan tới nhau nè:

  1. Tại sao cậu phải xóa comment đáng xấu hổ trước? :smile:
  2. Tại sao cậu không cảm ơn tớ vì đã chỉ cho cậu những điểm yếu chết người? Thay vào đó, cậu lại cố gắng tấn công tớ bằng cách nói tớ nói “không nhẹ nhàng” (tớ e là cậu đã có 1 tuổi thơ không êm đẹp, tới mức không phân biệt nổi đâu là góp ý, đâu là công kích).
    Những thứ tớ góp ý, đặc biệt là việc dừng ngay copy code, đều là những điều hữu ích cho cậu. Cậu có thể lờ đi nếu cậu muốn :smile: Không ai chết, trừ sự nghiệp của cậu, nếu cậu làm vậy.

Cậu thấy đó, cậu đang tự thể hiện bản thân là người thiển cận và không ham học hỏi đó :smile:

Tớ hiểu cậu mới học chứ.
Tớ cũng đã đề cập ở comment trước:

Vấn đề của cậu là vấn đề vô cùng cơ bản, cậu cần phải đọc lại kiến thức để làm, và tớ đã chỉ ra rõ vấn đề nằm ở if condition. Việc để cậu đọc lại là cách giúp cậu brush up kiến thức của cậu, cũng như giúp cậu rèn luyện cách tìm kiếm thông tin.
Nếu cậu sử dụng logic bé tí tẹo của cậu, cậu sẽ thấy tớ muốn trả lời. Và hơn cả trả lời vấn đề cậu nghĩ cậu đang gặp phải, tớ đã chỉ ra vấn đề thực sự cậu đang có, và cách cải thiện điều đó, dựa trên những gì tớ đã thấy trong industry. Nó sẽ giúp cho sự nghiệp sau này của cậu đấy.

Vậy cậu giải thích sao về điều này:

Nếu cậu “nhìn code và gõ lại” (theo như sự thừa nhận ở comment đã xóa của cậu), mà không hiểu, thì đó khác gì copy? Cậu muốn đánh tráo khái niệm chỉ vì cậu không ấn ctrl C thôi à? :smile:

Hồi xưa, tớ cũng không biết nhiều, giống cậu.
Hồi xưa, tớ chăm chỉ đọc kỹ các khái niệm cơ bản, khác cậu.
Hồi xưa, tớ cũng gặp các lỗi sai vặt vãnh, giống cậu.
Hồi xưa, tớ trầy trật học cách đọc compiler complain để hiểu chuyện gì xảy ra, khác cậu.
Hồi xưa, tớ cũng hay hỏi mấy câu hỏi ngu ngốc, giống cậu.
Hồi xưa, tớ tiếp nhận góp ý, và hỏi lại làm thế nào để tớ biết điều tớ nên biết, khác cậu.
Hồi xưa, tớ biết cảm ơn người giúp tớ, khác cậu.
Hồi xưa, tớ biết xin lỗi người khác nếu tớ làm phiền họ, khác cậu.
Hồi xưa, tớ lắng nghe nhiều hơn nói, khác cậu.
Hồi xưa, tớ tham gia cuộc tranh luận chỉ khi tớ có strong point, khác cậu.
Hồi xưa, tớ phải tìm hiểu ý nghĩa của từng dòng code, trải qua hàng trăm, hàng nghìn giờ luyện tập, gõ đi gõ lại cho tới khi tớ nhớ trước khi sử dụng bất cứ thứ gì hỗ trợ việc tăng tốc độ lập trình, phân tích code của chính mình và code của người khác để tìm pattern chung cho good practice, cải thiện dần cách tổ chức code…, có lẽ cũng khác cậu.

Những thứ mà tớ liệt kê “khác cậu” ở trên giúp tớ lên tới vị trí này. Cậu sẽ ở dưới đó hơi lâu đấy, nếu cậu không “giống tớ” :smile:

Xem ai đang “nghĩ ai cũng giống ai” nè :smile:

Ừ, tớ cũng hi vọng cậu làm được điều đó trong tương lai gần.

6 Likes

Thái độ của bạn không hề thay đổi chút nào sau khi đọc 2 comment của mod @library. Vì 2 câu này nên bạn đã bị flag inappropriate.


Như bạn @Nam_Pham_Hoai đã biết, mình đã quyết định Silenced nick Nam_Pham_Hoai đến ngày 16/8/2021 vì thái độ không đúng mực khi tham gia diễn đàn theo diễn biến của topic trên. Mình biết rằng bạn có thể không vào diễn đàn nữa, nhưng đây là lời cảnh cáo đối với các thành viên khác rằng những hành vi như bạn Nam_Pham_Hoai sẽ bị nghiêm trị.

3 Likes

Mạnh dạn dự đoán độ tuổi đang vừa mới chớm dậy thì ahihi.

1 Like

Hi vọng cậu cố gắng sửa những gì tớ đã đề cập.
Hi vọng lần tới gặp cậu, tớ có thể thấy sự cải thiện rõ rệt từ cậu.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?