|
Вопрос # 4 854/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Решите пожалуйста задачу на массивы:
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество отриц. элементов массива;
2) сумму модулей элементов массива, расположенных после минимального по модулю элемента. Заменить все отриц. элементы массива их квадратами и упорядочить элементы массива по возрастанию.
 |
Вопрос задал: skipper102 (статус: Посетитель)
Вопрос отправлен: 23 декабря 2010, 19:41
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну вот как-то так:
#include <cstdlib>
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
/*
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) количество отриц. элементов массива;
2) сумму модулей элементов массива, расположенных после минимального по
модулю элемента.
3) Заменить все отриц. элементы массива их квадратами.
4) Упорядочить элементы массива по возрастанию.
*/
#define n 10 // длина массива
// Заполнение массива случайными значениями
void MakeArray(double *X)
{
for (int Index = 0; Index != n; Index++)
X[Index] = (double)(rand() - rand()) / 0xfc;
}
// Подсчёт отрицательных элементов массива
unsigned GetNegativeCount(double *X)
{
unsigned Count = 0;
for (int Index = 0; Index != n; Index++)
if (X[Index] < 0) Count++;
return Count;
}
// Вычисление суммы модулей элементов массива,
// расположенных после минимального по модулю элемента.
double GetSum(double *X, unsigned *MinIndex)
{
double Min = fabs(X[0]), Sum = 0.0;
*MinIndex = 0;
for (int Index = 1; Index != n; Index++)
if (fabs(X[Index]) < Min)
{
Min = fabs(X[Index]);
*MinIndex = Index;
}
for (int Index = 0; Index != *MinIndex; Index++)
Sum += fabs(X[Index]);
return Sum;
}
// Замена все отриц. элементы массива их квадратами.
void NegativeToSquare(double *X)
{
for (int Index = 0; Index != n; Index++)
if (X[Index] < 0)
X[Index] *= X[Index];
}
// Сортировка по возрастанию
void Sort(double *X)
{
double Temp;
for (int Index1 = 0; Index1 != n; Index1++)
for (int Index2 = Index1; Index2 != n; Index2++)
if (X[Index1] > X[Index2])
{
Temp = X[Index1];
X[Index1] = X[Index2];
X[Index2] = Temp;
}
}
// Вывод массива на консоль
void OutArray(double *X)
{
for (int Index = 0; Index != n; Index++)
printf(" %0.2f", X[Index]);
printf("\n");
}
int main(int argc, char *argv[])
{
double X[n]; // массив из n элементов
double Sum; // сумма модулей элементов массива,
// расположенных после минимального по модулю элемента.
unsigned MinIndex; // номер элемента, минимального по модулю
MakeArray(X);
printf("Source array:\n");
OutArray(X);
printf("\nNegative items: %d\n", GetNegativeCount(X));
Sum = GetSum(X, &MinIndex);
printf("\nSum of absolute values before absolute minimum (%0.2f): %0.2f\n", X[MinIndex], Sum);
printf("\nAfter changes negative items to it's squares:\n");
NegativeToSquare(X);
OutArray(X);
printf("\nArray after sorting:\n");
Sort(X);
OutArray(X);
printf("\n\n");
system("PAUSE");
return EXIT_SUCCESS;
}
Экзешник прицепляю к ответу. К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 24 декабря 2010, 09:56
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 28 декабря 2010, 23:06; участников в обсуждении: 4.
|
min@y™ (статус: Доктор наук), 23 декабря 2010, 20:53 [#1]:
Скажи мне, уважаемый, а почему ты не можешь сделать эту лабу самостоятельно? Это ж элементарщина!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
skipper102 (статус: Посетитель), 23 декабря 2010, 21:09 [#2]:
Я знаю, что это элементарщина, но у меня получается неправильно, я начал был делать, вот:
s = 0;
for(i=1;i<=N;i++)
{
si = 0;
for(j=1;j<=i;j++)
si+=sin((double) i );
s+=1.0/si;
}
cout << s;
2 задача
кол-во отриц. элем.
int k = 0;
for(i=0; i < n ; i++)
if ( a [ i ] < 0) k++;
|
|
bugmenot (статус: 3-ий класс), 23 декабря 2010, 23:10 [#3]:
это -- другой вариант
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
min@y™ (статус: Доктор наук), 25 декабря 2010, 12:00 [#4]:
Цитата (skipper102):
Оценка за ответ: 5
А где коммент? Подошло или как? Правильно ли работает?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
eclipse (статус: Посетитель), 28 декабря 2010, 23:06 [#5]:
пипец!
1-м те надо найти отрицательные элемементы... это те которые меньше 0!
2- короче тупо в мясо ве значения которые меньше по модулю и всё!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|