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

Алгоритмы и программы по обработке одномерных и двумерных массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление вершин дерева http://www.cyberforum.ru/cpp-beginners/thread175402.html
Здравствуйте! Помогите в решении задачи. Записи вершин 2-3–дерева – вещественные числа. Описать процедуру, которая удаляет все вершины со значением в указанном диапазоне.
C++ В квадратной матрице A[N][N] определить номер столбца... В квадратной матрице A определить номер столбца матрицы, имеющего наибольшую сумму элементов. Поменять этот столбец со строкой, имеющей наименьшую сумму элементов. Помогите, пожалуйста, решить данную задачу. Двумерный массив вводить через (нас так к сожалению учат...): const int N1=10; M1=10; int a,i,j,n,m; printf("input size: "); scanf("%d%d",&n,&m); printf("input elements:... http://www.cyberforum.ru/cpp-beginners/thread175359.html
C++ Динамический массив.
Добрый день. Есть такая задача. //Задание 5. Создайте одномерный массив (размерность вычисляется в процессе //выполнения программы), заполните его значениями. //Напишите функцию, которая «убирает» из массива дубли. #include <iostream> #include <tchar.h> #include <ctime>
Вопрос о вводе массивa C++
Помогите реализовать эту задачу, которая вводит c клавиатуры двумерный массив неотрицательных целых чисел, находит минимум из максимальных элементов каждой строки и выводит на экран этот минимум, все максимальные элементы строк, их местоположение в первоначальном массиве и число попыток ввести отрицательный элемент #include "stdafx.h" #include <iostream> using namespace std; #include...
C++ масив char c++ http://www.cyberforum.ru/cpp-beginners/thread175298.html
доброго времени суток. #include<iostream.h> #define first 100 #define second 100 main() { char fir; char sec;
C++ Преобразование систем координат из мировыч в оконную Собственно все ясно, но не работает: int Width = 800; int Height = 600; //диапазоны изменения координат int xmin=-Width/2; int xmax=Width/2; int ymin=-Height/2; int ymax=Height/2; int Xmax=Width; подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.10.2010, 06:27
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
 
// Функция, возвращающая сумму положительных элементов массива
double sum(double *mas, int n)
{
    double s = 0.0; // Переменная, хранящая сумму
    int i;          // Счётчик
 
    // В цикле пробегаем по всем элементам массива
    for (i = 0; i < n; i++)
        if (mas[i] > 0.0) // Если очередной элемент положительный
            s += mas[i]; // Прибавляем его к общей сумме
 
    return s; // Возвращаем найденную сумму
}
 
// Функция, возвращающая произведение элементов массива, расположенных между максимальным и минимальным по модулю элементами
double product(double *mas, int n)
{
    int minIndex = 0; // Переменная, хранящая индекс минимального по модулю элемента
    int maxIndex = 0; // Переменная, хранящая индекс максимального по модулю элемента
    int tempIndex;    // Временная переменная
    double p = 1.0;   // Переменная, хранящая найденное произведение
    int i;            // Счётчик
 
    // В цикле пробегаем по всем элементам массива
    for (i = 0; i < n; i++)
    {
        if (fabs(mas[i]) > fabs(mas[maxIndex])) // Если элемент с индексом i больше по модулю, чем элемент с ранее найденным индексом,
            maxIndex = i; // то теперь индекс максимального элемента равен i
        else // Иначе
        {
            if (fabs(mas[i]) < fabs(mas[minIndex])) // Если элемент с индексом i меньше по модулю, чем элемент с ранее найденным индексом,
                minIndex = i; // то теперь индекс минимального по модулю элемента равен i
        }
    }
 
    // Если минимальный по модулю элемент расположен в массиве правее максимального
    if (minIndex > maxIndex)
    {
        // Для удобства меняем значения индексов
        tempIndex = minIndex;
        minIndex = maxIndex;
        maxIndex = tempIndex;
    }
 
    // В цикле пробегаем элементы массива от одного найденного индекса до другого
    for (i = minIndex + 1; i < maxIndex; i++)
        p *= mas[i]; // Формируем произведение
 
    return p; // Возвращаем найденное произведение
}
 
// Функция, сортирующая массив по убыванию модулей элементов
void bubbleSort(double *mas, int n)
{
    double temp; // Временная переменная
    int i, j;    // Счётчики
 
    // Во внешнем цикле пробегаем весь массив
    for (i = 0; i < n; i++)
    {
        // Во вложенном цикле пробегаем массив с конца до i
        for (j = n - 1; j > i; j--)
        {
            // Если модуль правого элемента оказался больше модуля левого
            if (fabs(mas[j]) > fabs(mas[j - 1]))
            {
                // Меняем элементы местами
                temp = mas[j];
                mas[j] = mas[j - 1];
                mas[j - 1] = temp;
            }
        }
    }
}
// (Советую почитать про пузырьковую сортировку)
 
int main()
{
    double *mas; // Указатель на будущий массив
    int n;       // Количество элементов массива
    double s;    // Сумма положительных элементов
    double p;    // Произведение элементов, расположенных между минимальным и максимальным по модулю элементами
    int i;       // Счётчик
 
    printf("Enter n: ");
    scanf("%d", &n); // Вводим количество элементов
 
    mas = (double *)malloc(n * sizeof(double)); // Выделяем память
 
    // Заполняем массив
    for (i = 0; i < n; i++)
    {
        printf("mas[%d]: ", i);
        scanf("%lf", &mas[i]);
    }
 
    s = sum(mas, n);     // Считаем сумму
    p = product(mas, n); // Считаем произведение
    bubbleSort(mas, n);  // Сортируем массив
 
    printf("\nSum: %lf", s);     // Выводим сумму
    printf("\nProduct: %lf", p); // Выводим произведение
 
    // Выводим отсортированный массив
    printf("\n\nSorted mas:\n\n");
 
    for (i = 0; i < n; i++)
        printf("%lf  ", mas[i]);
 
    free(mas); // Освобождаем память
 
    getch();
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru