Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на вектора с использованием процедур и функций
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Мультяшка
Мой преподаватель по основам программирования преподаёт плохо в надежде на то, что бедные студенты отвалят ему деньжат на сессии!!
Я не хочу так делать и прошу вас помочь!!

Решите мне, пожалуйста, задачу в Паскале. В обычном паскале.

Оформить в виде функции и процедуры.
Заполнить случайными числами из [0;9] вектор b 1*6. Вывести его на экран. Найти произведение элементов, меньших числа С.
Lapp
М
Мультяшка, будь добр, прочти Правила этого Форума и приведи название темы в соответствие с ними.



И покажи свои наработки, плз.
Мультяшка
У меня нет наработок.
sheka
вопрос по алгоритму:
Цитата
Заполнить вектор b 1*6.
что собой представляет жтот вектор?
Цитата
Вывести его на экран.
вывести направленый отрезок?
Цитата
Найти произведение элементов, меньших числа С.
элементом считается модуль вектора?
Lapp
Цитата(Мультяшка @ 5.06.2009 22:26) *
У меня нет наработок.
А в чем проблема? Ты начни хотя бы.

Смотри.
Вот вектор:
var
  b: array[1..6]of integer;


Вот заполнение случайными числами от 0 до 9
  for i:=1 to 6 do b[i]:=Random(10);


Вот вывод на экран:
  for i:=1 to 6 do WriteLn('b[',i,'] = ',b[i]);


Вот нахождение произведения:
  p:=1;
  for i:=1 to 6 do if b[i]<c then p:=p*b[i];


Угу?

Мультяшка
Цитата(sheka @ 5.06.2009 22:56) *

вопрос по алгоритму:
что собой представляет жтот вектор?
вывести направленый отрезок?
элементом считается модуль вектора?


1*6 - это 1 строка с 6-ю так скажем столбцами. Как мне объяснили.
Я не знаю, что нужно вывести. В первом посте всё, что он мне дал.

Добавлено через 1 мин.
Цитата(Lapp @ 5.06.2009 22:59) *

А в чем проблема? Ты начни хотя бы.

Смотри.
Вот вектор:
var
  b: array[1..6]of integer;


Вот заполнение случайными числами от 0 до 9
  for i:=1 to 6 do b[i]:=Random(10);


Вот вывод на экран:
  for i:=1 to 6 do WriteLn('b[',i,'] = ',b[i]);


Вот нахождение произведения:
  p:=1;
  for i:=1 to 6 do if b[i]<c then p:=p*b[i];


Угу?


Я вообще не знаю этой программы..
sheka
имеется ввиду, что есть 6 векторов и нам надо работать с их длинами?

Цитата
Я вообще не знаю этой программы..

это ты про паскаль?
если да, то давай за 20$ мы тебе решим эту задачу. 19$ LAPPу за уже предоставленое им решение, и мне 1$ за идею. smile.gif
Lapp
Цитата(Мультяшка @ 5.06.2009 23:01) *
Я вообще не знаю этой программы..
Какой программы?
Возьми книжку. Прочти хотя бы начало. Потом приходи..
Мультяшка
Цитата(sheka @ 5.06.2009 23:10) *

имеется ввиду, что есть 6 векторов и нам надо работать с их длинами?


Думаю, что нет. Это же первый курс, там проще..

Какие вы все мелочные. Чувак, читай первые 2 предложения в самом первом посте. Не нравится, не решайте. Людей много. Я попросила вас от безвыходности.
sheka
Цитата(Мультяшка @ 5.06.2009 22:13) *

Думаю, что нет. Это же первый курс, там проще..

это был вопрос Лаппу.

2'Мультяшка'
что может быть проще 6 одномерных массивов?


Добавлено через 6 мин.
Цитата(Мультяшка @ 5.06.2009 22:13) *

Я попросила вас от безвыходности.


var
  b: array[1..6]of integer;
  p,i,c: integer;
begin
  WriteLn('vvedi c=');
  readln(c);
  for i:=1 to 6 do b[i]:=Random(10);
  for i:=1 to 6 do WriteLn('b[',i,'] = ',b[i]);
  p:=1;
  for i:=1 to 6 do if b[i]<c then p:=p*b[i];
  WriteLn('p= ',p);
  readln;
end.

Мультяшка
Цитата(sheka @ 5.06.2009 23:16) *

это был вопрос Лаппу.

2'Мультяшка'
что может быть проще 6 одномерных массивов?
Добавлено через 6 мин.


var
  b: array[1..6]of integer;
  p,i,c: integer;
begin
  WriteLn('vvedi c=');
  readln(c);
  for i:=1 to 6 do b[i]:=Random(10);
  for i:=1 to 6 do WriteLn('b[',i,'] = ',b[i]);
  p:=1;
  for i:=1 to 6 do if b[i]<c then p:=p*b[i];
  WriteLn('p= ',p);
  readln;
end.



спасибо огромное, конечно, но мне нужно эту программу написать через процедуры и функции..
Lapp
Цитата(Мультяшка @ 5.06.2009 23:13) *
Думаю, что нет. Это же первый курс, там проще..
Я тоже так думаю.

Цитата(Мультяшка @ 5.06.2009 23:13) *
Какие вы все мелочные. Чувак, читай первые 2 предложения в самом первом посте. Не нравится, не решайте. Людей много. Я попросила вас от безвыходности.
Полагаю, sheka пошутил (да, sheka?).
Дело не в этом. Ты прости, но я не могу поверить, чтоб твой преп вот совсем ничего вам не дал.
Я дал тебе практически все, за исключением мелочей. Это был тест. Теперь я вижу, что дело не в преподавателе (или не совсем в нем). Я по-прежнему готов тебе помогать, если ты проявишь желание научиться хоть чему-то. Если нет - гудбай..
Мультяшка
Цитата(Lapp @ 5.06.2009 23:25) *

Я тоже так думаю.

Полагаю, sheka пошутил (да, sheka?).
Дело не в этом. Ты прости, но я не могу поверить, чтоб твой преп вот совсем ничего вам не дал.
Я дал тебе практически все, за исключением мелочей. Это был тест. Теперь я вижу, что дело не в преподавателе (или не совсем в нем). Я по-прежнему готов тебе помогать, если ты проявишь желание научиться хоть чему-то. Если нет - гудбай..


Конечно хочу! Нет, у меня есть лекции, есть материал, но этим нужно уметь пользоваться, а когда тупо списано с доски, смысла не имеет..
sheka
 var
  b: array[1..6]of integer;
  c:integer;

procedure vvodc;
var i:integer;
begin
  WriteLn('vvedi c=');
  readln(c);
end;

procedure vvod;
var i:integer;
begin
  for i:=1 to 6 do b[i]:=Random(10);
end;

procedure vivod;
var i:integer;
begin
  for i:=1 to 6 do WriteLn('b[',i,'] = ',b[i]);
end;

procedure mult;
var i,p:integer;
begin
  p:=1;
  for i:=1 to 6 do if b[i]<c then p:=p*b[i];
  WriteLn('p= ',p);
end;

begin
vvodc;
vvod;
vivod;
mult;
readln;
end.


теперь и мне тоже 20$ smile.gif
Мультяшка
спасибо огромное!!!
Но нужна ещё программа на функции..)
Krjuger
Ты знаеш я открою тебе секрет,почти в любом вузе на любой специальности просто дают задачу, пишут ее реализацию, и просят чуть чуть его изменить и все.Даже на таких кафедрах,как прикладная математика и информатика(больше углубленному изучению информатики я не знаю где учат).так что девушка немного непонятно,что вы делали весь семестр.
Цитата

а когда тупо списано с доски, смысла не имеет..

А тупо списыват и не надо,надо хотяб иметь представление о том что ты делаеш.А вообще,когда подходиш к задаче надо :
1)Осознать цель,суть задачи и привязать ее к определенному классу задач(сортировки,списки,деревья и тд).
2)Математически продумать(составить последовательность действий,которые будут давать необходимый тебе результат)
И когда ты ВСЕ это сделаеш,только тогда начинаеш писать программу.Каджому математическому действию соответствует какое то действие в паскале и ты просто свой алгоритм "обшиваеш" лексикой языка.

У тебя по твоим постам была проблема уже на первом пункте.В таком случае надо идти к преподу и долбить его и долбить,вплоть до того что как выводить на экран каким цветом какими букавками(мозги ему компостировать),потому что если ты поймеш так,а он хотел этак,то тебе придется доказывать свою правоту,а для этого надо быть более менее подкованным в данной сфере быть ,что(не в обиду сказано) у тебя покачто не проявляется.
Цитата

procedure vvodc;
var i:integer;
begin
WriteLn('vvedi c=');
readln©;
end;

Чет ты как то разошелся smile.gif это уже перебор..


Мультяшка,поясни,что именно надо?Какая пробрамма?Что надо?
Мультяшка
Цитата(Krjuger @ 6.06.2009 0:04) *


Мультяшка,поясни,что именно надо?Какая пробрамма?Что надо?


нужно написать 2 программы в паскале. Одна на процедуры, другая на функции.
Задача сама написана.
Krjuger

function mult(var b:array of integer) :integer;
var i,p:integer;
begin
  p:=1;
  for i:=1 to 6 do if b[i]<c then p:=p*b[i];
  mult:=p;
end;
begin
vvodc;
vvod;
vivod;
x:=mult(b);
writeln(x);
readln;
end.


Ну еще в самом начале обьяви,что X это integer.а остальное в функции переделывать-бред полнейший.
sheka
Цитата(Krjuger @ 5.06.2009 23:59) *


x:=mult(b);
writeln(x);


Ну еще в самом начале обьяви,что X это integer.

зачем х ?

writeln(mult(b));

Krjuger
Я думаю человку,задающему такие вопросы,твоя запись добавит лишних,конешно же ты прав,но теперь обьясняй ей каким образом мы выводим на экран значение нашей функции.И кстати обьясни заодно почему мы процедуру просто вызываем,а для функции работаем с ее значением.
sheka
человек,задающий такие вопросы, не обратит внимания на эту запись..
Мультяшка
Цитата(sheka @ 6.06.2009 1:27) *

человек,задающий такие вопросы, не обратит внимания на эту запись..


не согласна. я хочу сдать задачу, хотя бы чуть-чуть разобравшись в этих двух темах.
Krjuger
А при чем тут темы?Плюс про какие темы ты говориш?что такое процедуры и функции?Ну так это нади идти книжки читать,потому что на таких примерах ты лиш сделаеш частное и весьма примитивное представление о них. основное различие.....,процедура выполняет лиш действие над переменными,у тебя входят в процедуру переменные,в теле процедуры их там "курочит" и выходят другие переменные,а результатом функции явзяется вполне конкретное значение(примечательно что оно только 1!!!!,в отличии от процедуры,где можно выводить изменненые массивы и тд)Принципи это их главное различие.
насчет моей и его записи,то они абсолютно эдентичны,просто я присваиваю переменной х значение функции(число в данном случае) и выводу переменную,а его вариант печатает сразу число,являющееся результатом функции.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.