Задан массив. состоящий из целых положительных и отрицательных чисел. разбить его на два массива . в одном из которых только положительные . в другом - отрицательные . отсортировать их по убыванию. с++ c++
int main() { int a, b;// ввод переменных cin >> a >> b;// ввод на клавиатуре a = pow(a, 2);//возводим a в степень 2 printf("a=%d ", a);//выводим новые значения a if (b < 0) { printf("не возможно подсчитать "); //проверка (подкоренное выражение не отрицательно)
} else { b = pow(b, 0.5);//возводим b в степень 0.5(корень квадратный) printf("b=%d ", b);//выводим новые значения b } system("pause");//ставит программу на паузу return 0;// говорит системе что все закончилось успешно
// PascalABC.NET 3.3, сборка 1561 от 02.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(ReadInteger('n='),-99,99).ConvertAll(x->real(x/10)); a.Println; var imax:=a.Select(x->Abs(x)).ToArray.IndexMax; var ip:=a.FindIndex(x->x>0)+1; Writeln('Номер максимального по модулю элемента: ',imax+1); Writeln('Сумма элементов после первого положительного: ',a[ip:].Sum:0:1) end.
Пример n= 13 -5.9 2.8 -8.2 4.8 1.2 -7.3 6.7 4 -5.8 6.4 2.4 -9.3 -8.6 Номер максимального по модулю элемента: 12 Сумма элементов после первого положительного: -13.7
Объяснение:
#include<stdio.h>
#include<locale.h>
main()
{
setlocale(LC_ALL,"RUS");
int x[30],i,j,n,plg[30],otr[30],tr,tr1;
printf("Введите количество чисел");
scanf("%d",&n);
for(i=0;i<n;i++)
{
do
{
printf("Введите %d число",i+1);
scanf(" %d",&x[i]);
}
while(x[i]==0);
if(x[i]>0) plg[i]=x[i];else plg[i]=0;
if(x[i]<0) otr[i]=x[i];else otr[i]=0;
}
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
{
if(plg[j]<plg[j+1])
{
tr=plg[j];
plg[j]=plg[j+1];
plg[j+1]=tr;
}
if(otr[j]<otr[j+1])
{
tr1=otr[j];
otr[j]=otr[j+1];
otr[j+1]=tr1;
}
}
printf("Положительные =");
for(i=0;i<n;i++)
{
if(plg[i]!=0) printf("%d ",plg[i]);
}
printf("\nОтрицательные =");
for(i=0;i<n;i++)
{
if(otr[i]!=0) printf("%d ",otr[i]);
}
}
Программа написана на обычном СИ. Ноль вводить нельзя.