Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
[Event Code siêu Quà khủng] - Chọn món
Yêu cầu [Ngôn ngữ bất chấp tất cả]:
Mình là một người thích ăn uống. Nhưng lại rất mệt mỏi mỗi khi phải lựa chọn ăn món gì mỗi lần đi ăn.
Mình thích nhất các món ngon sau đó là chi phí và cuối cùng là tốc độ làm ra món đó.
Các bạn hãy giúp mình làm một ứng dụng chọn món với mong muốn như sau:
- Có một file dữ liệu có cấu trúc như sau:
+ dòng đầu tiên chứa giá trị n tương ứng với n món ăn
+ n dòng tiếp theo là thông tin món ăn có cấu trúc: <Tên món>_<Chỉ số ngon>_<Giá thành>_<Thời gian làm>
- Trong đó chỉ số ngon tính theo thang 100.
- Thời gian làm tính theo phút
Ví dụ :
Chương trình có khả năng tự đọc file dữ liệu khi khởi chạy.
Cho phép mình nhập vào tuần tự 3 giá trị ngưỡng của món ăn mong muốn.
Output:
- Xuất ra tên các món có tổng thỏa mãn ngưỡng giá thành và thời gian. Tất cả đều phải có ngưỡng ngon cao hơn ngưỡng mong đợi.
-------------------------------------------------------------------------------------------------------------------------------------
Event hôm nay sẽ kết thúc vào 8h ngày 12/04/2017
Chỉ chấp nhận câu trả lời là code được dán và phần bình luận.
Code phải chạy tốt trên trình biên dịch online như http://ideone.com/
Câu trả lời chính xác và sớm nhất sẽ giành được một phần quà là khóa học online tính phí tùy chọn trong danh sách sẽ được đưa ra.
Kteam sẽ liên hệ với người chiến thắng để trao giải và công bố public tại phần bình luận của event và trong fanpage www.facebook.com/howkteam
Hết thời hạn nộp rồi nhưng mong admin sẽ chấm, nếu em sai thì cho em xin giải thuật bài này ạ.
Bài này em thấy 1 số bác trên làm kiểu đơn giản quá, toàn so sánh lớn hơn bằng thì xuất. Nhưng theo em hiểu đề bài thì chỉ yêu cầu ngưỡng ngon lớn hơn ngưỡng ngon nhập vào, còn thời gian và giá cả chỉ cần làm sao cho tối ưu hóa nhất (có thể vượt/nhỏ hơn ngưỡng nhập vào).
Trong code, để mở mất thời gian em không viết code đọc file mà tạo sẵn bộ dữ liệu, admin muốn thử bộ dữ liệu khác thì chỉ cần sửa ở phần khai báo (số 6), còn nếu muốn bộ dữ liệu lớn hơn thì sửa số phần tử cuối cùng của mảng lại rồi nhập tay vô thêm, và sửa tất cả số 6 trong code thành số mà admin vừa sửa ban đầu). À lưu ý chỗ foodTime[i] div 60 không sửa nha!^^
Mong admin ráng chịu khó chấm và hồi đáp em. Chạy tốt trên Ideone.
Klq: nhưng admin kì thị pascal à? :v Đống này 2 tiếng đó :D
program BuiHoaiAnh;
uses crt;
var s,x,Z:string;
n,i,j,l,ngon,gia,time:longint;
A:array[1..3] of longint;
f:text;
begin
clrscr;
assign(f,'macro.inp');
reset(f);
readln(f,n);
writeln('Nhap Do Ngon Ma Ban Mong Muon');
readln(Ngon);
writeln('Nhap Gia Tien Ma Ban Nghi Phu Hop');
readln(Gia);
writeln('Nhap Thoi Gian Toi Da Ma Ban Co The O Lai Voi Nha Hang');
readln(time);
j:=1;
l:=0;
while not eof(f) do
begin
readln(f,s);
S:=S+'_';
for i:=j to length(s) do
begin
if S[i] ='_' then
for j:=i+1 to length(s) do
begin
if S[j]='_' then
begin
inc(l);
val(x,A[l]);
x:='';
BREAK;
end
ELSE
X:=X+S[J];
end;
end;
delete(s,length(s),1);
if (A[1] > ngon) and (A[2] <= gia) and (A[3] <=time) then
writeln(s);
A[1]:=0;
A[2]:=0;
A[3]:=0;
l:=0;
j:=1;
x:='';
s:='';
END;
close(f);
readln
END.
static void Main(string[] args)
{
string fileName = @"chomon.txt";
Console.WriteLine("Nhập vào 3 tiêu chí món ăn");
Console.Write("Tiêu chí ngon: ");
int ngon = int.Parse(Console.ReadLine());
Console.Write("Tiêu chí tien: ");
int tien = int.Parse(Console.ReadLine());
Console.Write("Tiêu chí thời gian (phút): ");
int time= int.Parse(Console.ReadLine());
int ngon1 = 0;
int tien1 = 0;
int time1 = 0;
if (File.Exists(fileName))
{
StreamReader sr = new StreamReader(fileName);
string line = string.Empty;
while (sr.ReadLine() != null)
{
line = sr.ReadLine();
if (line.Trim() != string.Empty)
{
ngon1 = int.Parse(line.Split('_')[1]);
tien1 = int.Parse(line.Split('_')[2]);
time1 = int.Parse(line.Split('_')[3]);
if (ngon1 > ngon && tien1 <= tien && time1 <= time)
{
Console.WriteLine(line);
}
}
}
Console.ReadKey();
}
else
{
Console.WriteLine("File does not exists");
}
}