Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.12.2008
Сообщений: 12

Массив-подскажите ошибку в программе

16.12.2008, 16:37. Показов 912. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, что не так в тексте программы!
Задача.
1. Заполнить массив «n» произвольными числами.
2. Переместить первые «к» элементов массива во временный массив.
3. Сдвинуть оставшиеся «n-k» элементов в начало массива.
4. Вернуть в конец, т. е. после передвинутых «n-k» элементов, из временного массива «k» элементов.
Для простоты я взяла: n=6, k=4, n-k=m=2
В программе я для себя сделала вспомогательные выводы на экран:
1. Исходный заполненный массив из 6 элементов.
2. Временный массив из 6 элементов (для наглядности – заполнила «0»).
3. Временный массив с перенесенными первыми 4-мя элементами.
4. Исходный массив после сдвига оставшихся 2-х последних элементов
5. Исходный массив, после возврата из временного массива первых 4-х элементов, поставленных после передвинутых 2-х.
Должно быть так:
1. 10 11 12 13 14 15
2. 0 0 0 0 0 0
3. 10 11 12 13 0 0
4. 14 15 х х х х ---А у меня: 14 «11» х х х х
5. 14 15 10 11 12 13 ---А у меня: 14 «11» 10 11 12 13
Т.е. у меня «14» переместилось куда надо, а «15» - НЕТ. «11» - как было так и осталось. Такое чувство, что оператор «for» второй раз не работает. Вот моя программа. Не могу понять, что не так!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
program mov_2v;                   {nazvanie PRGM}
var
     a:array[1..10] of integer; {opisanie massiva}
     b:array[1..10] of integer;
     n,i,j,k,m:integer;     {opisanie peremennih}
BEGIN           {nachalo PRGM}
writeln;            {perevod stroki}
randomize;          {opisanie generatora}
n:=6;               {chislo elementov v vfssive-«n»}
k:=4;               {pervie k=4 elementa massiva perenesti vo vremen massiv}
m:=2;               {m=n-k ostavshiesa 2 elementa massiva peredvinut v nachalo}
     for i:=1 to n do
          begin
               a[i]:=random(50);    {zapolnenie massiva}
               write(a[i]:4)            {1. vivod massiva-a}
          end;
{--------------------}
writeln;
     for i:=1 to n do
          begin
               b[i]:=0;
               write(b[i]:4)          {2. vremen massiv-b}
          end;
{-------------------------------------------------------------}
{ Perenos "k" elementov iz massiva"a" vo vremennii massiv "b" }
{-------------------------------------------------------------}
writeln;
j:=1;
     for i:=1 to k do
          begin
               b[j]:=a[i];
               inc(j);
          end;
{--------------------}
     for j:=1 to n do
          begin
               write(b[j]:4);         {3. k(4) chisel vo vremen massive}
          end;
{-----------------------------------------------------------------}
{           sdvig 2-x (m=n-k=2) elementov na "k pozisii vlevo"       }
{-----------------------------------------------------------------}
writeln;
        for i:=k+1 to k+m do
          begin
               a[i-k]:=a[i];
               inc(i);
            end;
{--------------------}
  for i:=1 to n do
          begin
               write(a[i]:4);         {4. sdvig m(2)chisla na k(4)shaga}
          end;
{----------------------------------------------------------------}
{vozvrat  iz vspomogatelnogo massiva «k» elementov }
{----------------------------------------------------------------}
writeln;
     for j:=1 to k do
          begin
               a[m+1]:=b[j];
               inc(m);
          end;
     for i:=1 to n do
          begin
               write(a[i]:4);         {5. rezultat-massiv}
          end;
{--------------------}
readln;     {vvod "BK" - prodolzenie raboti }
END.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2008, 16:37
Ответы с готовыми решениями:

Одномерный массив. Подскажите где я допустила ошибку.
Дан одномерный массив, состоящий из N вещественных элементов. Найти произведение элементов...

Алгоритм сортировки MergeSort. Массив не сортируется вообще. Подскажите пожалуйста ошибку
program simple; uses Arrays; function mergesort(massiv: array of longint): array of longint; var...

Задан массив. Составить алгоритм и программу, которая выводит исходный массив и массив, полученный в результате выполнен
Задан массив. Составить алгоритм и программу, которая выводит исходный массив и массив, полученный...

6
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.12.2008, 17:28
Непонятно зачем так много массивов и телодвижений, или это задание такое? Ведь можно переставить элементы массива из начала в конец, причем все в одном массиве, просто сдвигая массив несколько раз влево на одну позицию, а вытолкнутое из начала число ставить в конец.
0
0 / 0 / 0
Регистрация: 04.12.2008
Сообщений: 12
16.12.2008, 22:57  [ТС]
Именно задание такое. Переместить через вспомогательный массив. Я все сделала по пунктам, как требовалось в задании. Но с одним элементом никак не справиться. Вы мне уже один раз помогли. Посмотрите, пожалуйста, программу. Что и где я не учла.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
16.12.2008, 23:20
Вот я написал немного по своему, но с промежуточными выводами, должно быть ясно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
uses crt;
var a,b:array[1..100] of integer;
    n,k,i:integer;
begin
clrscr;
write('n=');readln(n);
writeln('Ishodnyj massiv:');
for i:=1 to n do
   begin
     a[i]:=i;
     write(a[i],' ');
   end;
writeln;
write('k=');readln(k);
writeln('Massiv K chisel:');
for i:=1 to k do
   begin
    b[i]:=a[i];
    write(b[i],' ');
   end;
writeln;
writeln('Ostatok massiva A:');
for i:=1 to n-k do
   begin
    a[i]:=a[i+k];
    write(a[i],' ');
  end;
writeln;
writeln('Rezultat:');
for i:=n-k+1 to n do
a[i]:=b[i+k-n];
for i:=1 to n do
write(a[i],' ');
readln
end.
0
0 / 0 / 0
Регистрация: 04.12.2008
Сообщений: 12
17.12.2008, 23:54  [ТС]
Да, всё понятно. Ваш вариант – последовательный, строгий, ничего лишнего… Всё работает, индексы вместо случайных чисел – очень наглядно. Но это Ваш вариант. А мне хотелось понять и найти ошибку в своём варианте. И самое сладкое, что я его добила. Ошибка - именно в том месте, где и предполагала. Лишний « inc(i) » (как я его раньше не замечала!!!) заканчивал работу оператора раньше, и второе число не перемещалось и не вставало куда надо. Убрала его и всё заработало.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
18.12.2008, 00:41
Поздравляю! Я ведь и писал не для того, что бы Вы списали, а чтобы на примере смогли найти ошибку у себя. Молодец, так и надо!
0
0 / 0 / 0
Регистрация: 04.12.2008
Сообщений: 12
18.12.2008, 11:08  [ТС]
Спасибо за оценку моей настойчивости. А списывать я, действительно, не люблю, потому что программирование мне нравится. Поэтому и просила не написать за меня, а подсказать ошибку. А самостоятельно написанная, а потом отлаженная даже маленькая задачка, лично у меня вызывает только положительные эмоции. Мне это интересно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2008, 11:08
Помогаю со студенческими работами здесь

Написала программу,а она не работает подскажите в чем ошибка
Из целочисленного массива Х удалить все числа, превышающие среднее арифметическое простых элементов...

Придумайте массив и исполните предложенный фрагмент программы.Как изменился массив после выполнения программы?
Придумайте массив и исполните предложенный фрагмент программы. Как изменился массив после...

из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все остальные символы записать в массив S
Привет всем.Помогиет пожалуйста решить задачку из заданного теста выбрать цифры и записать в...

Разделить массив на массив четных положительных и массив остальных
дана последовательность из 20 эл. надо её отсортировать на 2 массива. условия видны в задании...

Из заданного текста выбрать цифры и записать в массив N, а буквы- в массив B. Все остальные символы записать в массив S
подскажите как делать Из заданного текста выбрать цифры и записать в массив N, а буквы- в массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru