• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Записи

Oksana777

Новые
Регистрация
8 Май 2012
Сообщения
16
Реакции
0
Баллы
0
Записи

Создать массив из 10 записей, хранящих инфо об автовладельцах, фамилия, адрес, номер и марка авто. Посчитать количество автовладельцев, проживающих на заданной улице и имеющих авто заданной марки
 
Только что аналогичная задача была решена и разобрана здесь: http://www.tehnari.ru/f41/t72686/#post728813 . Адаптируйте к своей задаче самостоятельно.

И модераторское замечание. Вы что, сговорились все - пихать по несколько дублей топиков на форум? Дубликат из соседнего раздела удален, а Вам - первое (оно же последнее) предупреждение. В конце концов, перестану угрожать и начну всерьез банить за подобные выходки.
 
Uses crt;
Type
book=Record
fam: String;
adr: String;
nom: String;
mar: String;
end;
Var
x: Array[1..10] of book;
i,k: Integer;
ul,m: String;
BEGIN
Clrscr;
For i:=1 to 10 do
begin
Writeln('Введите фамилию: '); Readln(x.fam);
Writeln('Введите адрес: '); Readln(x.adr);
Writeln('Введите номер: '); Readln(x.nom);
Writeln('Введите марку: '); Readln(x.mar);
end;
Writeln('Критерии поиска');
Writeln('Введите улицу: '); Readln(ul);
Writeln('Введите марку: '); Readln(m);
For i:=1 to 10 do
If (x.adr=ul) and (x.mar=m) Then
Inc(k);
Writeln('Кол-во автовладельцев, проживающих на заданной улице и имеющих авто заданной марки: ',k);
Readln
END.
я знаю, что это можно записать так. Но как это записать посчёт этого количества в функции?
 
я знаю, что это можно записать так. Но как это записать посчёт этого количества в функции?
Так же, как это сделано в программе по ссылке, что я Вам дал: там ввод, вывод и отбор упихнуты в процедуры. Вот и действуйте "по образу и подобию".
И вот еще что. Поле записи "адрес" придется разделить и вводить отдельно название улицы и номер дома, раз уж требуется сделать отбор по улице.
Удачи!
 
Записи

Создать массив из 10 записей, хранящих информацию об автовладельцах.Упорядочить массив по адресам автовладельцев и Посчитать количество автовладельцев, проживающих на заданной улице и имеющих автомобиль заданной марки( помогите с последним пунктом, нужно записать в процедуре либо функции. Если что, ниже вся программа без этого пункта


Код Pascal

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils,
Windows;

const
n=10;
type
telem=record
surname:string;
model:string;
number:string;
address:string
end;
tmas=array [1..n] of telem;
var
man:tmas;
mn,choice,i:Integer;
exit_:char;
error_in: boolean;
//-----------------------------------------------------------------------------------------//
Function menu :integer; //Вывод меню на экран
begin
writeln;
writeln (' ','1.Упорядочить массив по адресам автовладельцев');
writeln (' ','2.Посчитать количество автовладельцев, проживающих на заданной улице и имеющих автомобиль заданной марки.');
Writeln (' ','3.Завершение работы.');
repeat
write ('Ваш выбор: ');
readln (choice);
error_in:=(choice<1) or (choice >3);
if error_in then writeln ('Ошибка ввода!')
until not error_in;
menu:=choice;
end;
//-----------------------------------------------------------------------------------------//
Procedure VvodDannuh(var a:tmas); //ввод данных
var i:integer;
begin
SetConsoleOutputCP(1251);
for i:=1 to n do
with a do
begin
Writeln('Введите фамилию:');
Readln(surname);
Writeln('Введите марку автомобиля:');
Readln(model);
Writeln('Введите номер:');
Readln(number);
Writeln('Введите адрес:');
Readln(address);
writeln;
end
end;
//-----------------------------------------------------------------------------------------//
Procedure VuvodDannuh(a:tmas); //вывод данных
var i:integer;
begin
SetConsoleOutputCP(1251);
writeln ('--------------------------------------------------------------------------');
writeln (' Фамилия | Марка автомобиля | Номер | Адрес ');
writeln ('--------------------------------------------------------------------------');
for i:=1 to n do
writeln(a.surname:15,' ',a.model:15,' ',a.number:5,' ',a.address:15);
end;
//-----------------------------------------------------------------------------------------//
Procedure Sortirovka; //упорядочение по адресам
var
x:telem;
i,j:integer;
begin
for i:=1 to n do
for j:=1 to n-i do
if Ord(man[j].address[1])>Ord(man[j+1].address[1]) then
begin
x:=man[j];
man[j]:=man[j+1];
man[j+1]:=x
end
end;

Begin
SetConsoleOutputCP(1251);
VvodDannuh(man);
writeln;
VuvodDannuh(man);
REPEAT
mn:=Menu;
case mn of
1:begin
Sortirovka;
VuvodDannuh(man)
end;
2: begin
Writeln('Количество автовладельцев, проживающих на заданной улице и имеющих автомобиль заданной марки');

end
end;
if mn<>3 then
begin
Writeln;
write (' ','Завершить работу? (Y/N)');
readln(exit_);
end;
UNTIL (exit_='y') or (exit_='Y') or (choice=3);
readln

End.

[mod2]Ну и зачем было новую тему создавать? Темы объединены.
Модератор[/mod2]
 
Назад
Сверху