2016-02-25 1 views
-2
#include <iostream> 

#include <valarray> 

using namespace std; 

// to get new card number 
int main() 
{ 

    int i; 
    int array[5]= {10,2,6,34,51}; 
    valarray<int> v[5]; 


    int v %= 13; 
    for (int i=0; i<5 ; i++) { 

     cout << v[i]%=13 << " "; 
    } 


    } 

привет, моя цель состоит в том, чтобы получить массив выполнить модуль деления на число 13.Начинающие C++, обращающихся за помощью в разделении массива

Я поиска и попробовать несколько иной путь, но я могу» т выяснить способ заставить это работать .....

Спасибо ...

+0

Вы должны получить ошибку компиляции из кода вы показать, где вы * Переопределение * переменная 'V', а также использовать нелегальный оператор инициализации для него. Это, в свою очередь, может привести к большему количеству ошибок в цикле. Кроме того, вы не объявляете объект 'valarray ' с пятью элементами, вы объявляете массив из пяти объектов valarray ', каждый из которых содержит нулевые элементы. Наконец, разве вы не должны использовать 'array' вместо этого? И только оператор modulo '%', а не оператор modulo-assign? –

ответ

0

Кажется, вы хотите что-то вроде ...

int array[5]= {10,2,6,34,51}; 
int v[5]; 

for (int i = 0; i < 5; ++i) 
    v[i] = array[i] % 13; 

for (int i = 0; i < 5; ++i) 
    std::cout << v[i] << " "; 
std::cout << '\n'; 
+0

Большое спасибо !!!! : D: D –

1

Некоторые из проблем с кодом:

  • valarray не имеют те же обозначения, что и обычные массивы: valarray<int> v[5]; объявляет 5 различных valarray объекты и помещает их в массив C-стиле. Нотация, которую вы ищете, это valarray<int> v(10);
  • Избавьтесь от строки int v %= 13;: это переопределяет v (массив) как целое число.
  • Используйте для расчета v[i]=(array[i]%13);, что у вас нет смысла.
  • Затем выход cout << v[i] << " ";

Кроме того, вы на самом деле не с помощью какой-либо из особенностей valarray, так что он может сделать больше смысла просто использовать один массив, как:

#include <iostream> 

using namespace std; 

// to get new card number 
int main() 
{ 
    int array[5]= {10,2,6,34,51}; 
    for (int i=0; i<5 ; i++) { 
     array[i]%=13; 
     cout << array[i] << " "; 
    } 
} 

Edit: по слову, классная вещь о valarray здесь заключается в том, что вы можете применить одну и ту же функцию к каждому значению сразу. Как это:

#include <iostream> 
#include <valarray> 
using namespace std; 
int main() { 
    valarray<int> v(10); 
    for (int i=0;i<10;++i) { 
     v[i]=i*i; //Fill the array with 0,1,4,9,16,... as an example 
    } 
    v%=13; //This applies the modulo 13 on the whole array at once. 
    for (int i=0;i<10;++i) { 
     cout << v[i] << endl; 
    } 
} 
+0

О, ничего себе. Это было намного проще, чем я думал. Святое дерьмо .... Большое спасибо !!! –

Смежные вопросы