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

Массивы - C++

Восстановить пароль Регистрация
 
ewenso
 Аватар для ewenso
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 25
17.11.2011, 20:38     Массивы #1
Всем привет!

Помогите пожалуcта сделать програмку(и) на C++.

1) найти сумму положительных элементов массива

2) найти произведение элементов массива расположенных между максимальным и минимальным элементами

3)упорядочить элементы массива убыванию

Большое спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 20:38     Массивы
Посмотрите здесь:

Массивы C++
C++ Массивы
Массивы C++
C++ Массивы
C++ массивы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
17.11.2011, 20:40     Массивы #2
Используем поиск по сайту:
Произведение элементов массива, расположенных между максимальным и минимальным элементами массива
ewenso
 Аватар для ewenso
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 25
17.11.2011, 21:01  [ТС]     Массивы #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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <ctime> 
#include <cmath>
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{    
         setlocale(LC_ALL,"Russian");
         int size,db=1,count_min,count_max,min,max;
     int i,j,temp,sum=0;
         srand((unsigned)time(NULL));
         int *arr;
         cout<<"Введите розмер массива: ";
         cin>>size;
         arr = new int[size];
         cout<<"Массив: ";
         for(i=0; i<size; i++)
         {
                 arr[i]=rand()%9;
                 cout<<arr[i]<<"  ";
                 if(arr[i]>0)
                 {
                         sum+=arr[i];
                 }
         }
         max = abs(arr[0]);
         min = abs(arr[0]);
     for(i=0; i<size; i++)
         {
                 if (abs(arr[i])>max)
                 {
                         max = abs(arr[i]);
                         count_max=i;
                 }
                 if (abs(arr[i])<min)
                 {
             min = abs(arr[i]);
                         count_min=i;
                 }
        }
         cout<<endl;
         cout<<"Маkсимум "<<count_max<<" елемент"<<endl;
         cout<<"Минимум "<<count_min<<" елемент"<<endl;
         cout<<"Произведение: ";
         (count_max>count_min)? i=count_min+1 : i=count_max+1;
         (count_max>count_min)? j=count_max : j=count_min;
         for(i; i<j; i++)
         {
                 db*=arr[i];
         }
         cout<<db<<endl;
         cout<<"Новый массив: ";
         for(i=0; i<size; i++)
         {
                 for(j=i; j<size; j++)
                 {
           if(abs(arr[i])>abs(arr[j]))
                   {
                           temp=arr[i];
                       arr[i]=arr[j];
                           arr[j]=temp;
                   }
                 }
         }
         for(i=0; i<size; i++)
         {
                 cout<<arr[i]<<" ";
         }
         cout<<endl;
         cout<<"Сумма положытельных елементов - "<<sum<<endl;
         delete [] arr;
         system("pause");
   return 0;
}
Разве это то, что надо?Зачем там новый массив какой то выдает и т.д ... А то я в этом не бум-бум.
Shaykemelov
9 / 9 / 2
Регистрация: 14.11.2011
Сообщений: 27
17.11.2011, 21:04     Массивы #4
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
#include<iostream>
using namespace std;
int main()
{
    int n,q=1,s=0,max=-9999,min=9999,x,y,z,i,j,k;
    int a[100000];
    cin>>n;
    for(i=1;i<=n;i++)
{
    cin>>a[i];
    if(a[i]>0)    s=s+a[i];
    if(a[i]>max){x=i;max=a[i];}
    if(a[i]<min){y=i;min=a[i];}  
}
    if (x>y){z=x;x=y;y=z;}
    for(i=x+1;i<y;i++)
{
        q=q*a[i];
}
    cout<<s<<" "<<q;
    cout<<endl;
    for(i=1;i<=n;i++)
    for(j=i+1;j<=n;j++)
{
    if(a[i]>a[j]){k=a[i];a[i]=a[j];a[j]=k;}
}                                   
    for(i=1;i<=n;i++)
{
    cout<<a[i]<<" ";
}
    system("pause");
    return 0;
}
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
17.11.2011, 21:08     Массивы #5
Цитата Сообщение от ewenso Посмотреть сообщение
Зачем там новый массив какой то выдает
Значит вам упорядочить массив не надо?
ewenso
 Аватар для ewenso
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 25
17.11.2011, 21:10  [ТС]     Массивы #6
Цитата Сообщение от Nursik77 Посмотреть сообщение
Значит вам упорядочить массив не надо?
Блин!!! Во я дырявая голова...Спасибо что пояснили.
ewenso
 Аватар для ewenso
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 25
24.01.2012, 12:09  [ТС]     Массивы #7
ПРивет еще раз, возникла проблема вот это вот
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <ctime> 
#include <cmath>
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{    
         setlocale(LC_ALL,"Russian");
         int size,db=1,count_min,count_max,min,max;
     int i,j,temp,sum=0;
         srand((unsigned)time(NULL));
         int *arr;
         cout<<"Введите розмер массива: ";
         cin>>size;
         arr = new int[size];
         cout<<"Массив: ";
         for(i=0; i<size; i++)
         {
                 arr[i]=rand()%9;
                 cout<<arr[i]<<"  ";
                 if(arr[i]>0)
                 {
                         sum+=arr[i];
                 }
         }
         max = abs(arr[0]);
         min = abs(arr[0]);
     for(i=0; i<size; i++)
         {
                 if (abs(arr[i])>max)
                 {
                         max = abs(arr[i]);
                         count_max=i;
                 }
                 if (abs(arr[i])<min)
                 {
             min = abs(arr[i]);
                         count_min=i;
                 }
        }
         cout<<endl;
         cout<<"Маkсимум "<<count_max<<" елемент"<<endl;
         cout<<"Минимум "<<count_min<<" елемент"<<endl;
         cout<<"Произведение: ";
         (count_max>count_min)? i=count_min+1 : i=count_max+1;
         (count_max>count_min)? j=count_max : j=count_min;
         for(i; i<j; i++)
         {
                 db*=arr[i];
         }
         cout<<db<<endl;
         cout<<"Новый массив: ";
         for(i=0; i<size; i++)
         {
                 for(j=i; j<size; j++)
                 {
           if(abs(arr[i])>abs(arr[j]))
                   {
                           temp=arr[i];
                       arr[i]=arr[j];
                           arr[j]=temp;
                   }
                 }
         }
         for(i=0; i<size; i++)
         {
                 cout<<arr[i]<<" ";
         }
         cout<<endl;
         cout<<"Сумма положытельных елементов - "<<sum<<endl;
         delete [] arr;
         system("pause");
   return 0;
}
Ндо немного переделать, точнее
1) требовался массив вещественных чисел, а не целых (должна быть возможность ввода дробных чисел, а также возможность автоматической генерации именно дробных чисел).
2)Элементы массива требовалось упорядочить по убыванию, а не по возрастанию

