IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Задача про билеты (Турбо паскаль), определить число проданных билетов.
сообщение
Сообщение #21


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Цитата
Дело в том что нужна матрица которая как бы покажет номера рядов и номера столбцов и в ней наглядно должно быть видно точное кол-во билетов на 12 ряд

Т.е. надо чтоб каждый раз одно и тоже число проданных билетов было и матрицу надо вывести на экран? Всю или только 12 ряд?

Добавлено через 1 мин.
Или нужно просто вывести номера свободных кресел и уже занятых?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


Ну сказали что должна быть матрица, из рядов и столбцов и чтоб все было в ней видно и понятно, что где продано и свободно и т.д. Ну вобщем подробно должно быть все unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


Код

var zal: array[1..25,1..36] of integer;
Radi : array [1..36] of integer;
k : integer;

procedure Buy_ticket;
var i,j,x,y : integer;
begin
  for i:= 36 downto 1 do begin
    if i>9 then
      write(i,': ')
    else
      write(i,' : ');
    for j:= 1 to 25 do
      write(zal[j,i],'|');
    writeln;
  end;
  Writeln('Vvedite rad, v kotorom Vi hotite sidet(ili 0, chtobi zakrit kassu):');
  Read(y);
  if y=0 then begin
    Writeln('Kassa zakrita:');
    Writeln('Vvedite nomer rada, kolichestvo zanatih mest kotorogo nuzno poschitat:');
    Read(k);
  end else begin
    Writeln('Vvedite mesto, na kotorom hotite sidet:');
    Read(x);
    If zal[x,y]=0 Then begin
      zal[x,y]:=1;
      inc(Radi[y]);
      Writeln('Pozdravlajem, Vi kupili bilet!');
    end else
      Writeln('K sozaleniju eto mesto uze zanato!');
  end;
end;


var i,j,count : integer;
begin
  for i:= 1 to 36 do begin
     Radi[i]:=0;
     for j:=1 to 25 do
        zal[j,i]:=0;
  end;
  k:=0;
  while k=0 do
    buy_ticket;
  write(radi[k]);
  readln;
  readln;
end.

Если я правильно все понял, то вот.


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


arhimag
Спасибо огромное, хотя я не доконца уверен что это именно и есть решение задачи, так как билет всегда один..
Извините, а можно прокомментировать как можно подробнее что где как и зачем в этом коде, так как хотелось бы самому во всем разобраться и понять unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


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

Ну тогда сделай так:
Program zadacha;
var m: array[1..25,1..36] of integer;
k,i,j: integer;
begin
k:=0;
randomize;
for i:= 1 to 25 do
begin
write('ряд ',i,' '); {сдесь выводим подряд}
for j:=1 to 36 do
begin
m[i,j]:=random(2);
write('',m[i,j],' '); {и тут}
end;
writeln; {а тут переходим на новую строчку}
end;
for j:=1 to 36 do
k := k + m[12, j];
writeln('В 12 ряду ',k,' проданных билетов');
end.


Добавлено через 11 мин.
arhimag, задумка конечно неплохая, но прога доработки требует smile.gif

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


Айрочка
Вот как то по красивее smile.gif если не сложно укажи пожалуйста какие мы функции используем, только если это не сложно и не займет много времени.

P.S. Почему я репу поднять не могу? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


Код
var zal: array[1..25,1..36] of integer;{Наш массив, где мы храним кинотеатральный зал}
Radi : array [1..36] of integer;{Массив в котором будем хранить сколько билетов купленно на этом ряду}
k : integer;{Номер, ряда количество купленнов билетов надо вывести}

procedure Buy_ticket;{ Процедура покупки билета}
var i,j,x,y : integer; {Две переменные цикла, и переменные означающие координаты купленного билета}
begin
  for i:= 36 downto 1 do begin {Начало вывода зала. Сначала будем рассматривать последний ряд, потом предпоследний ..., а потом первый}
    if i>9 then { Это чисто для красоты, чтобы зал был ровным, т.к. у нас есть и двузначные номера ряда и однозначные, то после однозначных надо поставить лишний пробел, а все однозначные - это меньшие 10, а все двузначные - большие 9}
      write(i,': '){Выводим номер ряда и двоеточие с пробелом после него, до двоеточия пробела нет, т.к. эти числа двузначяные}
    else
      write(i,' : ');{Выводим номер ряда и пробел и двоеточие и пробел после него, пробел есть так как числа однозначные}
    for j:= 1 to 25 do {Пробегаем по всему ряду с первого места до последнего}
      write(zal[j,i],'|');{И выводим, куплено ли это место или нет(1 - если купленно и 0 - если нет) ну и конечно, для красоты разделитель}
    writeln;{Переводим курсор на следующую строчку}
  end;
  Writeln('Vvedite rad, v kotorom Vi hotite sidet(ili 0, chtobi zakrit kassu):');{Выводим сообщение с инструкциями}
  Read(y);{Считываем номер ряда, в котором желает сидеть клиент}
  if y=0 then begin {Если нам надоест вводить данные, то мы закрываем кассу, что бы закончить покупку билетов, а закрываем мы кассу, вводя в номер ряда 0}
{Если закрыли, то}
    Writeln('Kassa zakrita:');{Выводим сообщение с инструкциями}
    Writeln('Vvedite nomer rada, kolichestvo zanatih mest kotorogo nuzno poschitat:');{Выводим сообщение с инструкциями}
    Read(k);{Считываем номер ряда, что бы вывести количество проданых на нем билетов}
  end else begin {А если нет, то}
    Writeln('Vvedite mesto, na kotorom hotite sidet:');{Выводим сообщение с инструкциями}
    Read(x);{Считываем номер места в ряду, на котором хочет сдеть клиент}
    If zal[x,y]=0 Then begin {Если это место свободно, то}
      zal[x,y]:=1; {Оно становится занятым}
      inc(Radi[y]); {И мы увеличиваем количество занятых мест на этом ряду на единицу}
      Writeln('Pozdravlajem, Vi kupili bilet!');{Выводим сообщение с поздравлением}
    end else{А если это место занято, то}
      Writeln('K sozaleniju eto mesto uze zanato!');{выводим сообщение об этом}
  end;
end;


var i,j : integer;{переменные цикла}
begin {Начало Главной Процедуры, ну программы тоесть}
  for i:= 1 to 36 do begin          {Пробегаем по все рядам с первого до последнего}
     Radi[i]:=0;                    {Выставляем количество занятых мест на этом ряду равным 0}
     for j:=1 to 25 do              {Пробегаем по всем местам с первого до последнего}
        zal[j,i]:=0;                {И устанавливаем, что это место свободно}
  end;
  k:=0;                             {Выставляем переменную K равной нулю, для того что бы отследить, когда она изменится}
  while k=0 do                      {Пока т.к. 0 ряда не существует, то когда пользователь закроет кассу и захочит посмотреть результат по ряду, то переменная К не будет равна 0, 100% }
    buy_ticket;                     {Ну а раз касса не закрыта, то мы можем продавать билеты, что мы  и делаем, вызывая ранее написанную процедуру}
  write(radi[k]);                   {Выводим количество занятых мест в ряду К, просто выведя значения элемента массива, соответсвующего этому ряду}
  readln;                           {Ждем нажатия Enter}
  readln;                           {Ждем нажатия Enter}
end.


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #28


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


arhimag
Ого, спасибо огромное, буду разбираться.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Цитата
P.S. Почему я репу поднять не могу?

blum.gif blum.gif blum.gif 25 постов!


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #30


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Цитата
Вот как то по красивее если не сложно укажи пожалуйста какие мы функции используем, только если это не сложно и не займет много времени.

Воть, если еще нужно:
Program zadacha;
uses crt;
var m: array[1..25,1..36] of integer; {естественно массив и переменные, с ними ты уже наверно разобрался}
k,i,j: integer;
begin
k:=0; {обнуляем количество проданных}
randomize; {включаем генератор случайных чисел}
for i:= 1 to 25 do {это цикл со счетчиком, здесь он проходит по рядам}
begin
write('ряд ',i,' '); {оператор write выводит все в одну строку}
for j:=1 to 36 do
begin
m[i,j]:=random(2); {функция random генерирует целые числа в пределах 0<=x<диапазон,}
{ а 2-йка тут - это и есть диапазон, начиная с нее числа не берутся}
write('',m[i,j],' '); {опять вывод в строчку}
end;
writeln; {оператор writeln каждый результат будет выводить на новой строчке}
end;
for j:=1 to 36 do {опять цикл со счетчиком, только здесь идем по креслам}
k := k + m[12, j]; {суммируем значения и получаем количество проданных}
writeln('В 12 ряду ',k,' проданных билетов'); {выносим его на всеобщее обозрение)))}
end.


p.s. прости за задержку, не было возможности выйти в инет(((

Сообщение отредактировано: Айра -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #31


Гость






Цитата
{ Это чисто для красоты, чтобы зал был ровным, т.к. у нас есть и двузначные номера ряда и однозначные, то после однозначных надо поставить лишний пробел, а все однозначные - это меньшие 10, а все двузначные - большие 9}
Специально чтобы избежать подобного кодирования, кстати, в Паскале придумали форматный вывод:

write(i:2, ':');

и программе все равно, один или 2 символа в представлении i - оно все равно займет 2 места...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #32


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


Цитата
Воть, если еще нужно:

Конечно нужно smile.gif спасибо большое!

Цитата
25 постов!

Понятно blum.gif

Цитата
Специально чтобы избежать подобного кодирования, кстати, в Паскале придумали форматный вывод:

write(i:2, ':');


и программе все равно, один или 2 символа в представлении i - оно все равно займет 2 места...

Интересная информация.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #33


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


Айрочка все супер все объяснил здал и еще модифицировал ;) если хочешь кину код глянуть smile.gif

У меня к тебе еще просьбочка будет с этой задачей (ниже) это не мне просто попросили на вашем форуме разместить, если тебе не сложно реши пожалуйста (или может кто еще решить сможет? unsure.gif )

Дан файл товар, который содержит сведения об экспортируемых товарах с указанным наименованием товара страна импорта товара и объемом постоянной партии. Составить список стран в которые экспортируются данные товары и указать общий объем его экспорта.
Вот такая задача, нужно до завтра человеку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #34


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Другую задачу надо сделать отдельной темой, а то правила нарушаем.

Добавлено через 3 мин.
Цитата
все супер все объяснил здал и еще модифицировал ;) если хочешь кину код глянуть

Можешь выложить здесь или отправить в личку)))

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #35


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


 Program zadacha;
uses crt;
var m: array[1..25,1..36] of integer;
k,i,j: integer;
begin
k:=0; {obnulyaem kol-vo prodannih}
randomize;
write(' ');
for i:= 1 to 36 do
begin
if i<10 then write (i,' ') else write(i);
end;
writeln;
for i:= 1 to 25 do {cikl so schtchikom prohodit po ryadam}
begin
if i <10 then
write(i ,' ')
else write(i,' '); {operator write vivodit vse v odnu stroku}
for j:=1 to 36 do
begin
m[i,j]:=random(2); {funkciya random generirue3t celie chisla v predelah 0<=x<diapazon,}
{ a 2-yka eto diapazon, nachinaya s nee chisla ne berutsya}
write('',m[i,j],' ');
end;
writeln;
end;
for j:=1 to 36 do {cikl so schetchikom po kreslam}
k := k + m[12, j]; {summiruem znachenie i poluchaem kol-vo prodannih}
writeln('v 12 ryadu ',k,' prodannih biletov');
readln;
end.


rolleyes.gif rolleyes.gif rolleyes.gif

Добавлено через 50 сек.
Воть - Список стран (Турбо паскаль)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #36


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Молодец! smile.gif Но только лучше было бы воспользоваться форматным выводом, как объяснил volvo. Это правильнее и проще. Попробуй так сделать)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 7:46
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name