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

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

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

 
 Ответить  Открыть новую тему 
> Пожалуста, помогите решить!, Сложные типы данных. Одномерные массивы.
Artemka89
сообщение 23.12.2007 16:12
Сообщение #1





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

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


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

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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 23.12.2007 16:18
Сообщение #2


Профи
****

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

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


В чем именно затруднение? Вывести массив или с заменой?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Artemka89
сообщение 23.12.2007 16:26
Сообщение #3





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

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


Цитата(Client @ 23.12.2007 16:18) *

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



по большей части с заменной, но на самом деле я в Паскале, как слепой котёнок... а завтра зачёт... если не трудно можете от начала до конца написать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Fest
сообщение 23.12.2007 17:53
Сообщение #4


Новичок
*

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

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


Цитата(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.

А над вторым подумай сам))) Там не сложно))))

Сообщение отредактировано: Fest - 23.12.2007 17:53
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Artemka89
сообщение 23.12.2007 18:39
Сообщение #5





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

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


Спаааасибо, но меня по большей части как раз и интересовал второй пункт.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 23.12.2007 18:39
Сообщение #6


Человек
*****

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

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


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, внимательно протестируй в ТП, будут вопросы пиши...

Сообщение отредактировано: compiler - 24.12.2007 17:23


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Fest
сообщение 23.12.2007 18:41
Сообщение #7


Новичок
*

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

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


Цитата(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.

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


Ты молодец, не спорю! Все правильно, но врятли это поймет человек, который толком не знает, как вывести массив... Для него это слишком сложно будет)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Artemka89
сообщение 23.12.2007 19:22
Сообщение #8





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

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


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

Сообщение отредактировано: Artemka89 - 23.12.2007 19:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Fest
сообщение 23.12.2007 19:42
Сообщение #9


Новичок
*

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

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


Цитата(Artemka89 @ 23.12.2007 19:22) *

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


Посмотри какой-нить учебник) И попробуй изменить или убрать эти циферки, увидешь, что они делают)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 24.12.2007 17:00
Сообщение #10


Человек
*****

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

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


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

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

Сообщение отредактировано: compiler - 24.12.2007 17:20


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Fest
сообщение 25.12.2007 4:14
Сообщение #11


Новичок
*

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

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


Насчет: "Посмотри какой-нить учебник)" - признаю, мой косяк :\ А насчет: "я знаю кто ты" - это мой знакомый, я с ним учусь в одном университете smile.gif Так что ничего криминального. И такая фамельярность не страшна smile.gif

Сообщение отредактировано: Fest - 25.12.2007 4:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 25.12.2007 17:58
Сообщение #12


Человек
*****

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

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


Цитата(Fest @ 25.12.2007 3:14) *
А насчет: "я знаю кто ты" - это мой знакомый, я с ним учусь в одном университете smile.gif Так что ничего криминального. И такая фамельярность не страшна smile.gif
а пункт №8 правил ты не читал?
ну ладно.. меня больше интерисует сможет ли Artemka89 разобраться с динамическими массивами..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 2:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"