Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 22:12   #1
ProstoMaks
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 3
По умолчанию Обработка одномерных массивов

есть код для задачи:
Преобразовать заданный массив целых положительных чисел F(n) таким образом, чтобы цифры каждого его элемента были записаны в обратном порядке. Определить количество простых чисел в массиве до и после преобразования. После преобразования удалить из массива максимальный элемент.

Код:
#include <iostream>
#include <algorithm>
#include <vector>
 
bool is_prime(const int n){
  for(int i = 2; i <= n / 2; i++)
    if( !(n % i) )
      return false;
  return true;
}
 
void print_arr(std::vector<int> &_a){
  for(std::vector<int>::value_type i = 0; i < _a.size(); ++i)
    std::cout << _a[i] << ' ';
}
 
int main(){
  size_t n = 0, cnt_before, cnt_after;
  std::cout << "\nKolichestvo elementov = ";
  std::cin >> n;
  std::vector<int> arr(n);
  for(std::vector<int>::value_type i = 0; i < n; ++i){
        std::cout << "\n" << i + 1 << " element = ";
        std::cin >> arr[i];
  }
  cnt_before = std::count_if(arr.begin(), arr.end(), is_prime);
  struct func{
    int operator() (int _n){
      int __n = _n;
      _n = 0;
      while(__n){
        _n = _n * 10 + __n % 10;
        __n /= 10;
      }
      return _n;
        }
  };
  std::transform(arr.begin(), arr.end(), arr.begin(), func());
  cnt_after = std::count_if(arr.begin(), arr.end(), is_prime);
  std::cout << "\n\nMassiv posle transformacii: ";
  print_arr(arr);
  std::cout << "\n\nProstie elementi do preobrazovaniy = " << cnt_before
                        << "\nProstie elementi posle prebrazovaniy = " << cnt_after;
  arr.erase(std::remove(arr.begin(), arr.end(), *std::max_element(arr.begin(), arr.end())), arr.end());
  std::cout << "\n\nMassiv bez max elememta: ";
  print_arr(arr);
  return 0;
}
вроде все написано правильно но у меня он выдает ошибку в этой строчке
std::transform(arr.begin(), arr.end(), arr.begin(), func());

помогите кто может, что эта за ошибка, если не сложно напишите исправленный код

Последний раз редактировалось ACE Valery; 10.05.2011 в 02:14.
ProstoMaks вне форума Ответить с цитированием
Старый 10.05.2011, 02:14   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Какую именно ошибку выдает?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 10.05.2011, 15:42   #3
ProstoMaks
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 3
По умолчанию

вот такую:
Cannot convert '_Vector_iterator<int,allocator<int > >' to 'func'
ProstoMaks вне форума Ответить с цитированием
Старый 10.05.2011, 15:48   #4
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Код:
std::transform(arr.begin(), arr.end(), arr.begin(), func); // func() -> func
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 10.05.2011, 16:47   #5
ProstoMaks
Новичок
Джуниор
 
Регистрация: 09.05.2011
Сообщений: 3
По умолчанию

со скобками или без, все ровно та же ошибка
ProstoMaks вне форума Ответить с цитированием
Старый 10.05.2011, 17:43   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

А если вынести struct func за пределы main?
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка одномерных массивов jamik2012 Помощь студентам 1 29.11.2010 07:36
Обработка одномерных массивов vbchristy46 Помощь студентам 7 09.06.2010 22:24
Обработка одномерных массивов Mari.Prosto Mari Паскаль, Turbo Pascal, PascalABC.NET 7 09.06.2010 22:04
Обработка одномерных массивов на Си/Си++ aka_Kiss Помощь студентам 1 23.11.2009 21:51
обработка одномерных массивов felmor Помощь студентам 16 05.02.2009 19:22