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

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с задачами на фри Паскале (http://www.tehnari.ru/f41/t63715/)

Ольга111 06.02.2012 23:52

Помогите с задачами на фри Паскале
 
Пожалуйста,помогите решить задачу на фри паскале,завтра нужно по ней отчитываться!!!
"Из вещественного вектора a(a1,a2,..,a3n) получить вектор b(b1,b2,..bn),очередная компонента которого равна среднему арифметическому очередной тройки компонента этого вектора!!!!!!!
Пожаааалуууййстаааааааа*((((((

Vladimir_S 07.02.2012 10:58

Цитата:

Сообщение от Ольга111 (Сообщение 670012)
Пожалуйста,помогите решить задачу на фри паскале,завтра нужно по ней отчитываться!!!
"Из вещественного вектора a(a1,a2,..,a3n) получить вектор b(b1,b2,..bn),очередная компонента которого равна среднему арифметическому очередной тройки компонента этого вектора!!!!!!!
Пожаааалуууййстаааааааа*((((((

Если я правильно понял условие задачи (а сформулировано, надо сказать, изрядно бестолково), то так:
Код:

CONST
 N=10;
VAR
 A,B:Array[1..N] of Real;
 i:Byte;
BEGIN
 Randomize;
 For i:=1 to N do
  Begin
  A[i]:=Random*100;
  Write(A[i]:8:3);
  End;
 Writeln;
 Writeln;
 B[1]:=A[1];
 B[N]:=A[N];
 Write(B[1]:8:3);
 For i:=2 to N-1 do
  begin
  B[i]:=(A[i-1]+A[i]+A[i+1])/3;
  Write(B[i]:8:3);
  end;
 Write(B[N]:8:3);
 Readln;
END.


Ольга111 08.02.2012 17:15

Вопросик по задачке
 
Program laba7;
const n=7;
var a:array[1..3*n] of real;
b:array[1..n] of real;
i,j:integer;
begin
for i:=1 to 3*n do
write ('a[',i,']=');
readln (a[i]);
end;
begin
for i:=1 to n do

Владимир,большое спасибо за решение.Только мы решаем немного иначе,посмотрите пожалуйста,исходя из моего условия,что можно сделать даальше??я запуталась окончательно,и вообще ход правильный?

Vladimir_S 08.02.2012 17:29

Цитата:

Сообщение от Ольга111 (Сообщение 671271)
Владимир,большое спасибо за решение.Только мы решаем немного иначе,посмотрите пожалуйста,исходя из моего условия,что можно сделать даальше??я запуталась окончательно,и вообще ход правильный?

Ага, понятно - я несколько не так воспринял условие. Вечером поправлю: сейчас поеду с работы домой. Черт, на "3n" не обратил внимание. Потерпите пару часов.
P.S. И зачем было новую тему открывать? Мы же Вашу же задачку обсуждаем. Это нельзя к чужим темам цепляться, а свою продолжать - пожалуйста! :)

Ольга111 08.02.2012 17:41

Цитата:

Сообщение от Vladimir_S (Сообщение 671288)
Ага, понятно - я несколько не так воспринял условие. Вечером поправлю: сейчас поеду с работы домой. Черт, на "3n" не обратил внимание. Потерпите пару часов.
P.S. И зачем было новую тему открывать? Мы же Вашу же задачку обсуждаем. Это нельзя к чужим темам цепляться, а свою продолжать - пожалуйста! :)

хорошо,в следующий раз так и сделаю,спасибо,подожду))

Vladimir_S 08.02.2012 19:46

Вот, получите:
Код:

const
 n=7;
var
 a:array[1..3*n] of real;
 b:array[1..n] of real;
 i:integer;
begin
 for i:=1 to 3*n do
  begin
  write ('a[',i:2,']= ');
  readln (a[i]);
  end;
 writeln;
 for i:=1 to 3*n do
  write(a[i]:8:3);
 writeln;
 writeln;
 for i:=1 to n do
  b[i]:=(a[1+(i-1)*3]+a[2+(i-1)*3]+a[3+(i-1)*3])/3;
 for i:=1 to n do
  write(b[i]:8:3);
 readln
end.


Ольга111 08.02.2012 23:30

Спасибо вам большое Владимир,всё теперь разобралась=)Всё работает=))Я думаю если индексы оставить в виде :a[j+1]+a[j+2]......т.е. без i-1....получится тоже самое,мы же берём одну строчку 1,2,3,вторую потом к j прибавляем 3,что бы вторая вышла 4,5,6.,и т. д.?Вообщем j:=j+3=)))
прям спасли!!=))

Ольга111 09.02.2012 00:19

Цитата:

Сообщение от Vladimir_S (Сообщение 671428)
Вот, получите:
Код:

const
 n=7;
var
 a:array[1..3*n] of real;
 b:array[1..n] of real;
 i:integer;
begin
 for i:=1 to 3*n do
  begin
  write ('a[',i:2,']= ');
  readln (a[i]);
  end;
 writeln;
 for i:=1 to 3*n do
  write(a[i]:8:3);
 writeln;
 writeln;
 for i:=1 to n do
  b[i]:=(a[1+(i-1)*3]+a[2+(i-1)*3]+a[3+(i-1)*3])/3;
 for i:=1 to n do
  write(b[i]:8:3);
 readln
end.


Владимир, решила попробовать похожую задачу здесь нашла где то,вот что получилось,но у меня не выводит ответ ,выходят нули. Условие:дан целочисленный вектор a(а1,а2,...,an) построить вектор b(b1,b2,...,bn)приняв в качестве первых его компонент все отрицательные компоненты вектора a(с сохранением порядка их следования)в качестве остальных положительные компоненты вектора a,также с сохранением порядка их следования.
program lab_7;
uses crt;
const n=5;
var a:array[1..n] of integer;
b:array[1..n] of integer;
i,j:integer;
begin
for i:=1 to n do
begin
write ('a[',i,']=');
readln (a[i]);
end;
clrscr;
j:=1;
for i:=1 to n do
begin
if a[i]<0 then begin
a[i]:=b[j];
j:=j+1;
end;
end;
for i:=1 to n do
begin
if a[i]>=0 then begin
a[i]:=b[j];
j:=j+1;
end;

end;
for i:=1 to n do
writeln (b[i]);
readln;
end.

Vladimir_S 09.02.2012 09:51

Цитата:

Сообщение от Ольга111 (Сообщение 671711)
не выводит ответ ,выходят нули.

... что вполне естественно.
Потому что аж в двух местах Вы пишете
Цитата:

a[i]:=b[j];
- и что мы имеем? Вы сперва вводите значения элементов массива А, а затем им же присваиваете значения элементов массива В, в котором по умолчанию стоят нули! Вот нули и получаете. Короче говоря, в двух местах надо вместо
a[i]:=b[j];
записать
b[j]:=a[i];
На всякий случай: в операторе присваивания ":=" слева стоит то, чему присваивается, а справа то, что присваивается. Например
q:=5; - правильно, а
5:=q; - неправильно.

Ольга111 14.02.2012 23:33

Здравствуйте,помогите пож.Даны 100 целых чисел ,распечатать их в обратном порядке по 6 чисел в строке))


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

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