вот,собственно,текст задачи:
В книге содержится информация следующего характера:ФИО,год ррождения,месяц,число,телефон.
Составить программу,выводящую на экран:
1)сведения обо всех в виде таблицы;
2)список людей,у кого день рождения в одном месяце с указанием числа и возраста(выводить нужно по месяцам);
3)кол-во человек,фамилия которых начинается на интересующую вас букву;
Вот мое решения,но проблема в том,что оно выводит еще и тех,кто родился вообще в другой месяц.
program lab13pr1;
uses crt;
type
friends=record
fio:string;
month:string;
year,day:integer;
telefon:longint;
end;
var j,i,n,k,c,h,g:integer;book:array[1..100] of friends;
a:char;str:friends;
begin
clrscr;
write('Vvedite kol-vo druzei: ');readln(n);
for i:=1 to n do
begin
write('FIO:');readln(book[i].fio);
write('Month:');readln(book[i].month);
{write('Year:');readln(book[i].year);
write('Day:');readln(book[i].day);
write('Telefon:');readln(book[i].telefon);}
clrscr;
end;
writeln('FIO':10,'Month':10,'year':10,'day':10,'Telefon':10);
for i:=1 to n do
begin
writeln(book[i].fio:10,book[i].month:10,book[i].year:10,book[i].day:10,book[i].telefon:10);
end;
write('Vvedite Pervuju bukvu familii ');readln(a);
for i:=1 to n do
if a=copy(book[i].fio,1,1) then k:=k+1;
writeln('kol-vo 4elovek s "',a,'" ',k);
for i:=1 to n do
for j:=1 to n do
if book[j].month=book[i].month then
begin
c:=0;
for h:=1 to i-1 do
if book[h].month=book[i].month then c:=c+1;
if c=0 then writeln(book[j].fio:10,book[j].day:3,book[j].year:5);
readkey;
end.
23 июня 2008 в 16:02
т.е. если человек единственный рожденный в этом месяце то его выводить не надо? выводить те месяца в которых кол-во Д.Р>1 ?
15 июня 2008 в 2:02
Антон RichDad Кононов,я ж написал в условие:
"список людей,у кого день рождения в ОДНОМ сесяце…"
13 июня 2008 в 16:00
#5
а чо неправильно то? ты ж ввел три разных месяца вот и получается что "а выводит:" правильный вариант?
вот смотри твое условие:
"2)список людей,у кого день рождения в одном месяце с указанием числа и возраста(выводить нужно по месяцам);"
вот Александр limpalex Ренев и выводит "по месяцам" (по всем что есть в базе – типа группирует)
13 июня 2008 в 1:03
Странный у тебя цикл какой то, Саш..там точно исключаются варианты i=j?
13 июня 2008 в 1:01
Да вы,в общем-то,то же самое написали,что и я…
Мне нужно по условию вывести список людей,у кого день рождения в ОДНОМ месяце.У тех,у кого в другом месяце выводить не надо,а программа ваша выводит…
Например,ввожу по месяцам
-август
-май
-август
-май
-июнь
должен вывести:
-фио того,кто родился в августе
-фио того,кто родился в августе
-фио того,кто родился в мае
-фио того,кто родился в мае
А выводит:
-фио того,кто родился в августе
-фио того,кто родился в августе
-фио того,кто родился в мае
-фио того,кто родился в мае
-фио того,кто родился в июне…
13 июня 2008 в 0:05
я так и не понял че там у тебя делается.
вот так работает
program lab13pr1;
uses crt;
type
friends=record
fio:string;
month:string;
year,day:integer;
telefon:longint;
end;
var j,i,n,k,c,h,g:integer;book:array[1..100] of friends;
a:char;str:friends;s:string;
begin
clrscr;
write('Vvedite kol-vo druzei: ');readln(n);
for i:=1 to n do
begin
write('FIO:');readln(book[i].fio);
write('Month:');readln(book[i].month);
{write('Year:');readln(book[i].year);
write('Day:');readln(book[i].day);
write('Telefon:');readln(book[i].telefon);}
clrscr;
end;
writeln('FIO':10,'Month':10,'year':10,'day':10,'Telefon':10);
for i:=1 to n do
begin
writeln(book[i].fio:10,book[i].month:10,book[i].year:10,book[i].day:10,book[i].telefon:10);
end;
write('Vvedite Pervuju bukvu familii ');readln(a);
for i:=1 to n do
if a=copy(book[i].fio,1,1) then k:=k+1;
writeln('kol-vo 4elovek s "',a,'" ',k);
for i:=1 to n do
begin
s := book[i].month;
j := 1;
c := 0;
while j < i do
begin
if book[j].month = s then
c := c+1;
j := j + 1;
end;
if c = 0 then
begin
for j := 1 to n do
ifbook[j].month = sthen
writeln(book[i].fio:10,book[i].month:10,book[i].year:10,book[i].day:10,book[i].telefon:10);
end
end;
end.
13 июня 2008 в 0:00
Очепятка-исправил))
if book[h].month=book[i].month это условие у"убирает" все повторения…
не могу идти циклом по 12 месяцам – месяц у меня строковая переменная,тем более может вводиться как по русски,так и по аглицки…
12 июня 2008 в 23:04
комментарии писать в программе полезная вещь
вот это что такое?
if book[h].month=book[h].month c:=c+1;
по-моему это не скомпилится потому что нет then, тем более условие всегда верно так что не понимаю смысл этого if
вот это условие if book[j].month=book[i].month then тоже странное. оно в том числе пропустит тебе все i=j
вообще всю концовку с месяцами надо переписать.
иди циклом по 12 месяцам и для каждого месяца выводи всех кто в нем родился. это будет вложенный цикл