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

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

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

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

10.11.2013, 20:59. Просмотров 471. Ответов 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");
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 20:59     Программа всегда выдаёт всегда одно и то же
Посмотрите здесь:

Программа всегда выводит последний из всех телефонов АТС с заданной цифрой C++
in_avail() всегда возвращает 0. C++
C++ Программа не всегда работает правильно
C++ Почему-то всегда выдаёт неверный ввод
Как сделать что бы программа всегда была "поверх" всех окон C++
Рандом выводит всегда одно и тоже число C++
Почему всегда выполняется условие? C++
C++ Программа всегда считает условия ложными
C++ Программа всегда выводит одно и тоже значение при разных вводимых данных
C++ Объяснить почему sizeof(arr) всегда возвращает одно и то же значение
C++ Орел-решка, всегда одно и тоже значение
Почему выводит всегда 0? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
1609 / 1410 / 505
Регистрация: 09.10.2013
Сообщений: 3,198
Записей в блоге: 8
Завершенные тесты: 2
10.11.2013, 21:10     Программа всегда выдаёт всегда одно и то же #2
строки 15-16 замените на { s=sn*a[i]; ++k; s=sn;}
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");
    
}
Max Dark
В поиске работы
1609 / 1410 / 505
Регистрация: 09.10.2013
Сообщений: 3,198
Записей в блоге: 8
Завершенные тесты: 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 - целое число и происходит целочисленное деление
Нужно явно указывать что делимое - дробное число
Yandex
Объявления
10.11.2013, 21:30     Программа всегда выдаёт всегда одно и то же
Ответ Создать тему
Опции темы

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