Вычислить сумму модулей элементов массива расположенных после минимального по модулю элемента

l1merain

в одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество отрицательных элементов массива; 2) сумму модулей элементов массива, расположенных после минимального по модулю элемента. 3) Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.Первое задание сделал , остальное хз))
#include <stdio.h>
#include <conio.h>
int o;
int i;
****** a[10];
int main () 
{
o = 0; 
for(i = 0; i < 8; i++) 
{
scanf("%lf", &a[i]);
}
for(i = 0; i < 8; i++)
{
if(a[i] < 0) o ++;
}
printf("Otr - %d\n", o);
getch();
return 0;
}
3 ответа

l1merain

2) сумму модулей элементов массива, расположенных после минимального по модулю элемента.
1. Функция fabs
#include <math.h>
float fabsf(float num);
****** fabs(****** num);
long ****** fabsl(long ****** num);
Функции fabsf() и fabsl() добавлены в версии С99. Каждая функция семейства fabs() возвращает абсолютное значение аргумента num. ПримерДанная программа дважды выводит на экран число 1.0
#include <math.h>
#include <stdio.h>
 
int main(void)
{
  printf("%1.1f %1.1f", fabs(1.0), fabs(-1.0));
 
  return 0;
}
2. Заводите переменную например min , в которой будет хранится минимальный элемент. Для начала помещаете в нее первый элемент массива (и где-то запоминаете индекс помещенного элемента) и сравниваете со следующим. Если следующий меньше того, который хранится в переменной, то помещаете тогда его в переменную (ну и индекс который сохранили. естественно тоже меняете на индекс нового элемента) и сравниваете дальше ... короче поэлементно весь массив проходите и таким образом в вашей переменной min окажется самый минимальный по модулю элемент. а также у вас есть индекс этого элемента. Ну а после этого начиная с этого индекса суммируете все элементы.Ну а потом последним займетесь(3-м заданием)


l1merain

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
int o;
int i;
****** a[10];
 
int main () 
{
o = 0; 
for(i = 0; i < 8; i++) 
{
scanf("%lf", &a[i]);
}
for(i = 0; i < 8; i++)
{
if(a[i] < 0) o ++;
}
float min, sum, min_element;
min = fabs(a[0]);
sum = 0;
for (int i = 0; i < 8; i++)
 if (fabs(a[i]) < min)
    {
      min = fabs(a[i]);
      min_element = i;
    }
   for (int i = 0; i != min_element; i++)
    sum += fabs(a[i]);
   printf("%d", sum);
printf("Otr - %d\n", o);
getch();
return 0;
}
что я не так сделал? прога крашит, сильно не ругайтесь я только учусь проги писать


l1merain

Вот что тебе нужно в твоей изменить:1. Вот такими объяви типы (то бишь почти все флоат)
int i;
 
float min, sum, min_element,  a[10], o;
2.Везде где выводишь, соответственно нужно поменять на %f , то бишь надо вот так:
 printf("%f", sum);
но результат оно будет не тот выводить. Чтобы выводило тот, пересмотри вот этот участок:
 for (int i = 0; i != min_element; i++)
    sum += fabs(a[i]);