Консультация № 189522
30.05.2016, 14:44
0.00 руб.
1 1 1
Здравствуйте! Помогите, пожалуйста, найти ошибку в коде!


Приложение:
#include <stdio.h>
#include <stdlib.h>

double arr_proc(double *arr, int n, double * psum)

{
double prod=0;
int i=0,j=0,maxi,mini;
double min,max;

min=arr[0];
max=arr[0];
/*
for(i = 0;i < n; i++)\\нахождение макс и мин и их положения в массиве
{
if(arr[i]<= min)
{
min = arr[i];
mini = i;
}
if(arr[i]>= max)
{
max = arr[i];
maxi = i;
}
}*/

for(i = 0 ; i < n - 1; i++) //сортировка пузырьком
{
for(j = 0 ; j < n - i - 1 ; j++)
{
if(arr[j] > arr[j+1]) //если меньше, меняем местами со след
{
double tmp = arr[j];

arr[j] = arr[j+1] ;
arr[j+1] = tmp;
}
}
}

printf("\nОтсортированная матрица\n");//вывод отсортированной
for(i = 0; i < n; i++)
printf("%3.1lf ",arr[i]);
printf("\n");

min = arr[0];//мин на начале массива
max = arr[n-1];//макс на конце, т.к массив по возрастанию

printf("\nmin = %3.1lf \n max = %3.1lf\n\n",min,max);

for(i = 0; i < n; i++)//сумма отрицатльных
if(arr[i]<0)
psum+=arr[i];

for(i = 1; i < n-1; i++)//сумма отрицатльных
prod+=arr[i];

return prod;
}

double arr_proc(double *arr, int n, double * psum);
int main()
{

system ("chcp 1251");
srand (time(NULL));
int n=0,i=0;

double prod=0;

double psum=0;
printf("\nРазмер массива:");
scanf("%d", &n);
double *arr = (double*)malloc(sizeof(double)*n);

for(i = 0; i < n; i++)arr[i] = rand()%21-10;//создание массива

for(i = 0; i < n; i++)
printf("%3.1lf ",arr[i]);
printf("\n");
/*
for(i = 1;i < n-1; i++) //сумма отрицательных
prod += arr[i];
printf("\nСумма отрицательных= %3.1lf\n",psum);
*/

prod=arr_proc(arr,n,psum);//вызов функции

printf("\nСумма элементов между max и min= %3.1lf\n",prod);

system ("pause");
return 0;
}
Прикрепленные файлы:
d0e5132af2120447a68c5787d9953348c436e183.jpg

Обсуждение

давно
Посетитель
7438
7205
30.05.2016, 18:56
общий
это ответ
Здравствуйте, dasha.com!
Вот, подправил малость
[code h=200]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

double arr_proc(double *arr, int n, double * psum)
{
double prod=1;
int i=0,j=0;
double min,max;

for(*psum=0,i=0; i<n; i++)//сумма отрицательных
if(arr[i]<0)
*psum+=arr[i];


for(i=0; i<n-1; i++) //сортировка пузырьком
{
for(j=i+1; j<n; j++)
{
if(arr[i] > arr[j]) //если меньше, меняем местами со след
{
double tmp = arr[i];
arr[i] = arr[j] ;
arr[j] = tmp;
}
}
}

printf("\nОтсортированная матрица\n");//вывод отсортированной
for(i=0; i<n; i++)
printf("%3.1lf ",arr[i]);
printf("\n");

min = arr[0];//мин на начале массива
max = arr[n-1];//макс на конце, т.к массив по возрастанию

printf("\nmin = %3.1lf \nmax = %3.1lf\n\n",min,max);

for(i = 1; i < n-1; i++)//произведение элементов между min и max
prod*=arr[i];

return prod;
}

double arr_proc(double *arr, int n, double * psum);
int main()
{

system ("chcp 1251 > nul");
srand (time(NULL));
int n=0,i=0;

double prod=0;

double psum=0;
printf("\nРазмер массива: ");
scanf("%d", &n);
double *arr = (double*)malloc(sizeof(double)*n);

for(i = 0; i < n; i++)
arr[i] = (double)(rand()%201-100)/10;//создание массива

for(i = 0; i < n; i++)
printf("%3.1lf ",arr[i]);
printf("\n");

prod=arr_proc(arr,n,&psum);//вызов функции

printf("\nСумма отрицательных= %.1f\nПроизведение элементов между max и min= %.1lf\n", psum, prod);

system ("pause");
free(arr);
return 0;
}
[/code]
5
Огромное спасибо, вы очень выручили меня!!!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа