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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
#1

Использование алгоритмов STL - C++

11.10.2011, 18:19. Просмотров 1661. Ответов 23
Метки нет (Все метки)

Здравствуйте.
Ребят пожалуйста решите 2 простенькие задачки, потратьте немного своего времени, очень прошу.
Заранее огромное спасибо вам!
1) Дана последовательность целых чисел. Определить, является ли сумма элементов простым числом.
2) Дана последовательность целых чисел. Вставить новый элемент после всех элементов, которые заканчиваются на заданную цифру.
Пожалуйста !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
11.10.2011, 20:18     Использование алгоритмов STL #21
Цитата Сообщение от aeshes Посмотреть сообщение
Сыроежка, мой компилятор VS2010 говорит мне на sqrt(1) - ambiguous call и std::sqrt(1) тут не помогает, потому что компилятор не может выброать, к какой из типов (float, double, long double) преобразовать неявным преобразованием
То есть он не знает, какая из выше перечисленных трех функций наиболее подходит для целого числа. Тогда ghjot использовать кастинг в стиле С: sqrt( (double ) x )
aeshes
439 / 202 / 13
Регистрация: 07.10.2011
Сообщений: 462
11.10.2011, 20:30     Использование алгоритмов STL #22
Цитата Сообщение от aeshes Посмотреть сообщение
напишите sqrt((double)x) или sqrt(x+0.0)
ну, а я что предложила?
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
11.10.2011, 20:34     Использование алгоритмов STL #23
Сыроежка, мой gcc, конечно, глотает. При чем g++ глотает вообще всегда. А для сишного кода можно сделать вот так:
C
1
2
3
4
5
6
7
#include <math.h>
#include <stdio.h>
 
int main () {
    printf("%lf\n", sqrt(9.0));
    return 0;
}
Код
fasked@k50id:/tmp/src$ gcc -lm a.c -Wtraditional-conversion
a.c: In function ‘main’:
a.c:6:2: warning: passing argument 1 of ‘sqrt’ as floating rather than integer due to prototype
Цитата Сообщение от Сыроежка Посмотреть сообщение
Тогда ghjot использовать кастинг в стиле С: sqrt( (double ) x )
Кастинг в стиле C++ тоже подойдет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2011, 22:46     Использование алгоритмов STL
Еще ссылки по теме:

C++ Использование list stl для вывода в файл
Примеры алгоритмов для STL map C++
Использование класса list STL C++
C++ Продемонстрировать работу алгоритмов STL copy, и max_element
C++ Как скопировать массив в вектор одной строкой без использования циклов и алгоритмов STL?

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

Или воспользуйтесь поиском по форуму:
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
11.10.2011, 22:46     Использование алгоритмов STL #24
Цитата Сообщение от diagon Посмотреть сообщение
Не придумал, как решить красиво, только так
Можно обойтись только одним вектором.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <algorithm>
#include <vector>
bool is_num(int x) { return ((x%10) == 4); }
 
int main(){
   int arr[] = { 24, 122, 123, 124, 324, 4 };
   std::vector<int> vec( arr, arr + sizeof(arr)/sizeof(arr[0]));
   int n = 44444; 
 
   for(std::vector<int>::iterator i = vec.begin(); i != vec.end(); i = std::find_if(i, vec.end(), is_num)) 
       i = vec.insert(i + 1, n) + 1;
  
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cin.get();
   return 0;
}
Yandex
Объявления
11.10.2011, 22:46     Использование алгоритмов STL
Ответ Создать тему
Опции темы

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