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

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

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

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

Проверьте, пожалуйста, программу. Паскаль

  • Автор темы Автор темы tane
  • Дата начала Дата начала

tane

Новые
Регистрация
12 Фев 2013
Сообщения
19
Реакции
1
Баллы
0
Проверьте, пожалуйста, программу. Паскаль

Задача:
сведения об автомобиле состоят из его марки, номера, цвета, фамилии владельца.Подсчитать количество автомобилей заданной марки.

type vedomost=record
marka:string;
nomer:integer;
color:string;
familia:string;
end;
var
danue:array[1..3] of vedomost;
i,m:integer;
k:string;

begin
for i:=1 to 3 do
with danue do
begin
writeln('Марка-'); readln(marka);
writeln('Номер-'); readln(nomer);
writeln('Цвет-');readln(color);
writeln('Фамилия-');readln(familia);
end;

writeln('Марка машины для подсчета');readln(k);
for i:=1 to 3 do
begin
with danue do
if marka=k then
begin
writeln(marka);
end;
end;
readln;
end.
 
Данные надо вводить или уже есть? И что за дебилизм с "for i:=1 to 3 do"??? Это в смысле, если ты вводишь, то не более трех машинок? А 100? А 101?
[mod2]Сударь, а без хамства и нарочито оскорбительно-пренебрежительного тона никак? Просто объяснить начинающему, подсказать, поправить, помочь? Или самоутверждаемся? Ну что же - получите замечание. В качестве первого предупреждения.

Модератор.[/mod2]
 
Данные надо вводить или уже есть?
"Имеющий глаза да увидит"... Если бы Вы дали себе труд внимательно посмотреть код, вместо того, чтобы демонстрировать, какой Вы крутой программист, то, вне всякого сомнения, узрели бы блок ввода данных и тогда отпала бы нужда в данном вопросе.
 
Проверьте пожалуйста программу, Паскаль
В целом правильно и грамотно, но несколько замечаний.
1. Несмотря на недопустимо-хамский тон, по сути Debianer прав в том смысле, что полное число машин лучше задать в виде константы, которую легко можно менять при желании.
2. Подсказки при вводе лучше давать без перевода строки и с пробелом в конце. Красивее.
3. В задании требуется подсчитать количество машин данной марки, а не выводить несколько раз название этой марки.
4. Если оператор (в частности, if..then) действует на ОДИН операнд, то операторные скобки begin..end ставить не обязательно. Можно, но не нужно.

Итого, с учетом сказанного:

Код:
const
 N=3;

type  
 vedomost=record
           marka:string;
           nomer:integer;
           color:string;
           familia:string;
          end;

var
  danue:array[1..N] of vedomost;
  i,m,Q:integer;
  k:string;

begin
 for i:=1 to N do
  with danue[i] do
   begin
    write('Марка - '); 
    readln(marka);
    write('Номер - '); 
    readln(nomer);
    write('Цвет - ');
    readln(color);
    write('Фамилия - ');
    readln(familia);
   end;
  
 writeln;
 write('Марка машины для подсчета - ');
 readln(k);

 Q:=0;
 for i:=1 to N do
  if danue[i].marka=k then Inc(Q);
 writeln(Q,' машин');
 readln;
end.
Извините, не тестировал. Вы уж сами.
 
За тон прошу прощения, погорячился
 
И еще один совет: не задавайте границы массива, лучше воспользуйтесь динамическим. Насколько я помню, в турбопаскале динамических массивов не было, вместо них использовали списки.
Погуглив, нарыл достаточно информации по этому. Просто при использовании динамического массива вы отвязываетесь от предельного размера данных, т.е. можно ввести и три машинки, и 133. Организовать данную работу можно через указатели и GetMem. Считаю, что так будет наиболее правильно, жизненно и соответствовать условиям задачи.
ЗЫ: да, код болучится более сложным
 
"Имеющий глаза да увидит"... Если бы Вы дали себе труд внимательно посмотреть код, вместо того, чтобы демонстрировать, какой Вы крутой программист, то, вне всякого сомнения, узрели бы блок ввода данных и тогда отпала бы нужда в данном вопросе.
Код я посмотрел. Вопрос про ввод данных возник не из кода, а из условия задачи - там неявно, вводятся ли данные, берутся они из файла, потока, базы данных... Отсюда и вопрос возник, нужен ли ввод или нет
 
Назад
Сверху