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

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

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

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

Помогите решить задачу Pascal

kickmaster

Новые
Регистрация
8 Окт 2012
Сообщения
21
Реакции
0
Баллы
0
Помогите решить задачу Pascal

Доброго времени суток, помогите пожалуйста решить задачу Free Pascal Lazarus.
Опишите, используя структуру записи, почтовую сортировку(город ,улица, дом, квартира, кому, ценность).Составьте программу, определяющую сколько посылок отправлено в город Владивосток
Код:
const N=10;
    var Pt:array[1..10] of record
     gor:string;
      yl:string;
      dom:integer;
      kv:integer;
      kom:string;
      cen:string;
      i:integer;
      end;
begin
  For i:=1 to n do
  readln(Pt[i].gor);
  readln(Pt[i].yl) ;
  readln(Pt[i].dom) ;
  readln(Pt[i].kv) ;
  readln(Pt[i].kom) ;
  readln(Pt[i].cen) ;

end.
Begin vlad:=0;
  for i:=1 to n do
  begin
    vlad:=vlad+Pt[i].gor);
    end.
    writeln vlad;
    readln;
 
Доброго времени суток, помогите пожалуйста решить задачу Free Pascal Lazarus.
К сожалению, пока не могу поздравить Вас с успехом: ошибок просто невероятное количество, практически в каждой строке.
1. Ну зачем Вы, задавая переменную цикла i, загоняете ее в тело записи в качестве поля? Что ей там делать?
2. Где описание переменной vlad?
3. Запомните раз и навсегда: в Паскале (и в СИ, кстати) оператор действует ТОЛЬКО НА ОДИН ОПЕРАНД!!! А если нужно, например, в тело цикла ввести несколько операндов, то такую группу надлежит взять в операторные скобки begin..end (в СИ - в фигурные скобки {}).
4. "Слепой" ввод полей записи страшно неудобен, поэтому лучше выводить на экран слова-подсказки.
5. Точка после end ставится один-единственный раз - в самом конце программы. Как только транслятор доходит до "end.", он считает, что программа завершена и на дальнейшее даже не смотрит. А Вы этих "end с точкой" понатыкали куда ни попадя.
6. Смысла написанного в качестве цикла поиска владивостокских адресов я даже не пытаюсь понять - просто какой-то невнятный набор символов.
7. Если Вы хотите вывести на экран значение переменной либо текстовое сообщение, то и переменная, и сообщение должны быть параметрами оператора writeln, а не просто написаны после него.

Вот Вам работающий код. Разбирайтесь:
Код:
const 
 N=10;
var
 Pt:array[1..N] of record
      gor:string;
      yl:string;
      dom:integer;
      kv:integer;
      kom:string;
      cen:string;
      end;
 i,vlad:integer;
Begin
  For i:=1 to n do
   begin
    Write('gorod: ');
    readln(Pt[i].gor);
    Write('ulitsa: ');
    readln(Pt[i].yl) ;
    Write('dom: ');
    readln(Pt[i].dom) ;
    Write('kvartira: ');
    readln(Pt[i].kv) ;
    Write('komu: ');
    readln(Pt[i].kom) ;
    Write('cennost: ');
    readln(Pt[i].cen) ;
    Writeln;
   end;
 vlad:=0;
 for i:=1 to n do
  if Pt[i].gor='Vladivostok' then vlad:=vlad+1;
 writeln(vlad);
 readln;
End.
Успехов!
 
Назад
Сверху