Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   За лето всё забыл. Помогите в решении 2х несложных задач. (http://www.tehnari.ru/f41/t39863/)

Викто_р 12.09.2010 14:38

За лето всё забыл. Помогите в решении 2х несложных задач.
 
1) Задать массив из 10 элементов с помощью счётчика случайных чисел(random), и поменять знак всем не чётным элементам массива на противоположный. Вывести исходный и конечный. (В две строки)

2) Задать массив из 10 элементов с помощью счётчика случайных чисел(random). Все элементы массива которые больше 55 заменить на max.
Вывести исходный и конечный. (В две строки)

Голова кругом...

Vladimir_S 12.09.2010 19:32

Во-первых, что голова крУгом - это видно: Вы даже язык не указали, а во-вторых - приводИте голову в порядок: лето кончилось. И здесь как нельзя кстати будет САМОСТОЯТЕЛЬНОЕ решение этих даже не детсадовских - ясельных задачек.
P.S. В САМОМ КРАЙНЕМ случае - выкладывайте свои наработки, поможем, поправим.

Викто_р 12.09.2010 20:10

Язык Pascal. Ну если для вас это ясельные задачки то я вам очень сильно завидую...
Надеялся на помощь. Сейчас попробую напишу что-нибудь.

Hirurg 12.09.2010 20:34

ух....вспомнить молодость....уже лет 7 не видел паскаля

1. ну...заполняешь массив и сразу проверяешь на четность (после рандомного заполнения - ну если надо вывести оба - то меняешь в новом массиве уже)

а потом выводишь оба массива

2. Не понял что значит на макс? на слово? или максимальный элемент
точно так же

Викто_р 12.09.2010 21:30

Ну вот как заполнить массив и на чётность проверить я знаю.

(после рандомного заполнения - ну если надо вывести оба - то меняешь в новом массиве уже)

А вот с этим косяк.

Vladimir_S 12.09.2010 21:43

Ну ладно, Виктор, ну нарисую я Вам прогу - а толку? Вы же ее тупо скопипастите и сдадите. Честное слово, душа не лежит к такой "помощи". Ну пожалуйста:
Код:

VAR
 A,B:ARRAY[1..10] of INTEGER;
 i:INTEGER;
BEGIN
 RANDOMIZE;
 For i:=1 to 10 do
  begin
  A[i]:=Random(100);
  if (A[i]>0) and ((A[i] mod 2)=1) then
  B[i]:=-A[i] else
  B[i]:=A[i];
  end;
 For i:=1 to 10 do Write(A[i]:4);
 WriteLn;
 For i:=1 to 10 do Write(B[i]:4);
 WriteLn;
 ReadLn;
END.


Викто_р 12.09.2010 22:56

Владимир спасибо вам. В коде я понял всё кроме этого -
For i:=1 to 10 do Write(A[i]:4);
WriteLn;
For i:=1 to 10 do Write(B[i]:4);

Зачем ":4" ?

Stubbs 12.09.2010 23:11

Что бы не слитно вывелись значения.

AlexZir 13.09.2010 06:48

Викто__р

Ради бэгэ, загрузите среду Pascal, нажмите F1 и найдите в списке команду Write. Прочитайте всё, что о ней написано - это вам поможет гораздо больше, чем все эпизодические ответы.

Викто_р 17.09.2010 00:19

Хочу обратиться с помощью ещё разок)
Не могли бы вы помочь с решением ещё одной простой для вас задачи?
Уже час бьюсь не могу понять.
Если можно пожалуйста сразу код. Если напишите то я буду благодарен!
а то и с подсказками я думаю не справлюсь)
Вот скоро к репетитору, и тогда возьмусь за голову)
==============================
Найти сумму чисел, которые не превышают число 5.
Суммирование проводить до тех пор, пока не введется число 0.
==============================
Вот я не понимаю это обычный массив или двух мерный?
как я понял числа по-любому нужно вводить с клавиатуры не ран домом.
Не больше 5, можно вводить и отрицательный числа. (значит real)
Я вот не понимаю как можно вводить числа они будут складываться, да?
а потом неожиданно ввести ноль, программа завершится и выдаст ответ))

AlexZir 17.09.2010 09:04

Массив в задании не озвучен, потому решение примерно такое:
Код:

var InExpr, Sum: Real;
begin
Sum:=0;
repeat
WriteLn('Input expression');
ReadLn(InExpr);
If InExpr<=5 then Sum:=Sum+InExpr;
until InExpr=0;
WriteLn('Sum=',Sum);
ReadLn;
end.

Проверьте у себя и отпишитесь.

Викто_р 17.09.2010 09:24

Окей спасибо сейчас проверю)))

Викто_р 17.09.2010 09:27

Ошибка: процедура INC с параметрами указанных типа не найдена!

Вот в этой строчке
If InExpr<=5 then inc(Sum, InExpr)(!)

Викто_р 17.09.2010 09:33

Я вместо Inc написал Write и всё заработало, но вот не ссумирует когда ввожу!

AlexZir 17.09.2010 09:38

напишите вместо inc(Sum, InExpr) обычный оператор суммирования Sum:=Sum+InExpr.

Викто_р 17.09.2010 09:41

О да точно я его только сейчас то IF вводил не получалось))
Спасибо вы меня очень выручили!

Vladimir_S 17.09.2010 09:48

А зачем тут вообще массив? Если речь идет о суммировании вводимых чисел, не превышающих 5, то:
Код:

VAR
 A,SUM:REAL;
BEGIN
 Sum:=0;
 Repeat
  Write('Enter the next number ');
  ReadLn(A);
  If A<=5 then
  Sum:=Sum+A;
 Until A=0;
 WriteLn('Sum= ',Sum);
 ReadLn;
END.


Vladimir_S 17.09.2010 09:50

Ага, опоздал. Но программы удивительно схожи почему-то :D:D:D.

AlexZir 17.09.2010 09:52

Ага, сам удивляюсь :))


Часовой пояс GMT +4, время: 14:57.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.