Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Одномерный массив


Автор: ДобренькийПапаша 13.4.2006, 18:10
Есть фиксированный одномерный массив. Нужно его набить рандомными числами (double).
1)Найти сумму двух наибольших и двух наименьших элементов массива.
2)Найти среднее квадратичное трёх наименьших элементов массива.


Код

#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>

void main()
{
    const int n=10;
    int d[n]={1,3,-5,1,-2,1,-1,3,8,4};

    int i,imax,imin,imax1,imin1,counter=0;
    for(i=imax=0; i<n; i++)
    {
        if(d[i]>d[imax]) imax=d[i];
        
    }
    
    for(i=imax1=0; i<n; i++)
    {
    
        if(d[i]>d[imax1] && d[i]<imax) imax1=d[i];
    }

    cout<<imax<<endl<<imax1<<endl<<endl<<endl;

    for(i=imin=0; i<n; i++)
    {
    
        if(d[i]<d[imin]) imin=d[i];
    }
    
    

    
    for(i=imin1=0; i<n; i++)
    {
    
        if(d[i]<d[imin1] && d[i]>imin) imin1=d[i]; 
    }
    cout<<imin<<endl<<imin1<<endl;
}


Этот код должен искать два наибольших и два наименьших. Второе наименьшее ищет неверно. Кстати покажите как сделать рандомный массив типа double.

Автор: nikitao 13.4.2006, 20:12
Вот программа с нуля(правда не без STL)
Код

#include <time.h>
#include <algorithm>
#include <vector>
#include <cmath>
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
    vector <double> arr;
    int k;
    cout<<"Введите кол-во элементв\n";
    cin>>k;
    srand(time(NULL));
    for (int i=0;i<k;i++)
        arr.push_back((double)rand()/(double)rand());
    sort(arr.begin(),arr.end());
    cout<<"Сумма 2 минимальных "<<arr[0]+arr[1]<<endl;
    cout<<"Сумма 2 максимальных "<<arr[k-1]+arr[k-2]<<endl;
    cout<<"Среднее квадратическое "<<sqrt(pow(arr[0],2)+pow(arr[1],2)+pow(arr[2],2));
    getch();
}

smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)