Добавлено через 22 часа 2 минуты
эх...никого нет? ( А то сдать надо..
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.01.2012, 12:32     Массивы #8
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <map>
#include <functional>
#include <iterator>
 
int check_correct_input()
{
   int value = 0;
   std::cin >> value;
   while (value < 1 || value > 2)
   {
      std::cout << "Wrong" << std::endl;
      std::cin >> value;
   }
   return value;
}
 
std::vector<double> random_generator(size_t size)
{
   std::vector<double> vec(size);
   std::mt19937 generator(time(0));
   std::uniform_int_distribution<> distr(0, 1000);
   std::generate(vec.begin(), vec.end(), [&generator, &distr] () {return static_cast<double>(distr(generator)) / 100;});
   return vec;
}
 
std::vector<double> keyboard_input(size_t size)
{
   std::vector<double> vec;
   for (size_t i = 0; i < size; ++i)
   {
      double value = 0.0;
      std::cin >> value;
      vec.push_back(value);
   }
   return vec;
}
 
int main()
{
   typedef std::function<std::vector<double>(size_t)> fill_function;
   std::pair<int, fill_function> array[] = 
   {
      std::make_pair(1, random_generator),
      std::make_pair(2, keyboard_input)
   };
   std::map<int, fill_function> functions(array, array + sizeof(array) / sizeof(*array));
   size_t size = 0;
   std::cout << "Enter array size: ";
   std::cin >> size;
   std::cout << "Press 1 for auto generate" << std::endl
             << "Press 2 for entering from keyboard" << std::endl;
   int value = check_correct_input();
   std::vector<double>&& vec = functions[value](size);
   std::cout << "Array is: ";
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
   std::cout << std::endl;
   std::sort(vec.begin(), vec.end(), [] (const double first, const double second) {return first > second; });
   std::cout << "Sorted array: ";
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
   std::cout << std::endl;
}
Без мин/макс. Сам допили. Удачи)
ewenso
 Аватар для ewenso
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 25
24.01.2012, 12:47  [ТС]     Массивы #9
ухх..спасибо, попробуем..Хотя врят ли выйдет
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
24.01.2012, 13:06     Массивы #10
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
40
41
42
43
44
45
46
47
48
49
#include <random>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
 
