Перевести с паскаля программу: Все отрицательные элементы переместить в начало массива - C (СИ)
Формулировка задачи:
Помогите перевести из паскаля в с
В одномерном массиве все отрицательные элементы перемещаются в начало массива а остальные в конец ,с сохранить порядок следования . Доп. массив заводить нельзя
var
a:array[1..100]of integer;
i,j,t,n:integer;
begin
randomize;
writeln('vvedite kol-vo elementov');
readln(n);
writeln('ishodnyj massiv');
for i:=1 to n do
begin
a[i]:=random(20)-10;
write(a[i],' ');
end;
writeln;
for i:=1 to n do
for j:=1 to n-1 do
if (a[j]>=0)and(a[j+1]<0)then
begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
writeln('novyj massiv');
for i:=1 to n do
write(a[i],' ');
readln;
end.Решение задачи: «Перевести с паскаля программу: Все отрицательные элементы переместить в начало массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int size=0;
int i,j;
int tmp;
printf("Enter size of an array\n");
scanf("%d",&size);
int arr[size];
printf("Generated array: \n");
for(i=0;i<size;i++)
{
arr[i]=rand() % 20 + (-10);
printf("%d",arr[i]);
}
printf("\n");
for(j=0;j<size;j++)
{
for(i=0;i<size-1;i++)
{
if((arr[i]>=0) && (arr[i+1]<0))
{
tmp = arr[i];
arr[i]=arr[i+1];
arr[i+1] = tmp;
}
}
}
printf("Modified array: \n");
for(i=0;i<size;i++)
{
printf("%d",arr[i]);
}
printf("\n");
return 0;
}
Объяснение кода листинга программы
- В начале программы объявляются переменные:
- size (размер массива),
- i, j (для циклов),
- tmp (для временного хранения значения).
- Пользователю предлагается ввести размер массива.
- Создается массив arr с помощью оператора new в стеке (размер определяется пользователем).
- С помощью цикла заполняется массив arr случайными отрицательными числами.
- Выводится сгенерированный массив.
- Внутренний цикл перебирает массив с начала до конца, проверяет условие: если текущий элемент положительный, а следующий отрицательный, то выполняется обмен элементов.
- Выводится измененный массив.
- Программа завершается.