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

Как сделать это с массивами? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Предикат для сортировки std::list http://www.cyberforum.ru/cpp-beginners/thread293136.html
Помогите правильно составить предикат для сортировки std::list Валит ошибку WinXP, VC6 #include "stdafx.h" #include <list> using namespace std; struct _strMy { int Id;
C++ Найти максимальные и минимальные элементы матрицы и их кординаты С помощью датчика случайнных чисел сформулировать матрицу H.Вывести ее на экран. Найти максимальные и минимальные элементы матрицы и их кординаты. http://www.cyberforum.ru/cpp-beginners/thread293130.html
Написать программу, вычисляющую плату за пользование телефоном для введенного времени разговоров за месяц. C++
Услуги телефонной сети оплачиваются по следующему правилу: за разговоры до А минут в месяц — В руб., а разговоры сверх установленной нормы оплачиваются из расчета С руб. за минуту. Написать программу, вычисляющую плату за пользование телефоном для введенного времени разговоров за месяц.
C++ Двухсвязные списки
Нужна программа считалочка. Т.е. допустим сидят четверо детей и один из них по этой считалочке считает. на ком закончил, тот вылетает. И так пока не останется один. Количество слов в считалочке вводим с клавиатуры. Вывести как они вылетают - порядок и кто выйграл. Спасибо.
C++ Из множества точек выбрать http://www.cyberforum.ru/cpp-beginners/thread293112.html
Из заданного множества точек на плоскости выбрать три разные точки A, B, C, так, чтобы внутри треугольника ABC содержалось максимальное количество точек этого множества. Помогите решить задачу на си, пожалуйста.
C++ Программы на массивы С++ 1. Дан массив размера N. Найти количество участков, на которых его элементы монотонно убывают. 2. Дан целочисленный массив размера N. Если он является перестанов- кой, то есть содержит все числа от 1 до N, то вывести 0; в противном слу- чае вывести номер первого недопустимого элемента. Добавлено через 1 час 29 минут Буду очень благодарен если поможете! подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
11.05.2011, 21:40     Как сделать это с массивами?
Задание б
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 #include <iostream>
 #include <conio.h>
 #include <time.h>
 #include <vector>
 using namespace std;
  
 const int n=50;
 
 //Это вот новые функцийки, которые я добавил
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 int per_;
  bool IsOdd (int i) { return (i== per_); };
 void gen_random_uniq( int arr_size, int *parr, int range_min, int range_max ) {
  
 int i, j;
 int dup_flag;
 int rand_val, range_width= range_max-range_min+1;
  
  
  
 for ( i= 0; i<arr_size; i++ ) {
         for ( ; ; ) {
                 rand_val= range_min+rand()%range_width;
                 dup_flag= 0;
                 for ( j= 0; j<i; j++ ) {
                         if ( rand_val == parr[j] ) { dup_flag= 1; break; }
                 }
                 if ( !dup_flag ) { break; }
         }
         parr[i]= rand_val;
 }
         
 } /* gen_random_uniq() */
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 
 int main(){
 int a[n];
 int i,j,mx,mk,k;
 srand(time(NULL));
 for(i=0;i<n;i++)
  {
   a[i]=rand()%n+1;
   cout.width(3);
                 cout<<a[i];
         }
 cout<<endl;
 mx=a[1]; mk=1; k=0;
  
 for(i=1;i<= n;i++) {
  for(j=1;j<=n;j++)                                if(a[i]==a[j]) k++;
  
 if(((mk == k) && (mx < a[i])) || (mk < k)) 
  {
                 mx=a[i]; mk=k; 
         }
 k=0;
 }
  
 cout<<"chislo="<<mx<<" povtorov="<<mk<<endl; 
 getch();
 system ("PAuse");
 
  //Делаем хитрые морды
  vector<int> vec (a, a + sizeof(a) / sizeof(int) );
 
  //Теперь удалим из вектора все элементы, равные "chislo"
  //Но сначала для нормальной работы IsOddсделаем так:
  per_= mx;
  //поехали удалять      
  vector<int>::iterator it= remove_if (vec.begin(), vec.end(), IsOdd); 
  vec.resize(it - vec.begin() );
 
  //ВЫведем вектор и его размер
  cout<<"vec.size= "<<  vec.size()<< endl;
  for (int i= 0; i< vec.size(); i++) {
   cout<<" "<<vec[i]<<" ";
  }
  cout<< endl;
 
  //Теперь найдём количество элементов, сумму квадратов которых будем расчитывать (случайно)
  int kol_vo= rand()%vec.size()+ 1;
  cout<<"kol_vo= "<<kol_vo<< endl;
 
  //OK, теперь скропаем массив из индексов этих елементов
  int* p= new int [kol_vo];
  
  //Теперь заполним этот массив случайными индексами;
  //Как? Вот здесь:
  //http://www.cyberforum.ru/cpp-beginners/thread44753.html
  //позаимствуем функцийку gen_random_uniq        
  gen_random_uniq(kol_vo, p, 0, vec.size()- 1);
  
  //ПОсмотрим, какие там индексы у нас получились:
  for (int i= 0; i< kol_vo; i++) {
   cout<<" "<<p[i]<<" ";
  }
  cout<< endl;
  
  
  //OK, в массиве p теперь индексы нужных нам элементов
  //Теперь просто:
  int sum= 0;
  for (int i= 0; i< kol_vo; i++) {
   sum+= vec[p[i]]* vec[p[i]];
   printf ("sum= %d\n", sum); 
  }          
    
  printf ("+++++++++++++++++++++++++\nsum= %d\n"); 
  
  getchar ();
 return 0;
 }
 
Текущее время: 12:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru