Сомнение относительно функции precision( ) в C++
Дан массив размера n и несколько значений, вокруг которых нам нужно повернуть массив влево.
Ввод:
Первая строка состоит из T-тестового случая. Первая строка каждого тестового случая состоит из N и K, где N обозначает количество элементов массива, А K - количество мест для сдвига. Вторая строка каждого тестового случая состоит из элементов массива.
Выход:
Однострочный вывод, печать повернутого массива.
Ограничения:
1<=T<=100
1<=N<=10^4
1<=K<=10^4
Пример:
Ввод:
1
5 14
1 3 5 7 9
Выход:
9 1 3 5 7
Мой код прилагается здесь, хотя я получаю правильный ответ, но есть небольшая разница (.000004) в желаемом выходе и ожидаемом выходе (это касается использования функции точности), что я должен изменить здесь?
Что я уже пробовал:
Мой код таков-
#include<iostream> #include<cmath> #include<iomanip> using namespace std; int main() { int t; cin>>t; while(t--) { int set_size,i; cin>>set_size; int arr[set_size]; for(i=0;i<set_size;i++) { cin>>arr[i]; } unsigned int pow_set_size = pow(2, set_size); int counter, j; float sum_avg=0; cout<<fixed<<setprecision(6); /*Run from counter 000..0 to 111..1*/ for(counter = 0; counter < pow_set_size; counter++) { float avg,sum=0;int no=0; for(j = 0; j < set_size; j++) { /* Check if jth bit in the counter is set If set then pront jth element from set */ if(counter & (1<<j)) { // cout<<arr[j]; sum+=arr[j]; no++; // int no=0,sum=0,digit; // float avg; // while(arr[j]!=0) // { // digit=arr[j]%10; // sum=+digit; // arr[j]/=10; // no++; // // } // avg=sum/no; // // // overall_sum+=avg; // cout<<"overall_sum="<<overall_sum<<endl; } } if(sum!=0) {avg=sum/no; cout<<"avg= "<<avg; sum_avg+=avg; } cout<<endl; } // cout<<fixed<<setprecision(6); cout<<sum_avg<<endl; } return 0; } //1 //3 //2 3 5 //Its Correct output is: //23.333333 //And Your Output is: //23.333334
Patrice T
Вставленный вами оператор не имеет отношения ни к вашей проблеме, ни к вашему коду.
chunky77
Я думаю, что, возможно, я не использую функцию precision( ) должным образом.