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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Montanaa
5 / 5 / 1
Регистрация: 21.03.2011
Сообщений: 79
11.10.2011, 18:19     Использование алгоритмов STL #1
Здравствуйте.
Ребят пожалуйста решите 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
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
11.10.2011, 20:30     Использование алгоритмов STL #22
Цитата Сообщение от aeshes Посмотреть сообщение
напишите sqrt((double)x) или sqrt(x+0.0)
ну, а я что предложила?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 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++ Сортировка списка строк с использованием стандартных алгоритмов библиотеки STL
Использование стандартных компонентов stl C++
C++ Использование list stl для вывода в файл

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

Или воспользуйтесь поиском по форуму:
xAtom
 Аватар для xAtom
910 / 735 / 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
Ответ Создать тему
Опции темы

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