Одномарные Массивы На С++

  • Автор темы Guest
  • Дата начала
G

Guest

#1
Помогите пожалуйста решить задачу!!!
В одномерном массиве,состоящем из n вещественных элементов,вычислить:
1) максимальный по модулю элемент массива;
2) сумму элементов массива, расположенных между первым и вторым положительными элементами.
Преобразовать массив таким образом, чтобы элементы,равные нулю, распологались после всех остальных.
 

lazybiz

Well-known member
03.11.2010
1 339
0
#2
Опять же. Что ты подразумеваешь под словом "помощь" ?
 
X

xparen

#3
Танцуй и пляши, от +, не откажусь
C++:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;


int main()
{
int n, max, first=0, second=0, sum=0; // n - размер массива, max - максимальное значение по модулю
cout<<"Vvedite n";
cin>>n;
int *mas = new int [n];
cout<<"Vvedite massiv";
for(int i=0; i<n; i++)
cin>>mas[i];
// 1-ое задание
max=abs(mas[0]); // назначим любой, допустим 1-ый элемент массива, как наибольший по модую, abs - модуль числа
for(int i=0; i<n; i++)
if(abs(mas[i])>max)
max=abs(mas[i]);
// 2-ое задание
for(int i=0; i<n; i++) // нахождение 1-го положительного
if(mas[i]>0){
first=i;
break;
}
for(int i=first+1; i<n; i++) // нахождение 2-го положительного
if(mas[i]>0){
second=i;
break;
}
sum=0; // сумма
if(first && second){ // проверка, если были найдены положительные числа
for(int i=(first+1); i<second; i++)	
sum=sum+mas[i];
}
// 3-е задание, (сделал по кривому, было поздно, лень думать) : тупо не выводит нули, предварительно считает их кол-во в массиве, и выводит num-раз в конце
int num=0;
for(int i=0; i<n; i++)
if(mas[i]==0)
num++;
cout<<"Sort Massiv"<<endl;
for(int i=0; i<n; i++)
if(mas[i]!=0)
cout<<mas[i]<<" ";
for(int i=0; i<num; i++)
cout<<"0 ";

cout<<"\nMax chislo po moduly "<<max<<endl;
cout<<"Summa "<<sum<<endl;
getch(); // задержка вывода на экран
return 0;
}