pascal试题不高兴的津津

谁能给出算法,不要程序,主要问一下怎么记录星期还有如果有两天一样怎么只打出一天
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且,上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入格式
输入包括七行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出格式
输出包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1,2,3,4,5,6,7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的—天。

随手把代码写下来了。算法直接就在注释里。

//存储结构:
var
t1,t2:integer;//读入的时间
max,day:integer;//最不高兴的上课总时长,与对应的日期(1到7)
i:integer;//用于循环

//程序主体:
begin
max:=0;
day:=0; //初始化:最大值=0,日期=0即没有不高兴
for i:=1 to 7 do //对于每一行数据
begin
readln(t1,t2);//每次读入t1,t2,即两个上课时间值;
if (t1+t2>8) and (t1+t2>max)//如果第i天不高兴且总时间超过之前出现过的最大值
then //则更新最大值与相应日期
begin
max:=t1+t2;
day:=i;
end;
end;
writeln(day);//输出day
end.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-27
program unhappy;
var a:array[1..7]of integer;
i,x,y,sum,point:integer;
yes:boolean;
begin
assign(input,'unhappy.in');reset(input); {输入文件名"unhappy.in"}
assign(output,'unhappy.out');rewrite(output); {输出文件名"unhappy.out"}
for i:=1 to 7 do
begin
readln(f1,x,y);
a[i]:=x+y
end; {读入数据,将每天要学习的时间存于数组a中}
yes:=true; {若有不高兴的天,即a中没有超过8的元素,布尔型变量yes置真值}
sum:=0;
for i:=1 to 7 do {求出最不高兴的天数,存于point中}
if (a[i]>8)then
begin
yes:=false;
if a[i]>sum then
begin sum:=a[i];point:=i;end;
end;
if yes then writeln(0)
else writeln(oint);
close(input);
close(output);
end.
相似回答