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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Мида
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 13
#1

переписать 20 максимальных элементов в массив - C++

29.01.2012, 13:39. Просмотров 361. Ответов 4
Метки нет (Все метки)

Создать массив из случайных 100 четырехзначных элементов. Переписать в массив из 20 элементов 20 самых больших чисел из первого массива. Нельзя создавать временный массив, сортировать 100-элементный)
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
   // const int size = 10;
    int A[10], B[5];
     int imax = 0, j=0;
    cout << "first array" << "\n";
 
   srand(time(0));
    for(int i = 0; i <10; i++)
       {
        A[i] = rand() % 9000 + 1000;//создаем массив
        cout << A[i] << "\n";//выводим
         }
    
        for(int i = 1; i <10; i++)
             {    
               if(A[imax] < A[i])
                  {
                    imax = i;  
                    j=imax;
                   
                   }
 
                 }
                 cout<< "MAX = " << A[imax] << "(" << imax + 1 << " element)\n";   //выводим максимальный (это я себе для проверки)
}
        
    //  for(int i=0; i<5; i++)
        //{
        //  if ( A[i]==A[imax])  //вот тут както надо??
        //  {
        //      B[i]=A[imax];
        //     cout<<B[i];
        //  }
    //  }
    return 0;
 
}

1.Не могу понять как создать цикл, находящий максимальный элемент из оставшихся, не выбранных
2.и как из него слепить новый массив?((
Подскажите, если можете...
(векторы ещё не учили, лепим из минимальных знаний)

Добавлено через 2 минуты
Для упрощения я оба массива уменьшила на 10 и 5)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2012, 13:39     переписать 20 максимальных элементов в массив
Посмотрите здесь:

Дан массив А на Н элементов (Н-константа). В массиве найти пять максимальных элементов. - C++
Дан массив А на Н элементов (Н-константа). В массиве найти пять максимальных элементов. Написать программу по шагам. Добавлено через...

Сформировать массив состоящий из максимальных элементов столбцов - C++
Нужно сформировать массив состоящий из максимальных элементов столбцов матрицы. Это нужно оформить в виде функции. #include &lt;iostream&gt; ...

Сформировать массив из максимальных элементов в столбцах матрицы - C++
Сформировать одномерный массив, каждый элемент которого равен максимальному элементу соответствующего столбца произвольно заданной матрицы...

Сформировать одномерный массив X из максимальных элементов столбцов матрицы A - C++
Сформировать одномерный массив X из максимальных элементов столбцов матрицы A. В массиве X поменять первый отрицательный и последний...

Сформировать массив из максимальных элементов столбцов заданной матрицы - C++
Задана матрица целых чисел . Сформировать массив из максимальных элементов столбцов заданной матрицы. help

Сформировать одномерный массив из максимальных элементов строк матрицы - C++
Дана прямоугольная матрица A (N, M) (N M, M 15). Найти максимальный элемент в каждой строке. Сформировать массив B из найденных...

Отсортировать по уменьшению массив максимальных элементов столбцов матрицы - C++
#include &lt;vcl.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; int main { int i,j,m,n,max=-10000; int...

Сформировать новый массив из максимальных элементов двух других - C++
Ввести 2 одномерных числовых массива А и В одинаковой длины и сформировать новый массив С , который состоит из элементов с(i)max{а(i);b(i)}...

Сформировать одномерный массив, состоящий из максимальных элементов четных столбцов матрицы - C++
Дана целочисленная матрица 10x12. Найти сумму элементов в заштрихованной области. Сформировать одномерный массив, состоящий из максимальных...

Сформировать массив B из максимальных по значению элементов каждой строки исходной матрицы A(MxN) - C++
Сформировать массив B из максимальных по значению элементов каждой строки исходной матрицы A(MxN) вот пытался но что-то пошло не так:(...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
x1Mike7x
216 / 129 / 6
Регистрация: 06.11.2010
Сообщений: 234
29.01.2012, 17:47     переписать 20 максимальных элементов в массив #2
Можно так:
ищем максимальный элемент в массиве с 1го по последний, когда нашли - значение заносим в массив Б и меняем местами значения в массиве А с индексом 1 ( ну, если адрессация с 1 в массиве ) и индексом максимального элемента. Для второго элемента проделываем тоже самое, только ищем с 2го элемента и меняем местами на 2й элемент.
+ К тому же сам обмен между элементами с индексами i и максимальным производить не надо, поскольку элемент A[ i ] на след. итерации интересовать нас не будет, поэтому можно просто присвоить A[ максимум ] значение A[ i ].
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int A[ 10 ] = { 4, 5, 6, 12, 31, 13, 1, 3, 2, 68 };
int B[ 5 ];
 
for ( int i = 0; i < 5; ++i )
{
    int indMax = i;
    for ( int j = i; j < 10; ++j )
        if ( A[ indMax ] < A[ j ] )
            indMax = j;
    
    B[ i ] = A[ indMax ];
    
    A[ indMax ] = A[ i ];
}
http://ideone.com/xrREc
zelim
77 / 77 / 4
Регистрация: 26.12.2011
Сообщений: 217
29.01.2012, 19:11     переписать 20 максимальных элементов в массив #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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main()
{
    int A[100] = {NULL}, B[20] = {NULL};
    int imax = 0, j=0, i, lmax=0;
    cout << "first array" << "\n";
 
   srand(time(0));
 
   // заполняем массив
    for(i = 0; i <100; i++)
       {
        A[i] = rand() % 9000 + 1000;//создаем массив
        cout << A[i] << "\n";//выводим
         }
 
    // найдем максимальный элемент массива
            for(i = 0; i <100; i++)
             {    
               if(lmax < A[i])
                    lmax = A[i];
                    } 
        B[0]=lmax;
 
    // ищем максимумы и записываем в конечный массив
        for(j=1;j<20;j++) {
        for(i = 0; i<100; i++)
             {    
                 if(imax<A[i] && A[i]<lmax){
                    imax = A[i];
                    }
        }
                    B[j] = imax;
                    lmax = imax;  
                    imax=0;
                               
        }
        cout << "finish: " << "\n";
            for(i = 0; i <20; i++)
       {
        cout << B[i] << "\n";//выводим
         }
    return 0;
 
}
Вот вам решение
lmax - предыдущий максимальный элемент. Опираемся на него, чтобы найти след. макс. элемент ))

