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

Заполнение массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Molotoff
1 / 1 / 0
Регистрация: 21.07.2009
Сообщений: 50
23.01.2011, 06:32     Заполнение массива #1
Доброго дня, уважаемые форумчане!
В очередной раз сталкиваюсь с небольшой проблемой, суть ее заключается в следующем. Есть два массива малый и большой, нужно значения из малого более-менее равномерно записать в большой. Например:
A[5] = {0,1,2,3,4} - исходный массив
B[17] = {0,0,0,1,1,1,2,2,2,3,3,3,3,4,4,4,4} или B[17] = {0,0,0,0,1,1,1,2,2,2,2,3,3,3,4,4,4} - результирующий массив
Т.е. принципиальной разницы нет, главное, чтоб эти "отрезки" отличались не более чем на единицу. И опять же, требуется, чтоб алгоритм был быстрый (выполнялся за небольшое число операций).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2011, 06:32     Заполнение массива
Посмотрите здесь:

Заполнение массива C++
C++ Заполнение массива
Заполнение массива C++
Заполнение массива значениями из символьного массива C++
C++ ввод двумерного массива,ввод размерности массива,заполнение массива случайными числами
Заполнение массива C++
C++ Заполнение массива
C++ Заполнение массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
23.01.2011, 06:56     Заполнение массива #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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cmath>
 
const size_t nB = 13;
 
int A[] = {0,1,2,3,4},
    B[nB];//{0,0,0,1,1,1,2,2,2,3,3,3,3,4,4,4,4}; 
 
const size_t nA = sizeof(A)/sizeof(A[0]), step = floor(nB*1.0/nA);
            
int main(){
   size_t i,j,index = 0, offer = nB - step*nA;
   for( i=0;i<nA;++i ){
      for( j=0;j<step && index<nB;++j,++index ){
         B[index]=A[i];
      }  
      if( offer ){
         B[index++] = A[i];
         --offer; 
      }   
   }  
   std::copy( B,B+nB,std::ostream_iterator<int>(std::cout," ") );
}
Добавлено через 1 минуту
тут про отличия отрезков прочитал надо поразмыслить
Yandex
Объявления
23.01.2011, 06:56     Заполнение массива
Ответ Создать тему
Опции темы

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