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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С++ и разние ОС http://www.cyberforum.ru/cpp-beginners/thread175245.html
Все учебники по СИ++ учат как програмировать для Виндовс ,а как програмироватть длч Макинтош...?
C++ C++ для телефоном Возможно на СИ++ писать программи для телефонов..как нап яве=))? http://www.cyberforum.ru/cpp-beginners/thread175244.html
C++ Не получается исправить код
помогите исправить код пожалуйста char limit, notation; do { error = 0; int i = 0; cout << "Enter number: "; cin >> limit; do {
C++ На сколько квадратов можно разрезать данный прямоугольник?
Даны натуральные числа a и b, которые определяют стороны прямоугольника. На сколько квадратов, стороны которых выражены также натуральными числами, можно разрезать данный прямоугольник, если от него каждый раз отрезать квадрат максимальной площади. Помогите пожалуйста решить. Решить нужно на языке С (попрошу, если это возможно писать пояснения к вашим действиям)
C++ Шахматы http://www.cyberforum.ru/cpp-beginners/thread175094.html
Нужен исходный код шахмат, для игры ИИ + человек зачем нужен: пишу программу к роботу, который будет играть в шахматы. Сама программа сообщения компьютера и робота уже есть поэтому нужен открытый код шахмат, чтобы заставить робота думать=))) в нете выложено куча движков, а программу полность уже замучился искать=(
C++ соотношение i-ых символов двух текстовых файлов Здравствуйте у меня такой вопрос... Пусть есть два текстовых файло в одном представлена последовательность из 4 букв длиной в 100 символов (ааабвгггвввббаа и т.д) в другом послеовательность из 3 цифр длиной в 100 символов (123123123 и тд). и надо написать совокупность условий для i-го символа (Например: Пусть i-ый по счету символ в первом тексте будет "в" а во втором i-ый символ это цифра "1"... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4956 / 3032 / 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