И, если разрешите, попытка облегчить написание в будущем:
Вместо
C++
1
2
3
4
5
6
7
8
        //      for(int i=0; i<5; i++)
                //{
                //      if ( A[i]==A[imax])  //вот тут както надо??
                //      {
                //              B[i]=A[imax];
                //         cout<<B[i];
                //      }
        //      }
Пишите
C++
1
2
3
4
5
6
7
8
              /*      for(int i=0; i<5; i++)
                {
                      if ( A[i]==A[imax])  //вот тут както надо??
                      {
                              B[i]=A[imax];
                         cout<<B[i];
                      }
             } */
Т.е. используйте /* и */ для комментирования целых блоков, нежели коммент каждой строчки.
BumerangSP
4285 / 1407 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
29.01.2012, 20:06     переписать 20 максимальных элементов в массив #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
34
35
36
37
38
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int A[10], B[5];
     int max, j=0,i,k=0;
    cout << "first array" << "\n";
    srand(time(NULL));
    for(i = 0; i <10; i++)
     {
      A[i] = rand() % 9000 + 1000;//создаем массив
      cout << A[i]<<" ";//выводим
     }
    cout<<"\n";
    for(j=0; j<5; j++)      
        {
         max=A[0];
         for(i=0; i<10; i++)    
          if(A[i]>max)
           {
            max = A[i]; 
           }
         for(i=0; i<10; i++)
          if (A[i]==max)
           A[i]=0;
         B[k]=max;
         k++;  
         cout<<B[j]<<" ";
         
        }
       cout<<"\n";                                                                           
    getchar();            
    return 0; 
}
Ваш пример с размерностями 10 и 5.
Мида
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 13
29.01.2012, 21:31  [ТС]     переписать 20 максимальных элементов в массив #5
Ребятки, мою благодарность словами не выразить!!!)) 2 ночи не спала, не знала как с этим всем взлететь...вечно в этих индексах теряюсь(((.
С удовольствием разберу все варианты!
Yandex
Объявления
29.01.2012, 21:31     переписать 20 максимальных элементов в массив
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru