Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 19:03   #1
Cnoob
 
Регистрация: 09.10.2009
Сообщений: 9
Вопрос Помощь в С++. Опять массивы.

Помогите пожалуйста решить задачку.
Для начала можно и без распараллерования.

"Сгенерировать массив из 1000 случайных целых чисел, значения которых лежат в диапазоне от -1000 до 1000.
Определить максимальное и минимальное числа среди чисел массива, которые без остатка делятся на 3. Найти три числа в массиве, наиболее близких к заданному числу M, но не превышающих его.
Для решения поставленной задачи на VC++ 2008 реализовать последовательную программу и ее параллельный аналог с использованием технологии. Сравнить результаты в обоих случаях."

Cnoob вне форума Ответить с цитированием
Старый 26.10.2009, 20:16   #2
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

в чем проблема?
массив[1000]
цикл for, заполняешь с помощью rand()
делаешь 2 переменные, макс=0, мин=1000

опять цикл, сравниваешь каждый элемент с макс и мин, попутно проверяя делится ли значение на 3 без остатка (...%3==0), если больше макс вписать в макс, если меньше мин вписать в мин
с М тоже самое что с макс числом, если меньше М сохранить значение где-то, нет так дальше крутить цикл
m0nax вне форума Ответить с цитированием
Старый 26.10.2009, 22:16   #3
Cnoob
 
Регистрация: 09.10.2009
Сообщений: 9
По умолчанию

вот вариант мне сделали, но я ничерта не понимаю. точки какие то...

Код:
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <ctime>

using std::cin;
using std::cout;
using std::sort;
using std::endl;
using std::vector;

#define N 1000
#define D 1000

struct nd{
     int n, d;
};

bool cmp1(const nd& left_, const nd& right_){
     return left_.d < right_.d;
}

bool cmp2(const nd& left_, const nd& right_){
     return left_.n < right_.n;
}

bool rmv(const nd& elem)
{
     return (elem.n % 3) != 0;
}

int main()
{
     int m;
     cin >> m;
     

     srand(time(0));
     vector<nd> a(N);
     for (int i=0; i<N; i++){
          a[i].n = rand() % (2*D) - D;
          a[i].d = abs(a[i].n - m);
     }

     sort(a.begin(), a.end(), cmp1);

     int count = 0;
     for(int i=0; i<3; i++){
          if(a[i].n <= m) { 
               cout << a[i].n << " "; 
               if(count++ == 3) break;
          }
     }
     
     cout << endl;

     vector<nd>::iterator last = remove_if(a.begin(), a.end(), rmv);
     vector<nd> b;
     b.resize(last - a.begin());
     copy(a.begin(), last, b.begin());
     sort(b.begin(), b.end(), cmp2);
     
     if(!b.empty()) {
          cout << b[0].n << " ";
          cout << b[b.size() - 1].n << endl;
     }

     return 0;
}
можно попроще как нить?
Замечание модератора: Используйте тег [CODE]

Последний раз редактировалось Rembo; 27.10.2009 в 16:00.
Cnoob вне форума Ответить с цитированием
Старый 27.10.2009, 20:14   #4
Cnoob
 
Регистрация: 09.10.2009
Сообщений: 9
По умолчанию

??? есть ещё версии?
Cnoob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опять нужна помощь. Serror Общие вопросы C/C++ 6 05.10.2009 23:21
Одномерные массивы. Нужна помощь. rus_rock_no_dead Общие вопросы C/C++ 9 20.01.2009 18:58
И опять мэйлы.. Опять... Pusher PHP 6 28.06.2008 03:08
одномерные массивы. Новичку в помощь tatti Помощь студентам 3 10.04.2008 12:29