Форум программистов, компьютерный форум CyberForum.ru

Работа с вектором - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
sir_90115
8 / 8 / 1
Регистрация: 08.11.2009
Сообщений: 78
07.03.2011, 08:19     Работа с вектором #1
Задание:
Вектор В[1:20] сформировать из целых случайных чисел в диапазоне [-10 10].
а) найти минимальный элемент вектора.
б) найти произведение Р ненулевых элементов.
в) вставить за min элементом произведение ненулевых элементов.
г) найти номер максимального из 10 последних элементов вектора

Заранее благодарен...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2011, 08:19     Работа с вектором
Посмотрите здесь:

C++ Работа с вектором
C++ Не правильная работа memcpy с вектором - параметром функции
C++ задание с вектором
Странный глюк с вектором C++
Непонятная ошибка с вектором C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.03.2011, 10:35     Работа с вектором #2
Если именно по пунктам подряд. Т.е сначала в) - вставляем произведение, затем г) ищем уже в измененном векторе
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <vector>
#include <windows.h>
 
using namespace std;
 
int main()
{
    int minimal = 20, pos, multi=1, maximal=-20;
    vector<int> V;
    vector<int>::iterator it;
    for (int i = 0; i < 20; ++i){
        V.push_back(rand()%21-10);
        if(V.at(i)<minimal){
            minimal = V.at(i);
            pos = i;}
        if(V.at(i)!=0)
            multi *=V.at(i);
    }
 
    cout << "minimal: " <<  minimal << " at " << pos << endl;
    it = V.begin();
    V.insert(it + pos,multi);
 
    for (it = V.begin(); it < V.end(); ++it){
        cout << *it << " ";
        if(*it > maximal && (it - V.begin()) > 10){
            maximal = *it;
            pos = it - V.begin();
        }
    }
    cout << endl;
    cout << "maximal: "<< maximal << " at " << pos << endl;
 
    system("pause");
 
    return 0;
}
lemegeton
 Аватар для lemegeton
2908 / 1337 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
07.03.2011, 11:27     Работа с вектором #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
И еще извращение на тему.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <numeric>
 
int RandomGenerator() {
    return rand() % 21 - 10;
}
 
void Print(int value) { printf("%3d ", value); }
 
int MultiplyNonZero(int a, int b) {
  return ((b == 0) ? a : a*b);
}
 
int main(int argc, char *argv[]) {
  std::vector<int> array(20);
  srand(time(NULL));
  std::generate(array.begin(), array.end(), RandomGenerator);
  std::for_each(array.begin(), array.end(), Print);
  printf("\n");
 
  int multiplication = std::accumulate(array.begin(), array.end(), 1,
                                       MultiplyNonZero);
  std::vector<int>::iterator min = std::min_element(array.begin(),
                                                    array.end());
  if (min != array.end() - 1)
    array.insert(min + 1, multiplication);
  else
    array.push_back(multiplication);
 
  std::for_each(array.begin(), array.end(), Print);
  printf("\n");
  printf("Max of last ten: %d\n", *std::max_element(array.end() - 10,
                                                    array.end()));
  return 0;
}
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.03.2011, 11:37     Работа с вектором #4
lemegeton, у меня смутное предчувствие, что sir_90115 даже разбирать его не будет
А вот я посмотрю... Спасибо )

Upd: Круто, все как в примерах
Yandex
Объявления
07.03.2011, 11:37     Работа с вектором
Ответ Создать тему
Опции темы

Текущее время: 09:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru