Массивы что то нехватает

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

topor
Сообщения: 5
Зарегистрирован: 25 мар 2006, 12:39

:( ваще как я понел это задание то что если ввести массив из 10 элементов например, задать число Z:=1, и M1[9]:=-5 а M1[10]:=1 то должно M1[9]:=-5 переставить на место M1[6]:=-5 а найденое M1[9]:=-5 заменить индексом т.е. M1[9]:=9 но что то неполучаеться ниче посмотрите это задание:

Найти последний отрицательный элемент массива, величина которого не превышает заданной величины, заменить его индексом и поставить на место шестого элемента а вот сама работа где ошибка ?
program yxyx;
var Z,i,a,n:integer;
var M1:array[1..20] of integer;
begin
{переменные
M1 – сам массив
Z заданная величина
I Индекс
N кол-во элементов в массиве
A от оператора варианта}


writeln ('выберите способ заполнения, 1-вруч., 2-автом.');
readln (A);
WRITELN ('ВВЕДИТЕ КОЛИЧЕСТВО ЭЛЕМЕНТОВ МАССИВА,не больше 20');
readln(n);
case a of
1:begin
for i:=1 to n do
begin
write ('M[',i,']=');
readln (M1);
end;
end;
2:begin
randomize;
for i:=1 to n do
M1:=random(20);
end;
else begin writeln ('введено не правильное число');
readln;
exit;
end;
end;
writeln('введите Z'); {Заданая величина}
readln(Z);
for i:=n downto 1 do {Найти последний}
begin
if (M1<0) and (M1<Z) {Отрицательный элемент массива}
then
begin
M1[6]:=M1; {Поставить найденый на место 6}
M1:=i; {Заменить его индексом}
end;
end;
for i:=1 to n do write (M1:4); {Вот это строчка что значит так и немогу понять объясните по руссики}
readln;
end.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

for i:=1 to n do write (M1:4); {Вот это строчка что значит так и немогу понять объясните по руссики}
ну это цикл для i (Индекс) равное одному по возрастанию к n (кол-во элементов в массиве) делать do записать в массив...

Лень разбирать...
[syntax=Delphi] [/syntax]
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

а что за ошибка-то? вроде нормально всё?
for i:=1 to n do write (M1:4);

это просто вывод получившегося массива
Изображение
topor
Сообщения: 5
Зарегистрирован: 25 мар 2006, 12:39

вот я заполняю в ручную тогда ваще чуш полная выходит как бы он ниче неделает а выводит индексы вот
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

пример того что вводищь и то что на выходе.
ошибки в упор не вижу :(
Изображение
topor
Сообщения: 5
Зарегистрирован: 25 мар 2006, 12:39

несмог картинку запостить посмотри на ссылке
http://b-taktik.narod.ru/im/test.jpg

вот посмотри как ошибка выходит:
смысл задания M1[6] приставить значение последнего отрицательного а найденому последнему отрицательному его индекс
например:
M1[1]=1 M1[2]=3 M1[3]=3 M1[4]=5 M1[5]=9 M1[6]=1 M1[7]=-5 ну и условие Z=1
то наместо M1[6]=-5 {значение 7 элемента} а M1[7]=7 {своему индексу} остальные элементы вообще не трогаем вот так должно.
А вот что получаеться креплю картинку с 3 тэстами.
а вот текст проги последния версия:

Код: Выделить всё

program massiva;
Uses CRT;

var  
  M1:array [1..20] of integer;
  i,n,tip,Z:integer;
begin
  clrscr;
  TextBackground(black);
  TextColor(green);

  write('Введите количество элементов массива от 1 до 20          =');
  readln(n);
  write('заполнить 1 вручную , 2 автоматически                    ='); 
  readln(tip);

  case tip of
    1:begin
      for i:=1 to n do
      begin
        write('m1[',i,']=');
        readln (m1[i]);
      end; 
    end;
    2:begin
      randomize;
      for i:=1 to n do
        M1[i]:=random(20)-15;
    end;
    else  
      TextColor(red); 
      write('!!!неверный ввод!!!');
      readln;
      exit;
    end;
  write('Введите число Z                                          ='); readln (Z);
  for i:=n downto 1 do
  begin
    if (M1[i]<0) and (M1[i]<=Z) then
    begin
      M1[6]:=M1[i];
      M1[i]:=i;
    end;
  end;
  writeln ('----------------------------------------Массив----------------------------------');
  for i:=1 to n do  write (M1[i]:4);
  readln;
end.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

расставил тебе тэг [ code ]
ошибке быть негде...
а вот не нравится мне конструкция else в case...
Изображение
topor
Сообщения: 5
Зарегистрирован: 25 мар 2006, 12:39

:?: ПОДСКАЖИ пожалуста Ссылку или еще что-то где можно найти что нибудь где очень подробно расписаны массивы
вот мне скоко много надо 1 все а из 2 хотя бы 1\4 или общий вид я нашел кучи учебников но там такого даже не встретить как по стандарту все делают прям незнаю


1
  • Как осуществляется поиск первого или последнего элемента массива, удовлетворяющего заданному условию
    Как осуществляется поиск элемента массива, входящего в заданные пре-делы
    Как осуществляется проверка элементов массива на кратность заданному числу
    Как осуществляется перестановка местами двух элементов в одномерном массиве
    Как осуществляется сдвиг нескольких элементов в одномерном массиве
    Как осуществляется перестановка элемента в начало или конец одномер-ного массива

2
  • Найти первый положительный элемент массива, изменить у него знак и поставить в начало массива.
    Найти первый нулевой элемент массива, заменить его квадратом ин-декса и поставить в конец массива.
    Найти первый отрицательный элемент массива, заменить его обратной величиной и поставить в конец массива.
    Найти последний положительный элемент массива, изменить у него знак и поставить на место второго элемента.
    Найти последний нулевой элемент массива, заменить его индексом и поставить на место пятого элемента.
    Найти последний отрицательный элемент массива, умножить его на за-данное число и поставить в начало массива.
    Найти первый положительный элемент массива, величина которого не превышает заданной величины, возвести его в квадрат и поставить в конец мас-сива.
    Найти первый положительный элемент массива, величина которого больше заданной величины, заменить его обратной величиной и поставить на место второго элемента.
    Найти последний положительный элемент массива, величина которого не превышает заданной величины, сменить у него знак и поставить в начало массива.
    Найти последний положительный элемент массива, величина которого больше заданной величины, сменить у него знак и поставить на место третьего элемента массива.
    Найти последний отрицательный элемент массива, величина которого не превышает заданной величины, заменить его индексом и поставить на место шестого элемента.
    Найти последний отрицательный элемент массива, величина которого больше заданной величины, возвести его в квадрат, и поставить на место пред-последнего элемента.
    Найти последний отрицательный элемент массива, модуль которого не превышает заданной величины, заменить его модулем и поставить в конец мас-сива.
    Найти последний отрицательный элемент массива, модуль которого больше заданной величины, умножить его на первый элемент массива и поста-вить на место четвертого элемента.
    Найти первый положительный элемент массива, величина которого на-ходится в заданных пределах, разделить его на заданное число и поставить на место третьего элемента.
    Найти последний положительный элемент массива, величина которого находится в заданных пределах, умножить его на последний элемент и поста-вить в начало массива.
    Найти первый отрицательный элемент массива, величина которого на-ходится в заданных пределах, заменить его индексом и поставить на место пя-того элемента.
    Найти последний отрицательный элемент массива, величина которого находится в заданных пределах, возвести его в квадрат и поставить в начало массива.
    Найти первый отрицательный элемент массива, модуль которого нахо-дится в заданных пределах, заменить его обратной величиной и поставить на место шестого элемента.
    Найти последний отрицательный элемент массива, модуль которого находится в заданных пределах, заменить его модулем и поставить в конец массива.
    Найти минимальный элемент массива, сменить у него знак и поставить в конец массива.
    Найти максимальный элемент массива, заменить его обратной величи-ной и поставить в конец массива.
    Найти минимальный положительный элемент массива, возвести его в квадрат, и поставить на место второго элемента.
    Найти максимальный отрицательный элемент массива, заменить его индексом и поставить в начало массива.
    Найти первый элемент массива, кратный заданному числу, заменить его обратной величиной и поставить в конец массива.
    Найти первый положительный элемент массива, кратный заданному числу, заменить его квадратом и поставить на место предпоследнего элемента.
    Найти первый отрицательный элемент массива, кратный заданному числу, сменить у него знак и поставить в начало массива.
    Найти последний элемент массива, кратный заданному числу, заменить его индексом и поставить в конец массива.
    Найти последний положительный элемент массива, кратный заданному числу, заменить его обратной величиной и поставить на место второго элемен-та.
    Найти последний отрицательный элемент массива, кратный заданному числу, возвести его в квадрат, и поставить в начало массива
    .
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

Изображение
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

topor писал(а)::?: ПОДСКАЖИ пожалуста Ссылку или еще что-то где можно найти что нибудь где очень подробно расписаны массивы
вот мне скоко много надо 1 все а из 2 хотя бы 1\4 или общий вид я нашел кучи учебников но там такого даже не встретить как по стандарту все делают прям незнаю
я думаю, тут не ссылочка нужна, а голова программера, или хотя бы первый курс ВУЗ'a
Ответить