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

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

Войти
Регистрация
Восстановить пароль
 
pretty
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 24
#1

Программа всегда выдаёт всегда одно и то же - C++

10.11.2013, 20:59. Просмотров 489. Ответов 3
Метки нет (Все метки)

Суть программы в том, что из вводимого массива программа выбирает нечётные числа, перемножает их и вычисляет из этого произведения корень той степени, сколько нечётных чисел содержится в массиве. Всё работает, но ответ всегда равен единице. Например, если ввести 5 чисел: 1, 2, 9, 4, 8, то программа умножает 1*9 и извлекает квадратный корень(т.к. нечётных чисел 2). Ответ 3. Помогите исправить, чтобы заработало правильно. Заранее спасибо.
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
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int n; 
    cout<<"n=";
    cin>>n;
    int a[10],k=0;
    float t, s, sn=1;
    for (int i=0;i<n;++i)
    {cout<<"a["<<i<<"]=";
    cin>>a[i];
    if ((a[i]%2))
        {s=sn*a[i];++k;
    sn==s;}
    t=1/k;
    }
    if (k) cout<<"sr="<<pow(double(s), double(t))<<endl;
    else 
    {cout<<"nech chisel net"<<endl;}
    system("pause");
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 20:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа всегда выдаёт всегда одно и то же (C++):

Программа всегда выводит одно и тоже значение при разных вводимых данных - C++
Не думаю, что дело в коде, но значение всегда выводилось n = 2 и pos = 2. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Почему-то всегда выдаёт неверный ввод - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;string.h&gt; using namespace std; int main() { int cancel_program; ...

Рандом выводит всегда одно и тоже число - C++
mass=rand(); всегда выводит число ниже, что делать? -842150451

Орел-решка, всегда одно и тоже значение - C++
При компиляции каждый раз получаю ответ &quot;Решка&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { ...

Объяснить почему sizeof(arr) всегда возвращает одно и то же значение - C++
Начал изучать динамические массивы. Какое бы n я ни вводил, всегда создается массив из 4 элементов. Что я упустил? #include...

Программа не всегда работает правильно - C++
Всем добрый вечер. Реализовал программу, подсчитывающую корень уравнения методом касательных(Ньютона). В качестве примера использовал...

3
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
10.11.2013, 21:10 #2
строки 15-16 замените на { s=sn*a[i]; ++k; s=sn;}
0
pretty
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 24
10.11.2013, 21:14  [ТС] #3
Цитата Сообщение от Cra3y Посмотреть сообщение
строки 15-16 замените на { s=sn*a[i]; ++k; s=sn;}

Даже вот так не работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int n; 
    cout<<"n=";
    cin>>n;
    int a[5],k=0;
    float s=1;
    for (int i=0;i<n;++i)
    {cout<<"a["<<i<<"]=";
    cin>>a[i];
    if ((a[i]%2))
        {s*=a[i];++k;}
    }
    if (k) {cout<<"sr="<<pow(double(s), double(1/k))<<endl;}
    else 
    {cout<<"nech chisel net"<<endl;}
    system("pause");
    
}
0
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
10.11.2013, 21:30 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int n; 
    cout<<"n=";
    cin>>n;
    int a[5],k=0;
    float s=1;
    for (int i=0;i<n;++i) {
        cout<<"a["<<i<<"]=";
        cin>>a[i];
        if ((a[i]%2)) {
            s*=a[i];
            ++k;}
    }
    if (k) {
        cout<<"sr="<<pow(double(s), double(1.0/k))<<endl;}
    else {
        cout<<"nech chisel net"<<endl;}
    
}
дело было в том что 1/k равно 1 при к=1 и равно 0 в других случаях, так как тут 1 - целое число и происходит целочисленное деление
Нужно явно указывать что делимое - дробное число
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 21:30
Привет! Вот еще темы с ответами:

Программа всегда считает условия ложными - C++
Здравствуйте, не понимаю почему программа не работает. Ведь всё правильно указано, условия заданы, но программа считает их ложными, оба...

Программа всегда выводит последний из всех телефонов АТС с заданной цифрой - C++
Подскажите, пожалуйста, где ошибка. Минимальную цену находит правильно. А номер телефона выводит неправильно. Всегда выводит последний из...

Как сделать что бы программа всегда была "поверх" всех окон - C++
какую команду в скрипте нужно ввести, что бы программа была по верх всех окон? Заранее спасибо

Почему всегда 1 ? - C++
В общем было задание написать функцию по переводу из лет в месяца: #include &lt;iostream&gt; using namespace std; int years(int); int...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
10.11.2013, 21:30
Ответ Создать тему
Опции темы

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