int main()
{
   std::vector<int> v(10);
   
   std::generate(std::begin(v), std::end(v), 
                 std::bind(std::uniform_int_distribution<int>(-99, 99), std::mt19937()));
 
   std::copy(std::begin(v), std::end(v), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
 
   std::cout << "Sum of positives: "
             <<  std::accumulate(std::begin(v), std::end(v), 0,
                    [](const int a, const int b)
                    {
                       return b > 0 ? a + b : a;
                    }
                 )
             << std::endl;
      
   auto min = std::min_element(std::begin(v), std::end(v));
   auto max = std::max_element(std::begin(v), std::end(v));
   
   if (std::distance(min, max) > 0)
   {
      std::cout << "Mul between min and max: "
                << std::accumulate(min, max, 1, std::multiplies<int>())
                << std::endl;
   }
   else 
   {
      std::cout << "Cannot calculate mul" << std::endl;
   }
   
   std::sort(std::begin(v), std::end(v), 
      [](const int a, const int b)
      {
         return b < a;
      }
   );
   
   std::copy(std::begin(v), std::end(v), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 16:33     Массивы
Еще ссылки по теме:

Массивы C++
Массивы C++
C++ массивы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.01.2012, 16:33     Массивы #11
Как-то так.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <map>
#include <functional>
#include <iterator>
 
int check_correct_input()
{
   int value = 0;
   std::cin >> value;
   while (value < 1 || value > 2)
   {
      std::cout << "Wrong" << std::endl;
      std::cin >> value;
   }
   return value;
}
 
std::vector<double> random_generator(size_t size)
{
   std::vector<double> vec(size);
   std::mt19937 generator(time(0));
   std::uniform_int_distribution<> distr(0, 1000);
   std::generate(vec.begin(), vec.end(), [&generator, &distr] () {return static_cast<double>(distr(generator)) / 100;});
   return vec;
}
 
std::vector<double> keyboard_input(size_t size)
{
   std::vector<double> vec;
   for (size_t i = 0; i < size; ++i)
   {
      double value = 0.0;
      std::cin >> value;
      vec.push_back(value);
   }
   return vec;
}
 
int main()
{
   typedef std::function<std::vector<double>(size_t)> fill_function;
   std::pair<int, fill_function> array[] = 
   {
      std::make_pair(1, random_generator),
      std::make_pair(2, keyboard_input)
   };
   std::map<int, fill_function> functions(array, array + sizeof(array) / sizeof(*array));
   size_t size = 0;
   std::cout << "Enter array size: ";
   std::cin >> size;
   std::cout << "Press 1 for auto generate" << std::endl
             << "Press 2 for entering from keyboard" << std::endl;
   int value = check_correct_input();
   std::vector<double>&& vec = functions[value](size);
   std::cout << "Array is: ";
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
   std::cout << std::endl;
   auto minmax = std::minmax_element(vec.begin(), vec.end());
   std::cout << "Min: " << *minmax.first << " Max: " << *minmax.second << std::endl;
   std::ptrdiff_t diff = std::distance(minmax.first, minmax.second);
   if (diff > 1 || diff < -1)
   {
      std::cout << "Mult is: " << std::accumulate(diff >= 0 ? minmax.first + 1 : minmax.second + 1,
            diff >= 0 ? minmax.second : minmax.first, 1.0, std::multiplies<double>()) << std::endl;
   }
   else
   {
      std::cout << "No elements between min and max" << std::endl;
   }
   std::sort(vec.begin(), vec.end(), [] (const double first, const double second) {return first > second; });
   std::cout << "Sorted array: ";
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
   std::cout << std::endl;
}
Yandex
Объявления
24.01.2012, 16:33     Массивы
Ответ Создать тему
Опции темы

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