<em>MS DOS QBasic 1.0</em>
DIM n AS INTEGER, m AS INTEGER
CLS
INPUT "n,m=", n, m
IF n < 3 THEN
PRINT "n<3"
SYSTEM
END IF
REDIM a(1 TO n, 1 TO m) AS INTEGER
RANDOMIZE TIMER
FOR i = 1 TO n
FOR j = 1 TO m
a(i, j) = INT(50 * RND)
PRINT USING "###"; a(i, j);
NEXT j
PRINT
NEXT i
PRINT
FOR i = 4 TO n
FOR j = 1 TO m
a(i - 1, j) = a(i, j)
NEXT j
NEXT i
FOR i = 1 TO n - 1
FOR j = 1 TO m
PRINT USING "###"; a(i, j);
NEXT j
PRINT
NEXT i
<u>Пример
</u>n,m=5,8
43 6 19 48 44 6 28 10
5 48 44 1 31 30 25 33
19 30 46 27 29 34 45 8
17 37 43 1 37 46 25 45
48 48 27 21 36 48 44 37
43 6 19 48 44 6 28 10
5 48 44 1 31 30 25 33
17 37 43 1 37 46 25 45
48 48 27 21 36 48 44 37
<u>Замечание</u>
Поскольку QBasic не поддерживает сохранение содержимого при изменении размеров динамического массива, для упрощения было решено не заниматься созданием вспомогательного массива, копирования в него всех строк, кроме последней, затем изменение размера исходного массива и обратное копирование в него. Просто считается, что n уменьшилось на 1.
(-53 ; 67)
Var X, Y, Z : Integer;
BeginY:= 1;RepeatX:= X-12;Z:= Z+16;Y:= Y+1;Until Y = 5;X:= X-3;Z:= Z+1;X:= X-2;Z:= Z+2;Writeln('X= ', X, ' | Z= ', Z);End.
1. Циклы нужны для сокращения количества строк кода, экономии памяти компьютера и нервов программиста в случае, когда необходимо повторять подобные действия много раз.
2. а) должны быть четко обозначены границы переменной, отвечающие за вход и выход из цикла б) необходимо определить, каким образом эта переменная будет изменяться по ходу цикла.
3. В цикле while условие ставится в начале, а в repeat в конце. То есть repeat 100% пройдет хотябы 1 раз, а while может и ни разу.
4. В заголовке ставится условие. Пока оно выдает true, цикл будет повторяться. На счёт предпочтительности сложнее. Я бы сказала, что практически всегда предпочтительнее while, тк за всю свою практику лично мне хорошо если раз 5 пришлось использовать repeat. В общем предпочтительнее всегда использовать while за исключением некоторых очень редких случаев, когда с его помощью невозможно решить поставленную задачу (т.е. необходимо хотябы одно повторение).
Хотя если сравнивать с циклом for, то for чаще всего используется при наращивании управляющей переменной численного типа. То есть while часто используется, когда управляющая переменная булева типа.
5. Описывается прямо в теле цикла.
6. Тут мне сложно ответить. Я так понимаю, у вас речь про Pascal, а я могу только в C++ и Java. В этом вопросе вроде есть различия.
Такое изображение займет
57 * 57 = 3249 бита
3249 / 8 = 406,125 байта
На с++
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n, i, j, k(0),s(0);
cout << "vvedite kol-vo elementv \n";
cin >> n;
int *a = new int[n];
cout << "zapolnite massiv \n";
for (i = 0; i < n; i++)
{
cout << "a[" << i << "]=";
cin >> a[i];
}
for (i = 0; i<n; i++) {
k = 0;
for (j = 0; j<n; j++)
if (a[i] == a[j]) k++;
if (k == 1)
s++;
}
cout << "otvet: " <<s << endl;
return 0;
}