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

Корень из целого числа. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ sort для своего типа данных http://www.cyberforum.ru/cpp-beginners/thread451425.html
#include <iostream> #include <vector> #include <algorithm> using namespace std; class foo { public: foo() : v(0) {}
C++ В одномерном массиве вычислить количество отрицательных элементов и сумму модулей элементов, расположенных после минимального по модулю элемента /* В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество отриц. элементов массива; 2) сумму модулей элементов массива, расположенных после минимального по модулю элемента. Заменить все отриц. элементы массива их квадратами и упорядочить элементы массива по возрастанию. */ #include <windows.h> #include <iostream> #include <stdlib.h> http://www.cyberforum.ru/cpp-beginners/thread451397.html
Деление значений в массиве C++
Вобщем сам не знаю почему возникла такая проблема, вроде бы все тривиально, но... кароче, массив Pk имеет тип дабл, в нем хранятся данные полученые путем деления значений другого массива (Const1 типa инт) на 18, но весь массив Pk заполнен нулями, почему это может произойти? Я тестил, дебаг выявил что при итерации массив Const1 меняет значения как ему и положено, но Pk все равно 0. проблемная...
Проверишь надежность программы! C++
Пишу под windows свою программу. Могу я узнать как-то, на сколько она "дырявая"? Ну без использования конкретной програмной оболочки а средствами winXP? Добавлено через 4 минуты т.е. не вяснять где утечка а вообще осознать что утечка есть!! Вот я в "процессах" внизу вижу "выделение памяти". При многократном запуске своей программы память увеличивается примерно на мегабайт. Это что значит?...
C++ C++ чтение из файла в класс http://www.cyberforum.ru/cpp-beginners/thread451357.html
Файл test.txt n1 01 e1 0.1 n2 02 e2 0.2 n3 03 e3 0.3 n4 04 e4 0.4 n5 05 e5 0.5 n6 06 e6 0.6 n7 07 e7 0.7 n8 08 e8 0.8
C++ Касательно указателей и функций Уважаемые, назрел вот какой вопрос. Делаю вот так: TVozmGrup MassVG; GetVGArroundVG(MassVG); void GetVGArroundVG(TVozmGrup *MassVozmGrup) { . . подробнее

Показать сообщение отдельно
AKruglyak
0 / 0 / 0
Регистрация: 18.02.2012
Сообщений: 24
23.02.2012, 16:14     Корень из целого числа.
Здравствуйте, решал вот эту задачу. Написал следующий код:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <math.h>
using namespace std;
int simple(int f);
int main(){
    long int a,f;
    cin>>a;
     int *b = new int [a];
     for(int i=0; i<a; i++)
     cin>>b[i];        
            
     for(int k=0; k<a; k++){
             f=0;
             f=b[k];
             if(f==1)
             cout<<"2\n";
             else if(f!=1)
             simple(f);
             
             } 
  
    }
    
 int simple(int f){
     long int b=1;
    int c=0;
    
  for(unsigned long int i=3; i<15000; i+=2){
         c=0;
         for(unsigned long  int k=2; k<=sqrt(i); k++){
                   if (i%k==0)
                   c++;      
                   }
                   if(!c)
                          b++;
                  if(f==b){
                          cout<<i<<"\n";
                          break;
                          return 0;}
          
       }
     
     }
И в Dev c++ всё прекрасно работает. Но тестирующая система выдает следующею ошибку:
2394d50f-45a1-4d8b-96c1-91540d2a1d30
2394d50f-45a1-4d8b-96c1-91540d2a1d30(30) : error C2668: 'sqrt' : ambiguous call to overloaded function
S:\checker\compile\vc10\include\math.h(589): could be 'long double sqrt(long double)'
S:\checker\compile\vc10\include\math.h(541): or 'float sqrt(float)'
S:\checker\compile\vc10\include\math.h(127): or 'double sqrt(double)'
while trying to match the argument list '(unsigned long)'
Как я понял причина в том, что корень берется из целого числа, а должен браться из числа с плавающей запятой. Не долго думаю я заменил unsigned long int на float, чего делать не рекомендуется, и тут же получил другую ошибку, что вполне логично:
8ac29b8a-d7f7-4e4c-9a4d-9560ca0434bc
8ac29b8a-d7f7-4e4c-9a4d-9560ca0434bc(31) : error C2296: '%' : illegal, left operand has type 'float'
И так, как исправить мой код, чтобы он работал в тестирующей системе?

Добавлено через 8 минут
Еще я пробовал изменить функцию simple следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 int simple(int f){
     long int b=1;
    int c=0;
    
  for(unsigned long int i=3; i<15000; i+=2){
         c=0;
         for(unsigned long  int k=1; k<=i; k++){
                   if (i%k==0)
                   c++;      
                   }
                   if(c==2)
                          b++;
                  if(f==b){
                          cout<<i<<"\n";
                          break;
                          return 0;}
          //         cout<<i<<' ';
       }
     
     }
И на моем компьютера программа исполняется мгновенно, но в тестирующей системе получаю Time limit exceeded, так как программа выполняется на одну сотую дольше, чем надо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru