Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
Dựa trên yêu cầu của bài toán, ta có thể đề xuất các bảng dữ liệu và các trường làm khoá chính và khoá ngoài như sau:
- Bảng HocSinh:
Trường: Mã số báo danh, Họ tên, Ngày sinh, Địa chỉ
Khoá chính: Mã số báo danh
Khoá ngoài: Không có
- Bảng MonHoc:
Trường: Tên môn học, Mã môn học
Khoá chính: Mã môn học
Khoá ngoài: Không có
- Bảng PhongThi:
Trường: Mã phòng thi, Tên phòng thi
Khoá chính: Mã phòng thi
Khoá ngoài: Không có
- Bảng ThiSinh_MonHoc:
Trường: Mã số báo danh, Mã môn học
Khoá chính: Mã số báo danh, Mã môn học
Khoá ngoài: Mã số báo danh tham chiếu đến bảng HocSinh, Mã môn học tham chiếu đến bảng MonHoc
- Bảng KetQuaThi:
Trường: Mã số báo danh, Mã môn học, Mã phòng thi, Điểm thi
Khoá chính: Mã số báo danh, Mã môn học, Mã phòng thi
Khoá ngoài:
Mã số báo danh tham chiếu đến bảng HocSinh
Mã môn học tham chiếu đến bảng MonHoc
Mã phòng thi tham chiếu đến bảng PhongThi
Lưu ý rằng, trong bảng ThiSinh_MonHoc, ta cần sử dụng một tập hợp các trường (Mã số báo danh, Mã môn học) để tạo thành khoá chính, bởi vì một thí sinh có thể đăng kí thi nhiều môn học khác nhau. Còn trong bảng KetQuaThi, ta cần sử dụng một tập hợp các trường (Mã số báo danh, Mã môn học, Mã phòng thi) để tạo thành khoá chính, bởi vì một thí sinh có thể thi cùng một môn học ở nhiều phòng thi khác nhau.
Bài 10:
uses crt;
var a,b:array[1..10000]of longint;
i,n,dem,j,dem1:longint;
kt:boolean;
begin
clrscr;
readln(n);
for i:=1 to n do readln(a[i]);
dem:=0;
b[1]:=a[1];
for i:=1 to n do
begin
kt:=true;
for j:=1 to dem do
if b[j]=a[i] then kt:=false;
if kt=true then
begin
dem:=dem+1;
b[dem]:=a[i];
end;
end;
writeln(dem);
for i:=1 to dem do
begin
dem1:=0;
for j:=1 to n do
if b[i]=a[j] then dem1:=dem1+1;
writeln(b[i],' xuat hien ',dem1,' lan');
end;
readln;
end.
Tham khảo:
# Đọc dữ liệu từ tệp điểm thi
with open("diemthi.inp", "r") as file:
data = file.readlines()
# Tạo danh sách lưu thông tin điểm thi của các thí sinh
scores = []
for line in data:
line = line.strip().split()# Tách dữ liệu trên mỗi dòng thành các từ
sbd = line[0]# Lấy số báo danh của thí sinh
diem1 = int(line[1])# Lấy điểm bài 1
diem2 = int(line[2])# Lấy điểm bài 2
diem3 = int(line[3])# Lấy điểm bài 3
tong_diem = diem1 + diem2 + diem3# Tính tổng điểm
scores.append((sbd, diem1, diem2, diem3, tong_diem))# Thêm thông tin vào danh sách
# Sắp xếp danh sách giảm dần theo tổng điểm
scores.sort(key=lambda x: x[4], reverse=True)
# Ghi kết quả vào tệp ketqua.out
with open("ketqua.out", "w") as file:
for score in scores:
sbd = score[0]
diem1 = score[1]
diem2 = score[2]
diem3 = score[3]
tong_diem = score[4]
file.write(f"{sbd}\t{diem1}\t{diem2}\t{diem3}\t{tong_diem}\n")
Dành cho những bạn đang muốn nâng giải lên trên 100GP cho giải nhất:
- Thứ nhất, đây là giải thưởng đã được thầy và hội động hoc24.vn thông qua, vậy nên nếu có thay thì chủ cuộc thi sẽ cần kiến nghị lại với hội đồng trang, mất nhiều công sức và thời gian. Vả lại, mình khẳng định là các thầy cô sẽ không đồng ý với phương án này, vì số GP quá lớn. Đến nhất tuần mấy tuần nay, bỏ ra bao công sức giúp giải bài, còn khó kiếm lên trên 100GP nữa là.
- Thứ hai, cuộc thi này thuộc mảng môn phụ, chứ không thuộc mấy mảng trọng tâm hay chính như Toán, Văn, Lí, Hóa,... Mảng Tin học mấy tuần nay, nhất tuần có khi cũng chưa kiếm đến 10GP một tuần ấy chứ. Với cả cuộc thi Tin học lần trước chỉ có 20 người tham dự vòng 1, và có 2 vòng. Vậy nên không thể nào giải của cuộc thi này còn lớn hơn cả cuộc thi tiếng Anh của anh Minh trước đây được. Tham dự rất đông đảo và nhiệt tình, tỉ lệ "chọi" rất cao mà chung cuộc giải nhất chỉ có 100GP.
- Vậy nên, đây là một sân chơi bổ ích, để phát triển thêm kiến thức và kĩ năng, cũng như giải trí. Vậy nên với giải trên, mình nghĩ bạn chủ cuộc thi đã lựa chọn đúng giải.
- Nếu muốn kiếm thêm GP, các bạn có thể giúp đỡ các bạn trả lời câu hỏi. Trao đi cũng là nhận lại, trao càng nhiều thì nhận càng nhiều!
Đây là ý kiến của mình.
Để lưu trữ danh sách học sinh và thông tin điểm thi của họ, bạn có thể sử dụng một danh sách chứa nhiều danh sách con. Mỗi danh sách con sẽ chứa tên học sinh (dạng chuỗi) và ba điểm số (dạng số) của họ tương ứng với ba bài thi.
Ví dụ, để tạo một mảng danh sách học sinh với thông tin điểm số, ta có thể sử dụng mã như sau:
# Nhập danh sách học sinh và điểm số
students = []
n = int(input("Nhập số lượng học sinh: "))
for i in range(n):
name = input(f"Nhập tên học sinh thứ {i+1}: ")
mark1 = float(input(f"Nhập điểm bài thi 1 của {name}: "))
mark2 = float(input(f"Nhập điểm bài thi 2 của {name}: "))
mark3 = float(input(f"Nhập điểm bài thi 3 của {name}: "))
students.append([name, mark1, mark2, mark3])
# Tính điểm trung bình và in ra danh sách học sinh và điểm trung bình của họ
for student in students:
name = student[0]
mark1 = student[1]
mark2 = student[2]
mark3 = student[3]
avg_mark = (mark1 + mark2 + mark3) / 3
print(f"Học sinh {name} có điểm trung bình là {avg_mark}")
Cuộc thi bị ế ròi :)) giải thưởng thì ''ngon'' đó nhưng mà đọc câu này là nản ròi :v : "Thể lệ cuộc thi gồm 3 vòng sẽ gôm gọn tất cả các kiến thức của tất cả các môn học từ 6-12 và cũng có thể là kiến thức của đại học" theo mình thấy thì ở đây ít ai có kiến thức của đại học lắm :v ( theo ý mình nghĩ thoi chứ cũng không chắc, có thể là có nhưng không thích tham gia :)) ) mình nói vậy thoi chứ chả có ý gì đâu :)) //cmt dạo :v//