Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 13
1

Переписать в другой массив 20 максимальных элементов из исходного

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

Author24 — интернет-сервис помощи студентам
Создать массив из случайных 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)))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2012, 13:39
Ответы с готовыми решениями:

Переписать в другой массив только отрицательные элементы исходного
Уважаемые форумчане! Прошу вас о помощи!!! нужно выполнить задание а я ни в зуб ногой в...

Переписать в другой массив четные элементы исходного массива
Написать программу, формирующую массив-результат на базе исходного массива 1. Заполнение массива...

Переписать элементы исходного массива в другой массив такого же размера особым образом
Дан массив. Переписать его элементы в другой массив такого же размера следующим образом: сначала...

Переписать элементы исходного массива в другой массив такого же размера особым образом
Дан массив. Переписать его элементы в другой массив такого же размера следующим образом: сначала...

4
222 / 135 / 19
Регистрация: 06.11.2010
Сообщений: 234
29.01.2012, 17:47 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
1
78 / 78 / 9
Регистрация: 26.12.2011
Сообщений: 217
29.01.2012, 19:11 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];
                      }
             } */
Т.е. используйте /* и */ для комментирования целых блоков, нежели коммент каждой строчки.
2
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
29.01.2012, 20:06 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.
2
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 13
29.01.2012, 21:31  [ТС] 5
Ребятки, мою благодарность словами не выразить!!!)) 2 ночи не спала, не знала как с этим всем взлететь...вечно в этих индексах теряюсь(((.
С удовольствием разберу все варианты!
0
29.01.2012, 21:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2012, 21:31
Помогаю со студенческими работами здесь

Переписать в другой массив все элементы исходного массива с четными номерами, а потом с нечетными
Задано массив целых чисел А размерностью N. Переписать в новый массив целых чисел С той же...

Составить одномерный массив, содержащий номера максимальных элементов в столбцах исходного массива
Помогите решить задачи по Паскалю... С текстом программы 1. Вводится размер одномерного масива...

Из исходного текстового файла все повторяющиеся слова переписать в другой файл удалив их из исходного
из исходного текстового файла все повторяющиеся слова переписать в другой файл удалив их из...

Переписать из исходного массива все элементы больше 5 в 1 массив, а все остальные в другой.
Не могу написать программу по условию: Переписать из исходного массива все элементы больше 5 в 1...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru