Про погоду и массивы

Такая школьная простенькая задачка…
Условие:

Пусть в массиве из 12 компонент хранится количество осадков в каждом месяце. Требуется напечатать таблицу из трех столбцов, где для каждого месяца вывести его номер, количество осадков в нем,  отклонение количества осадков в этом месяце от средне годового.

Continue reading

C++: Массивы, сортировка и нахождение минимальных-максимальных индексов

Дан массив вещественных чисел X=(x1,x2,..,xn). Записать элементы
заданного массива Х в массив Y следующим образом: в начальной части
расположить положительные элементы в порядке возрастания, затем в
порядке убывания отрицательные элементы, нулевые элементы не
записывать. Оценить, как при этом изменилось положение максимального
и минимального элементов массива.
Использовать функции.

Задачка простая на вид. Приступаем. У нас есть массивы, целых два. с ними нужно уметь делать следующее:

  • Создавать (Random)
  • Выводить на экран
  • Сортировать
  • Дополнять элементами (для второго массива)

Continue reading

C++: Среднее арифметическое + нахождение минимального и максимального элементов (индексов) + сортировка

Хорошие задачки стали давать в универах. Составные =)

Вычислить среднее арифметическое элементов массива X=(x1,x2,…,xn),
расположенных между его минимальным и максимальным значениями.
Если минимальный элемент размещается в массиве раньше
максимального, то упорядочить массив на данном промежутке по
возрастанию его элементов, и наоборот, если минимальный элемент
размещается после максимального, то упорядочить по убыванию.

PS: Нельзя использовать динамическую память :(
Задача на самом деле не задача, а состоящая из трех подзадач:

  1. Найти минимальный и максимальный элементы и их индексы
  2. Вычислить среднее арифметическое для этого промежутка
  3. Отсортировать промежуток по возростанию или убыванию в зависимости от того, как расположены минимальный и максимальный элементы.

Continue reading

C++: Найти сумму простых делителей

Задача:

Дана последовательность из целых чисел. 0 — конец последовательности. Для каждого числа найти сумму его простых делителей. Оформить функцией определение суммы простых делителей числа.

Итак. Последовательность — массив. Заполняем его с клавиатуры и выводим как есть. Далее сами вычисления. Нужно найти простые числа до числа, для этого я буду использовать функцию isPrime (она на шарпе, но да я одну строчку изменил и работает на си), а нам еще нужно и делители. Значит остаток от деления числа должен быть равен нулю.

Continue reading

C++: Обернуть цифры в числе (для последовательности)

Новая задачка.

Вводится последовательность из n целых чисел. Для каждого числа последовательности вывести новое число, которое появляется после записи цифр числа в обратном порядке. Функцией оформить определение нового числа для заданного.

Примечание: Сделать нужно без применения динамической памяти.

Начинаем думать. Работа с цифрами в числе. и функция. Пригодится что-то вроде вот этой функции, только ее все же нужно переписать.

Continue reading

Java: Транспонированная матрица

Начал учить JAVA. Первая программа пусть будет транспонированная матрица. Мне код понятен, очень похоже на c/c++/c#.

Я модифицировал эту программу написанную на си

Транспонированная матрица — матрица, полученная из исходной матрицы  заменой строк на столбцы.

Continue reading

C++, Транспонированная матрица

Не хватало транспонированной матрицы:

Upd: Транспонированная матрица на java

Способ без использования динамической памяти (n не больше ста):

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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int maxsize = 100;
    int a [maxsize][maxsize], n;
    int temp;
    cout << "n=";
    cin >> n;
 
    if (n > maxsize)
    {
        cout << "n is too lage...";
        system("pause");
        return -1;
    }
    srand(time(NULL));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 10;
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    for(int i=0;i<n;i++) 
    { 
        for(int j=i;j<n;j++) 
        {
            temp=a[j][i];
            a[j][i]=a[i][j];
            a[i][j]=temp;
        }
    }
    cout << "Transp.:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}
#include <iostream>
#include <time.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    const int maxsize = 100;
    int a [maxsize][maxsize], n;
    int temp;
    cout << "n=";
    cin >> n;

    if (n > maxsize)
    {
        cout << "n is too lage...";
        system("pause");
        return -1;
    }
    srand(time(NULL));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = rand() % 10;
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    for(int i=0;i<n;i++) 
    { 
        for(int j=i;j<n;j++) 
        {
            temp=a[j][i];
            a[j][i]=a[i][j];
            a[i][j]=temp;
        }
    }
    cout << "Transp.:" << endl;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    system("pause");
    return 0;
}

Пример работы программы

C++: Заполнить матрицу так, чтобы на диагоналях были случайные числа, а остальные-нули

Задача:

Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, у которой на главной и побочной диагоналях расположены случайные числа, а остальные элементы равны нулю. Затем выведите матрицу на экран.

Задача похожа на предыдущую, с той лишь разницей, что нужно заполнять и побочную диагональ. Для этого я так же воспользуюсь функцией из набора, которая возвращает true, если элемент матрицы (массива) стоит на диагонали. В этот раз на любой из них. Continue reading

С++, Заполнить элементы на побочной диагонали случайными числами, а все остальные нулями

Задача:

Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, у которой на побочной диагонали расположены случайные числа, а остальные элементы равны нулю. После заполнения выведите матрицу на экран.

Для решения этой задачи я хочу применить функцию, которая определяет, находится элемент массива на диагонали или нет. Таким образом, остается дописать такое условие при заполнении матрицы:

1
2
3
4
if (isOnPobDiaganal(i,j,n))
    a[i][j] = rand() % 10;
else
    a[i][j] = 0;
if (isOnPobDiaganal(i,j,n))
    a[i][j] = rand() % 10;
else
    a[i][j] = 0;

То есть, если функция вернула true -> элемент находится на побочной диагонали, и тогда мы заполняем его случайным числом, иначе — нулем.

Continue reading

C++, сумма всех элементов матрицы

Задача:

Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, заполненную случайными числами, и выводит ее на экран. Затем найдите сумму всех элементов этой матрицы.

Все тоже самое как в следе матрицы, только проще. Здесь нет условий, что считать. Просто все прибавляем к сумме.

Continue reading