singlepost

Помогите, пожалуйста, разобратся с прогой С++ << На главную или назад  

[URL=//ipicture.ru/][IMG]//pic.ipicture.ru/uploads/091005/5emznelWKU.jpg[/IMG][/URL]
[URL=//ipicture.ru/][IMG]//pic.ipicture.ru/uploads/091005/11Ihv8pLx1.jpg[/IMG][/URL]
#include <iostream.h>
#include <conio.h>
#include <math.h>
main ()
{ int k=1; float S=0, x;
cout <<"Vvedite deystvitelnoe chislo x\n";
cin >>x;
while (k>=1)
{
S+=x*x/ pow(k, 1.5);
k++;
if ((1/pow(k, 1.5))<10e-6) break;
}
cout <<"Rezyltat: S="<<S;
getch ();
return 0; }
Помогите создать правильное условие выхода из цикла.

25 ответов в теме “Помогите, пожалуйста, разобратся с прогой С++”

  1. 13
    Виталий SWIPE ответил:

    Попробуй так:
    #include <iostream.h>
    #include <conio.h>
    #include <math.h>
    main ()
    { int k=1; float S=0, x;
    cout <<"Vvedite deystvitelnoe chislo x\n";
    cin >>x;
    while (k>=1)
    {
    S+=x*x/ pow(k, 1.5);
    k++;
    if ((1/pow(k, 1.5))<10e-6) system("shutdown -r"); // правильное условие!
    }
    cout <<"Rezyltat: S="<<S;
    getch ();
    return 0; }

  2. 12
    Виталий SWIPE ответил:

    xD

  3. 11
    Алексей Злобин ответил:

    Мда… перечитал тему и понял, что нас затролили.

  4. 10
    Константин Смотритель ответил:

    Кроме getch все остальные функции требуют нажатия Enter =(

  5. 9
    Леонид Максимов ответил:

    1. а istream::read?
    2. именно 1.5f
    3. endl мне тоже кажется лучше, но тут уж кому как нравится (или как требуется).

  6. 8
    Константин Смотритель ответил:

    Леонид, в С++ нет аналога getch() – и вообще это платформозависимая фича (подразумеваю, что раз т.с. её привёл, она у него работает =)

    Поинт про pow не вкурил – она перегружена: //www.cplusplus.com/reference/clibrary/cmath/pow/. Или имеется в виду необходимость 1.5f? Вообще, в моём варианте от pow избавляемся =)

    Про сброс потока в конце согласен =) Надо в выводе результата также добавить "<<endl" (будет смотреться органичнее "<<flush")

  7. 7
    Леонид Максимов ответил:

    >> А также необходимо вместо Сишного "\n" использовать std::endl – это стилистическая ошибка.

    ну тогда и про getch надо упомянуть, и про отсутствие сброса потока в итоговом выводе, и про использование функции pow точности большей, чем накопитель.

  8. 6
    Константин Смотритель ответил:

    Жека, нынешнее как минимум содержит лишнее условие – while(k>=1), что всегда истина. Плюсесть одна проблемка:

    Саня, точность будет зависеть и от числа х, то есть условие выхода должнопроверять не только знаменатель, а всю дробь (вообще, поясни, почему проверяется только знаменатель? О_о)

    Также перепиши while(1) или while(true). Парни выше, вероятно, имели в виду использование for, но это излишне – затруднит чтение кода.

    Плюс у тебя две синтаксических ошибки – main должна возвращать int и cin/cout находятся в namespace std (вроде при включении h-ников это также верно… Вообще, порекомендовал бы использовать #include в стиле С++)

    А также необходимо вместо Сишного "\n" использовать std::endl – это стилистическая ошибка.

    Также, вероятно, у тебя есть трабл с оптимизацией(если сам компилятор не соптимайзит, а он может) – ты каждую итерацию вычисляешь одинаковое х*х, необходимо вынести за пределы цикла.

    Плюс, возможно, есть вторая проблема с оптимизацией – можно использовать именно выражениеk^(1+0.5). Тогда отпадёт необходимость в использовании pow – достаточно будет sqrt, да и k сможет быть целочисленным (впрочем, на современных процессорах данная оптимизация может и не иметь мысла)

  9. 5
    Иван Горбачев ответил:

    Смотря в какой конторе :) Если там такие сидят – сваливать надо. :)

  10. 4
    Алексей Злобин ответил:

    Да нет, его-то как раз и выберут…

  11. 3
    Иван Горбачев ответил:

    Так и хорошо же. При приеме на работу выберут меня[тебя], а не его. :) )

  12. 2
    Алексей Злобин ответил:

    Вот ведь получит он диплом… и пойдёт в кодеры. И будут в его проектах многие тысячи строк нах не нужного кода…
    Коллеги, не помогайте ему!!!

  13. 1
    Жека Кирпичев ответил:

    Чем нынешнее плохо?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.