Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
furrio
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 24
#1

Одномерный массив - C++

24.02.2012, 00:48. Просмотров 678. Ответов 11
Метки нет (Все метки)

В одномерном массиве состоящем из n-вещественных элеметов, вычислить:
1. Кол-во отрицательных элементов,
2. Сумму модулей элементов, расположенных после минимального по модулю элемента.
Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2012, 00:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерный массив (C++):

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив - C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Массив: Все элементы массива, кратные трем, записать в одномерный массив. - C++
Дан двумерный массив размером n x n? заполненный целыми числами. Все его элементы кратные трем, записать в одномерный массив.

Переписать произвольный одномерный массив в другой массив в обратном порядке - C++
Помогите написать прогу, вот задание. Переписать произвольный одномерный массив в другой массив в обратном порядке.

Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив - C++
Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив. #include <iostream> using namespace std; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
samdavydov
60 / 21 / 2
Регистрация: 23.02.2012
Сообщений: 36
24.02.2012, 00:55 #2
1. Количество отрицательных элементов - это количество элементов меньше нуля.
Если есть массив a размером n, то запустив индекс i от 0 до n-1, можно проверять a[i] < 0 и увеличивать счетчик, если это так.

Напиши хотя бы это.
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
24.02.2012, 00:55 #3
Вылажите что у Вас на данном этапе получилось!
0
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
24.02.2012, 01:40 #4
Цитата Сообщение от furrio Посмотреть сообщение
вычислить
1. Кол-во отрицательных элементов
.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <ctime>
#include <cstdlib>
 
template<class Type>    void RandomInput(Type * array, int size);
template<class Type>    void ShowArray(Type * array, int size);
template<class Type>    int SuperFunct(Type * array, int size);
 
int main()
{
    int n = 10;
    int * arr = new int[n];
 
    RandomInput(arr,n);
    ShowArray(arr,n);
 
    std::cout << "\nКол-во элементов меньших нуля =  " << SuperFunct(arr,n);
 
    delete[] arr;
 
    return 0;
}
template<class Type>    int SuperFunct(Type * array, int size)
{
    int count = 0;
    for(int i=0; i<size; i++)
        if(array[i] < 0)    count++;
 
    return count;
}
 
template<class Type>    void RandomInput(Type * array, int size)
{
    srand(time(NULL));
 
    int _n = rand()%200;
 
    for(int i=0; i<size; i++)
        array[i] = rand()%_n - 50;
}
template<class Type>    void ShowArray(Type * array, int size)
{
    std::cout << "\nArray : " << std::endl;
 
    std::cout << array[0];
 
    for(int i=1; i<size; i++)
        std::cout << " " << array[i];
 
    std::cout << std::endl;
}
1
samdavydov
60 / 21 / 2
Регистрация: 23.02.2012
Сообщений: 36
24.02.2012, 01:48 #5
Serejke_qq,
теперь на минуту представь, как furrio объясняет преподавателю, что такое template<class Type>.
0
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
24.02.2012, 02:12 #6
Цитата Сообщение от samdavydov Посмотреть сообщение
Serejke_qq,
теперь на минуту представь, как furrio объясняет преподавателю, что такое template<class Type>.
Про методы решения речи не было)

Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <ctime>
#include <cstdlib>
 
template<class Type>    void RandomInput(Type * array, int size);
template<class Type>    void ShowArray(Type * array, int size);
template<class Type>    void SuperFunct(Type * array, int size);
template<class Type>    void Sort(Type * array, int size);
 
int main()
{
    int n = 10;
    int * arr = new int[n];
 
    RandomInput(arr,n);
    ShowArray(arr,n);
 
    SuperFunct(arr,n);
    ShowArray(arr,n);
 
    Sort(arr,n);
    ShowArray(arr,n);
 
    delete[] arr;
 
    return 0;
}
 
template<class Type>    void Sort(Type * array, int size)
{
    Type temp;
    for(int j=0; j<size; j++)
        for(int i=0; i<size-1; i++)
            if(array[i] > array[i+1])
            {
                temp = array[i];
                array[i] = array[i+1];
                array[i+1] = temp;
            }
}
 
template<class Type>    void SuperFunct(Type * array, int size)
{
    int count = 0;
    for(int i=0; i<size; i++)
        if(array[i] < 0)
            array[i] *= array[i];
 
}
 
template<class Type>    void RandomInput(Type * array, int size)
{
    srand(time(NULL));
 
    int _n = rand()%200;
 
    for(int i=0; i<size; i++)
        array[i] = rand()%_n - 30;
}
template<class Type>    void ShowArray(Type * array, int size)
{
    std::cout << "\nArray : " << std::endl;
 
    std::cout << array[0];
 
    for(int i=1; i<size; i++)
        std::cout << " " << array[i];
 
    std::cout << std::endl;
}
Добавлено через 20 минут

Не по теме:

забыл про эту задачу


2. Сумму модулей элементов, расположенных после минимального по модулю элемента.
Достаточно не хорошая реализация данной задачи.. а точнее опасная, и думаю иногда может эрорнуть ..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cmath>
 
template<class Type>    Type SuperFunct(Type * array, int start, int end);
template<class Type>    void RandomInput(Type * array, int size);
template<class Type>    void ShowArray(Type * array, int size);
template<class Type>    int Min_index(Type * array, int size);
 
int main()
{
    int n = 10;
    int * arr = new int[n];
 
    RandomInput(arr,n);
    ShowArray(arr,n);
 
    std::cout << "сумма после минимума по модулю = " << SuperFunct(arr,Min_index(arr,n) + 1,n);
 
    delete[] arr;
 
    return 0;
}
 
template<class Type>    int Min_index(Type * array, int size)
{
    int _ind_min = 0;
    for(int i=1; i<size; i++)
        if(abs(array[i]) < abs(array[_ind_min]))  _ind_min = i;
 
    return _ind_min;
}
 
template<class Type>    Type SuperFunct(Type * array, int start, int end)
{
    Type _sum = 0;
 
    for(int i=start; i<end; i++)    // ай-яй-яй!.. ;)
        _sum += abs(array[i]);
 
    return _sum;
}
 
template<class Type>    void RandomInput(Type * array, int size)
{
    srand(time(NULL));
 
    int _n = rand()%30;
 
    for(int i=0; i<size; i++)
        array[i] = rand()%_n - 10;
}
 
template<class Type>    void ShowArray(Type * array, int size)
{
    std::cout << "\nArray : " << std::endl;
 
    std::cout << array[0];
 
    for(int i=1; i<size; i++)
        std::cout << " " << array[i];
 
    std::cout << std::endl;
}
Считает после первого минимума..
1
furrio
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 24
24.02.2012, 11:51  [ТС] #7
Цитата Сообщение от samdavydov Посмотреть сообщение
1. Количество отрицательных элементов - ... если это так.
Напиши хотя бы это.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include "conio.h"
#include <iostream>
using namespace std;
 
int main()
{
    int n, otr, sum=0;
    cout << "Vvedite n = ";
    cin >> n;
    int *a = new int [n];
    cout << "Vvedite massiv :";
    for(int i=0; i<n; i++)
        cin >> a[i];
    for(int i=0; i<n; i++)
        {
            if (a[i]<0)
                {
                    otr+=a[i];
                }
        }
    for(int i=0; i<n; i++)
        {
//ещё думаю как сделать пункт2
        }
    cout << "temp";
    return 0;
    getch();
 
}
у меня почему то сразу закрывает окно,после ввода последного элемента массива

Serejke_qq, спасибо что подумали над моей задачей, но я больше половины не понял.
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
24.02.2012, 12:32 #8
Цитата Сообщение от furrio Посмотреть сообщение
у меня почему то сразу закрывает окно,после ввода последного элемента массива
не так

C++
1
2
return 0;
        getch();
а вот так

C++
1
2
getch();
return 0;
1
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
24.02.2012, 14:11 #9
Цитата Сообщение от furrio Посмотреть сообщение
В одномерном массиве состоящем из n-вещественных элеметов, вычислить:
1. Кол-во отрицательных элементов,
2. Сумму модулей элементов, расположенных после минимального по модулю элемента.
Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "iostream"
#include "ctime"
#include "cmath"
#include <iomanip>
 
using namespace std;
 
int main()
{
    setlocale(0,"");
    srand(time(0));
    double n, mas[100] = {0}, sum = 0, min, mini;
    int Count = 0;
 
    cout << "Введите количество элементов в массиве - ";
    cin >> n;
    cout << "\nСгенерированный массив:\n\n";
    
    for(int i = 0; i < n; i++)
    {
        mas[i] = (50)*(double)rand() / RAND_MAX - 25;
        cout <<  fixed << setprecision(2) << mas[i] << " "; 
    }
 
    min = mas[0];
    for(int i = 0; i < n; i++)
    {
        if(mas[i] < 0)
        {
            Count++;
        }
 
        if( abs(mas[i]) < abs(min) )
        {
            min = mas[i];
            mini = i;
        }
    }
 
    
    for(int i = mini + 1; i < n; i++)
    {
        sum += mas[i];
    }
 
    cout << "\n\nКоличество отрицательных элементов в массиве - " << Count;
    cout << "\n\nМинимальный по модулю элемент массива - " << min;
    cout << "\n\nСумму модулей элементов,расположенных после минимального по модулю элемента " << sum;
 
    cout << "\n\nМассив после замены отрицательных элементов их квадратами:\n\n";
    for(int i = 0; i < n; i++)
    {
        if(mas[i] < 0)
        {
            mas[i] = mas[i] * mas[i];
        }
        cout <<  fixed << setprecision(2) << mas[i] << " ";
    }
 
    cout << "\n\nМассив упорядоченный по возрастанию:\n\n";
    for(int i = 0; i < n; i++)
    {
       for(int j = n - 1; j > i; j--)
       {
          if (mas[j-1] > mas[j])  
           {
              double x = mas[j-1]; 
              mas[j-1] = mas[j]; 
              mas[j] = x;
           }
       }
    }
 
    for(int i = 0; i < n; i++) 
    {
        cout << mas[i] << " "; //выводим массив после сортировки
    }
 
    system("pause >> null");
    return 0;
}
1
Миниатюры
Одномерный массив  
furrio
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 24
24.02.2012, 14:40  [ТС] #10
Цитата Сообщение от Infinity3000 Посмотреть сообщение
#include "ctime"
Цитата Сообщение от Infinity3000 Посмотреть сообщение
#include <iomanip>
для чего вот эти библиотеки?

не понимаю :
Цитата Сообщение от Infinity3000 Посмотреть сообщение
setlocale(0,"");
srand(time(0));
Цитата Сообщение от Infinity3000 Посмотреть сообщение
cout << fixed << setprecision(2) << mas[i] << " ";
у меня работает только с n=5,10,15,20,25,30 и думаю так далее, смотрю и не могу понять почему именно кратное 5.

и почему работает русский язык? о_0

Цитата Сообщение от Infinity3000 Посмотреть сообщение
if( abs(mas[i]) < abs(min) )
abs это модуль? и если да то можно ли заменить на
C++
1
if ( fabs(mas[i]) < fabs(min) )
?
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
24.02.2012, 15:00 #11
Цитата Сообщение от furrio Посмотреть сообщение
#include "ctime"
нужен для

C++
1
srand(time(0));
srand(time(0)); - герерация случайных элементов в массиве


Цитата Сообщение от furrio Посмотреть сообщение
#include <iomanip>
нужет для

C++
1
setprecision(2) // количество знаков после запятой в вещественном числе
Цитата Сообщение от furrio Посмотреть сообщение
и почему работает русский язык? о_0
C++
1
setlocale(0,"");
Цитата Сообщение от furrio Посмотреть сообщение
abs это модуль?
да!
Цитата Сообщение от furrio Посмотреть сообщение
и если да то можно ли заменить на
Код C++1 if ( fabs(mas[i]) < fabs(min) )
Пробуй!

Цитата Сообщение от furrio Посмотреть сообщение
у меня работает только с n=5,10,15,20,25,30 и думаю так далее, смотрю и не могу понять почему именно кратное 5.
Без понятия
1
furrio
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 24
24.02.2012, 15:51  [ТС] #12
с fabs работает и теперь ошибки нету, работает и с другими числами
спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2012, 15:51
Привет! Вот еще темы с ответами:

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы. - C++
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения. Дан двумерный массив 3х3.Получить...

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию - C++
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию. получилось вот что: #include...

Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массив - C++
Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массива;

Сформировать одномерный массив, удалить первый элемент с заданным значением, сдвинуть массив циклически - C++
1)сформировать одномерный массив целых чисел 2)удалить первый элемент с заданным значением 3)сдвинуть массив циклически на К элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.02.2012, 15:51
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru