Помощь - Поиск - Пользователи - Календарь
Полная версия: Пожалуста, помогите решить!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Artemka89
Помогите решить задачку.

Вводится одномерный вещественный массив фиксированной длины, состоящий из N элементов ( N может быть любое).Требуется:
1)Вывести исходный массив в строку.
2)Заменить все положительные элементы массива на первый отрицательный элемент. Вывести изменённый массив в том же виде что и исходный, но со следующей строки.

Client
В чем именно затруднение? Вывести массив или с заменой?
Artemka89
Цитата(Client @ 23.12.2007 16:18) *

В чем именно затруднение? Вывести массив или с заменой?



по большей части с заменной, но на самом деле я в Паскале, как слепой котёнок... а завтра зачёт... если не трудно можете от начала до конца написать?
Fest
Цитата(Artemka89 @ 23.12.2007 16:26) *

по большей части с заменной, но на самом деле я в Паскале, как слепой котёнок... а завтра зачёт... если не трудно можете от начала до конца написать?

Ну, это первый пункт:
program mas;
uses crt;
Var
a : array[1..255] of real;
i : integer;
n : integer;
Begin
clrscr;
readkey;
Writeln('');
readln(n);
For i:=1 to n do begin
readln(a[i]);
write(' ',a[i]:3:2);
End;
For i:=1 to n do begin
write(' ',a[i]:3:2);
End;
Writeln;
Readkey;
End.

А над вторым подумай сам))) Там не сложно))))
Artemka89
Спаааасибо, но меня по большей части как раз и интересовал второй пункт.
compiler
Fest, а что будет если я ввиду n=1000? ведь по условию n - любое...
мой вариант решения
{$R-}
type
TType = Real;
PDynArray = ^TDynArray;
TDynArray = array[1 .. 1] of TType;
var
arr: PDynArray;
n, i, j: integer;
begin
write('n = '); readln(n);
GetMem(arr, n * SizeOf(TType)); //резервируем память
for i := 1 To n Do readln(arr^[i]); //читаем
for i := 1 To n Do write(' ' ,arr^[i]3.gif2); //пишем
writeln;

i:=0;
repeat inc(i); until not (arr^[i]>=0); //находим первый отрицательный элемент

for j := 1 To n Do if (arr^[j])>0 then (arr^[j]):=(arr^[i]); //делаем замену(ноль остается)

for i := 1 To n Do write(' ' ,arr^[i]3.gif2); //печатаем

FreeMem(arr, n * SizeOf(TType)); //освобаждаем память
end.

Artemka89, внимательно протестируй в ТП, будут вопросы пиши...
Fest
Цитата(compiler @ 23.12.2007 18:39) *

Fest, а что будет если я ввиду n=1000? ведь по условию n - любое...
мой вариант решения
Код
{$R-}
Type
        TType = Real;
        PDynArray = ^TDynArray;
        TDynArray = array[1 .. 1] of TType;
Var
        arr: PDynArray;
        n, i, j: integer;
begin
        write('n = '); readln(n);
        GetMem(arr, n * SizeOf(TType));    //резервируем память
        for i := 1 To n Do      readln(arr^[i]);    //читаем
        for i := 1 To n Do      write(' ' ,arr^[i]:3:2);    //пишем
        writeln;

        i:=0;
        repeat  inc(i); until not (arr^[i]>=0);    //находим первый отрицательный элемент

        for j := 1 To n Do      if (arr^[j])>0 then (arr^[j]):=(arr^[i]);    //делаем замену(ноль остается)

        for i := 1 To n Do      write(' ' ,arr^[i]:3:2);    //печатаем

        FreeMem(arr, n * SizeOf(TType));    //освобаждаем память
end.

внимательно протестируй в ТП, будут вопросы пиши...


Ты молодец, не спорю! Все правильно, но врятли это поймет человек, который толком не знает, как вывести массив... Для него это слишком сложно будет)
Artemka89
Спасибо огромное Вам!
Вопрос а зачем вводить в write(' ' ,arr^[ i ] : 3 : 2); символы 3:2 ??
и обязательно делать резервирование и освобождение памяти?
Fest
Цитата(Artemka89 @ 23.12.2007 19:22) *

Спасибо огромное Вам!
Вопрос а зачем вводить в write(' ' ,arr^[ i ] : 3 : 2); символы 3:2 ??
и обязательно делать резервирование и освобождение памяти?


Посмотри какой-нить учебник) И попробуй изменить или убрать эти циферки, увидешь, что они делают)
compiler
Artemka89
>>Спасибо огромное Вам!
Нам было не тяжело...
>>Вопрос а зачем вводить в write(' ' ,arr^[ i ] : 3 : 2); символы 3:2 ?
для форматирования вывода(необязательно)
>>и обязательно делать резервирование и освобождение памяти?
резирвирование -- обязательно(иначе где ты будешь хранить данные?). без освобождения, в принципе, можна обойтись, но тогда у теьбя будет утечка памяти (это не хорошо))
подробней читай:
Все о динамических структурах данных. хотябы с указателями разбирись) Динамические массивы и матрицы(обрати внимание на пример volvo, я писал решение по нему)
Массивы. Матрицы. Типичные задачи. (я думаю, не помешает)
будут вопросы -- задавай...

Fest
>>Все правильно, но врятли это поймет человек, который толком не знает, как вывести массив... Для него это слишком сложно будет)
Эту тему уже обсуждали(правда к общему мнению не пришли( ) . Но тут динамический массив оговорен условием(!)
А от твоих постов "Посмотри какой-нить учебник)" и другие типа "я знаю кто ты" люди умнее не станут..
Fest
Насчет: "Посмотри какой-нить учебник)" - признаю, мой косяк :\ А насчет: "я знаю кто ты" - это мой знакомый, я с ним учусь в одном университете smile.gif Так что ничего криминального. И такая фамельярность не страшна smile.gif
compiler
Цитата(Fest @ 25.12.2007 3:14) *
А насчет: "я знаю кто ты" - это мой знакомый, я с ним учусь в одном университете smile.gif Так что ничего криминального. И такая фамельярность не страшна smile.gif
а пункт №8 правил ты не читал?
ну ладно.. меня больше интерисует сможет ли Artemka89 разобраться с динамическими массивами..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.