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

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

Войти
Регистрация
Восстановить пароль
 
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
#1

НЕ всё так просто - C++

10.12.2009, 20:56. Просмотров 476. Ответов 6
Метки нет (Все метки)

Привет всем, не могли бы Вы мне помочь решить одну задачку, с ней не всё так просто, как кажется на первый взгляд, я с ней морочу голову довольно долго, пока я написал вот такую штуку
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
#include<cmath>
using namespace std;
 
int main ()
{
    float r = exp(200*log(2));
      
    printf("2 v 200 stepeni ravno %f\n", r);
    system("Pause");
    return 0;
}
Но преподаватель говорит, что программа выводит не полный ответ(а оно и понятно в инте не хватит битов вывести полный ответ), нужно как-то решать через мантису, подскажите, может кто знает, как правильно решать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2009, 20:56     НЕ всё так просто
Посмотрите здесь:

Всё просто - C++
Напечатать все простые числа, не провосходящее заданое число М..... вот код #include &lt;iostream&gt; #define N 150 int...

Не всё то просто, что коротко - C++
На сайте http://www.e-olimp.com.ua/ решение этой задачи не засчитывается. Исправьте, пожалуйста, ошибку Вот условие Вам даны целые...

просто так - C++
int onscreen(FILE *f) { setlocale(LC_ALL,&quot;Rus&quot;); system (&quot;cls&quot;); // очистка консоли rewind (f); // перевод указателя в начало файла...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float a,c; char b; skip: ...

Почему так работает, а так нет? - C++
так работает // Возведение b в степень s по модулю m float powmod(float b, long s) { float c=1; while (s) {

просто 2*2 - C++
написать прогу, выводящую элементы массива в порядке возрастания!!! Добавлено через 14 минут Неужели никто не ответит

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
10.12.2009, 22:26     НЕ всё так просто #2
Игра "угадай что мне нужно"...
Вам нужно 2 возвести в 200 степень без потери точности???
да
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
#include<iostream>
 
int main()
{
    int const dimm =60;//60 магическое число, ага.(2^200=1.xxx*10^60)
    int base = 10;// можно любую, с 10 проще ввод-вывод организовывать.
    int a[dimm];
    for(int i=0;i<dimm;i++) a[i]=0;
    
    a[1]=1;
    for(int i=1;i<=200;i++)
    {
        for(int j=0;j<dimm;j++) a[j]*=2;// чтоб не париться, умножаем всё
        for(int j=0;j<dimm-1;j++)
            if(a[j]>=base) //проверка на перенос
            { 
                    a[j+1] +=(a[j]-a[j]%base)/base;//перенос в старший разряд   
                    a[j] =a[j]%base;
            }
    }
    printf("2^200 = ");
    for (int i=dimm-1;i>=0;i--) printf("%u",a[i]);
    printf("\n  ");system("pause");
    return 0;
}
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
10.12.2009, 23:32     НЕ всё так просто #3
два в степени 200=
C++
1
2^200
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
10.12.2009, 23:40     НЕ всё так просто #4
Vladimir., почему массив на 60 элементов? 2 в 200 степени - это сдвиг числа 10(2) на 200 позиций влево. Итого 202 бита - 25 байт и 2 бита => 26 байт => 7 элементов типа int
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
11.12.2009, 00:18     НЕ всё так просто #5
M128K145, так там
int base = 10;
Vladimir., 1.xxx*10^60 - это 61 цифра, а не 60.
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
11.12.2009, 02:08     НЕ всё так просто #6
M128K145, только для облегчения вывода на консоль один элемент - один знак, удобно.
Somebody, верно, но в данном случае не влияет на ответ.
МедведЪ, о, тут всё просто: если у "заказчика" написано "2 v 200 stepeni", то верным будет писать: 2 в 200-ой степени.
ISergey
11.12.2009, 02:38     НЕ всё так просто
  #7

Не по теме:

Цитата Сообщение от Vladimir. Посмотреть сообщение
МедведЪ, о, тут всё просто: если у "заказчика" написано "2 v 200 stepeni", то верным будет писать: 2 в 200-ой степени
, наганяй ему нужно чтобы меньше флудил.. (хотя сам скоро договорюсь )

Yandex
Объявления
11.12.2009, 02:38     НЕ всё так просто
Ответ Создать тему
Опции темы

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