Обращаюсь к величайшим умам всея Руси - программистам. Подсобите с задачей: Дан массив размера N. Осуществить сдвиг элементов массива вправо на одну позицию (при этом A1 перейдет в A2, A2 — в A3, …, AN−1 — в AN, a исходное значение последнего элемента будет потеряно). Первый элемент полученного массива положить равным 0.
Будет совсем круто, если напишите к своему коду словесный алгоритм решения для меня, затупка. Всем :)
var
a: array[1..l] of integer;
d: array[1..l] of real;
i, otr, k, m: integer;
begin
otr:=0; k:=0; m:=0;
//считаем массив а
for i:=1 to l do
begin
readln(a[i]);
//если ввели положительное число,увеличим перем. otr на 1
if a[i] < 0 then
inc(otr);
//если ввели отрицательное число,увеличим перем. k на 1
//и к переменной m прибавим элемент
if a[i] > 0 then
begin
inc(k);
inc(m, a[i]);
end;
end;
//заполним массив d
for i:=1 to l do
//если индекс четный, присвоим элементу otr
//иначе присвоим среднее арифметическое
if i mod 2 = 0 then
d[i] := otr
else
d[i] := m/k;
end.
#include<iostream>
#include<ctime>
#include<stdlib.h>
using namespace std;
int main() {
setlocale(LC_ALL, "russian");
const int ROWS = 500;//строки
const int COLS = 500;//колонки
int arr[ROWS][COLS];
/*заполнение массива*/
for (int i=0; i<ROWS; i++) {
for (int j=0; j<COLS; j++) {
arr [i][j] = rand() % 2;
}
}
/*вывод массива*/
for (int i=0; i<ROWS; i++) {
for (int j=0; j<COLS; j++) {
cout<<arr[i][j]<<"\t";
}
cout<<endl;
}
}
Объяснение:
setlocale(LC_ALL, "russian") не обязательно...
Можно лучший ответ , ОЧНЬ надо :