Одномерные массивы. Помогите,пожалуйсто !
В одномерном массиве, состоящем из n вещественных элементов, вычислить :
1) Сумму положительных элементов массива;
2) Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Упорядочить элементы массива по убыванию.
1) Сумму положительных элементов массива;
2) Произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Упорядочить элементы массива по убыванию.
ICQ 395546[двести+восемнадцать]
мыло [ник на форуме]@mail.ru
помогу за вознаграждение
мыло [ник на форуме]@mail.ru
помогу за вознаграждение
Не на ФЭТ учишься (потом удивляешься, что за программисты у нас с вышкой, самоучки и то умнее)? задача-то с 1-го курса, я ещё помню её решал на turbo pascal.
если актуально, пиши в личку или на Nexx_MP@mail.ru
если актуально, пиши в личку или на Nexx_MP@mail.ru
1 - делается в один цикл. Полистайте учебник, не ленитесь.
2 - поиск максимума и минимума (только сравниваться будут не сами элементы, а их модули), потом нахождение их номеров, определение, какой из номеров больше, какой меньше, и цикл от меньшего к большему с перемножением всех элементов.
2 - поиск максимума и минимума (только сравниваться будут не сами элементы, а их модули), потом нахождение их номеров, определение, какой из номеров больше, какой меньше, и цикл от меньшего к большему с перемножением всех элементов.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Я сделала уже давно ))- Спасибо )
Ну как сделала )
Там 4 ошибки выдаёт - не исправить (
/*
*
* В одномерном массиве состоящем из n вещественных элементов вычислить:
* 1) сумму положительных элементов
* 2) произведение элементов массива стоящих между максимальным по модулю
* и минимальным по модулю элементами.
* Упорядочить элементы массива по убыванию.
*
*/
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
cout << "Enter n: "; // Ввод количества элементов массива
cin >> n;
float *arr = new float [n]; // Создание массива
for (int i = 0; i <= n-1; i++)
{
cout << "Enter element number " << i + 1 << " : "; // Ввод элементов массива
cin >> arr;
}
float summ = 0; // Сумма положительных элементов
int maxelem, minelem; // Номера максимального и минимального элементов
maxelem = minelem = 0;
for (int i = 0; i <= n-1; i++) // Цикл для обхода массива
{
if (arr > 0)
summ += arr; // Сумма положительных элементов
if (fabs(arr) > fabs(arr[maxelem])) maxelem = i; // Определение номера максимального по модулю элемента
if (fabs(arr) < fabs(arr[minelem])) minelem = i; // И минимального
}
cout << "Summ of positive elements = " << summ << endl; // Вывод суммы положительных елементов
if (abs(maxelem - minelem) > 1) // Если между максимальным и минимальным по модулю элементами
{ // есть элементы
int stelem = (maxelem < minelem ? maxelem : minelem); // Определяем какой из максимального и минимального элементов
int endelem = (maxelem < minelem ? minelem : maxelem); // имеет меньший номер
float multipl = 1;
for (int i = stelem + 1; i < endelem; i++)
multipl *= arr; // Произведение промежуточных элементов
cout << "Product of elements between max and min = " << multipl << endl; // Вывод полученного произведения
}
else
cout << "No elements between max and min.";
cout << "Source array:\n[";
for (int i = 0; i <= n-1; i++) // Вывод исходного массива
cout << arr << (i < n-1 ? ", " : "]\n"); //
// Сортировка массива методом сравнения
float temp; // Переменная для временного хранения значения элемента при обмене
for (int i = 0; i < n-1; i++) // Проход всего массива кроме последнего элемента
{
for (int j = i + 1; j <= n-1; j++) // Проход оставшейся части массива
{
if (arr < arr[j]) // Сравнение текущего элемента с элементом из оставшейся части.
{
temp = arr; // Обмен значений элементов если они стоят в неправильном порядке
arr = arr[j];
arr[j] = temp;
}
}
} // Конец сортировки
cout << "Array sorted by decreasing:\n[";
for (int i = 0; i <= n-1; i++) // Вывод отсортированного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
delete [] arr;
return 0;
}
Ну как сделала )
Там 4 ошибки выдаёт - не исправить (
/*
*
* В одномерном массиве состоящем из n вещественных элементов вычислить:
* 1) сумму положительных элементов
* 2) произведение элементов массива стоящих между максимальным по модулю
* и минимальным по модулю элементами.
* Упорядочить элементы массива по убыванию.
*
*/
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
cout << "Enter n: "; // Ввод количества элементов массива
cin >> n;
float *arr = new float [n]; // Создание массива
for (int i = 0; i <= n-1; i++)
{
cout << "Enter element number " << i + 1 << " : "; // Ввод элементов массива
cin >> arr;
}
float summ = 0; // Сумма положительных элементов
int maxelem, minelem; // Номера максимального и минимального элементов
maxelem = minelem = 0;
for (int i = 0; i <= n-1; i++) // Цикл для обхода массива
{
if (arr > 0)
summ += arr; // Сумма положительных элементов
if (fabs(arr) > fabs(arr[maxelem])) maxelem = i; // Определение номера максимального по модулю элемента
if (fabs(arr) < fabs(arr[minelem])) minelem = i; // И минимального
}
cout << "Summ of positive elements = " << summ << endl; // Вывод суммы положительных елементов
if (abs(maxelem - minelem) > 1) // Если между максимальным и минимальным по модулю элементами
{ // есть элементы
int stelem = (maxelem < minelem ? maxelem : minelem); // Определяем какой из максимального и минимального элементов
int endelem = (maxelem < minelem ? minelem : maxelem); // имеет меньший номер
float multipl = 1;
for (int i = stelem + 1; i < endelem; i++)
multipl *= arr; // Произведение промежуточных элементов
cout << "Product of elements between max and min = " << multipl << endl; // Вывод полученного произведения
}
else
cout << "No elements between max and min.";
cout << "Source array:\n[";
for (int i = 0; i <= n-1; i++) // Вывод исходного массива
cout << arr << (i < n-1 ? ", " : "]\n"); //
// Сортировка массива методом сравнения
float temp; // Переменная для временного хранения значения элемента при обмене
for (int i = 0; i < n-1; i++) // Проход всего массива кроме последнего элемента
{
for (int j = i + 1; j <= n-1; j++) // Проход оставшейся части массива
{
if (arr < arr[j]) // Сравнение текущего элемента с элементом из оставшейся части.
{
temp = arr; // Обмен значений элементов если они стоят в неправильном порядке
arr = arr[j];
arr[j] = temp;
}
}
} // Конец сортировки
cout << "Array sorted by decreasing:\n[";
for (int i = 0; i <= n-1; i++) // Вывод отсортированного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
delete [] arr;
return 0;
}
Ксенияя
какие ошибки?
какие ошибки?
Код: Выделить всё
/*
*
* В одномерном массиве состоящем из n вещественных элементов вычислить:
* 1) сумму положительных элементов
* 2) произведение элементов массива стоящих между максимальным по модулю
* и минимальным по модулю элементами.
* Упорядочить элементы массива по убыванию.
*
*/
#include <iostream>
#include <math.h>
using std::cin;
using std::cout;
using std::endl;
int main(){
int n,i,j,
maxelem, minelem; // Номера максимального и минимального элементов
float summ = 0, // Сумма положительных элементов
temp;
cout << "Enter n: "; // Ввод количества элементов массива
cin >> n;
float *arr = new float [n]; // Создание массива
for (i = 0; i < n; i++){
cout << "Enter element number " << i + 1 << " : "; // Ввод элементов массива
cin >> arr[i];
}
maxelem = minelem = 0;
for (maxelem=minelem=i=summ=0;i<n;i++){
if (arr[i] > 0) summ += arr[i]; // Сумма положительных элементов
if (fabs(arr[i]) > fabs(arr[maxelem])) maxelem = i; // Определение номера максимального по модулю элемента
if (fabs(arr[i]) < fabs(arr[minelem])) minelem = i; // И минимального
}
cout << "Summ of positive elements = " << summ << endl; // Вывод суммы положительных елементов
if (abs(maxelem - minelem) > 1){ // Если между максимальным и минимальным по модулю элементами
// есть элементы
int stelem = (maxelem < minelem ? maxelem : minelem); // Определяем какой из максимального и минимального элементов
int endelem = (maxelem < minelem ? minelem : maxelem); // имеет меньший номер
for (i = stelem + 1,temp = 1; i < endelem; i++)
temp *= arr[i]; // Произведение промежуточных элементов
cout << "Product of elements between max and min = " << temp << endl; // Вывод полученного произведения
}
else
cout << "No elements between max and min.";
cout << "Source array:\n[";
for (i = 0; i < n; i++) // Вывод исходного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
// Сортировка массива методом сравнения:
for (int i = 0; i < n-1; i++) // Проход всего массива кроме последнего элемента
for (int j = i + 1; j <= n-1; j++) // Проход оставшейся части массива
if (arr[i] < arr[j]){ // Сравнение текущего элемента с элементом из оставшейся части.
temp = arr[i]; // Обмен значений элементов если они стоят в неправильном порядке
arr[i] = arr[j];
arr[j] = temp;
}
cout << "Array sorted by decreasing:\n[";
for (i = 0; i < n; i++) // Вывод отсортированного массива
cout << arr[i] << (i < n-1 ? ", " : "]\n"); //
delete [] arr;
cin.get(),cin.get();
return 0;
}
забыла i и j инициализировать ))
всё хорошо)
всё работает )
спасибо !
всё хорошо)
всё работает )
спасибо !