singlepost

помогите решить задачку на Pascal << На главную или назад  

вот,собственно,текст задачи:
В книге содержится информация следующего характера:ФИО,год ррождения,месяц,число,телефон.
Составить программу,выводящую на экран:
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.

78 ответов в теме “помогите решить задачку на Pascal”

  1. 8
    Дима Календо ответил:

    т.е. если человек единственный рожденный в этом месяце то его выводить не надо? :) выводить те месяца в которых кол-во Д.Р>1 ? :)

  2. 7
    Александр Рулёв ответил:

    Антон RichDad Кононов,я ж написал в условие:
    "список людей,у кого день рождения в ОДНОМ сесяце…"

  3. 6
    Антон Кононов ответил:

    #5
    а чо неправильно то? ты ж ввел три разных месяца вот и получается что "а выводит:" правильный вариант?

    вот смотри твое условие:
    "2)список людей,у кого день рождения в одном месяце с указанием числа и возраста(выводить нужно по месяцам);"

    вот Александр limpalex Ренев и выводит "по месяцам" (по всем что есть в базе – типа группирует)

  4. 5
    Екатерина Финкельштейн ответил:

    Странный у тебя цикл какой то, Саш..там точно исключаются варианты i=j?

  5. 4
    Александр Рулёв ответил:

    Да вы,в общем-то,то же самое написали,что и я…
    Мне нужно по условию вывести список людей,у кого день рождения в ОДНОМ месяце.У тех,у кого в другом месяце выводить не надо,а программа ваша выводит…
    Например,ввожу по месяцам
    -август
    -май
    -август
    -май
    -июнь
    должен вывести:
    -фио того,кто родился в августе
    -фио того,кто родился в августе
    -фио того,кто родился в мае
    -фио того,кто родился в мае
    А выводит:
    -фио того,кто родился в августе
    -фио того,кто родился в августе
    -фио того,кто родился в мае
    -фио того,кто родился в мае
    -фио того,кто родился в июне…

  6. 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;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.

  7. 2
    Александр Рулёв ответил:

    Очепятка-исправил))
    if book[h].month=book[i].month это условие у"убирает" все повторения…
    не могу идти циклом по 12 месяцам – месяц у меня строковая переменная,тем более может вводиться как по русски,так и по аглицки…

  8. 1
    Александр Ренев ответил:

    комментарии писать в программе полезная вещь
    вот это что такое?
    if book[h].month=book[h].month c:=c+1;
    по-моему это не скомпилится потому что нет then, тем более условие всегда верно так что не понимаю смысл этого if
    вот это условие if book[j].month=book[i].month then тоже странное. оно в том числе пропустит тебе все i=j
    вообще всю концовку с месяцами надо переписать.
    иди циклом по 12 месяцам и для каждого месяца выводи всех кто в нем родился. это будет вложенный цикл

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.