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

Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
loll
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 13
15.09.2012, 06:54     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами #1
Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами. Из данной матрицы сформировать два одномерных массива: первый содержит только положительные, а второй отрицательные числа. В каждом массиве сосчитать колво чисел кратных 3 и кратных 7, определить и вывести на экран все числа лежащие в заданном диапазоне.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2012, 06:54     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами
Посмотрите здесь:

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали C++
Заполнить матрицу случайными числами C++
C++ Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки
C++ Заполнить матрицу случайными числами
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке C++
Заполнить матрицу случайными числами C++
C++ Заполнить массив размером 10 случайными числами от 0 до 10
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cmath
Модератор
 Аватар для cmath
2419 / 1638 / 132
Регистрация: 11.08.2012
Сообщений: 3,258
Завершенные тесты: 5
15.09.2012, 07:05     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами #2
Для заполнения матрицы используйте rand(); или srand(); из <time.h>(если не ошибаюсь, функции отсюда)
Для числа m кратность числу n можно определить так:
C++
1
2
3
4
if(m%n == 0)
  cout << "m кратно n"<< endl;
else
  cout << "m не кратно n"<< endl;
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
15.09.2012, 07:15     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами #3
Цитата Сообщение от Hydrogen Посмотреть сообщение
используйте rand(); или srand();
rand() возвращает псевдослучайное число из отрезка [0, RAND_MAX]. srand() инициализирует зерно генератора псевдослучайных чисел. Не надо их путать.


Цитата Сообщение от Hydrogen Посмотреть сообщение
из <time.h>(если не ошибаюсь, функции отсюда)
в C++ (в отличие от С) нужно подключать заголовочный файл <ctime>
-=ЮрА=-
Заблокирован
Автор FAQ
15.09.2012, 08:32     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами #4
loll, тут есть рандомное заполнение матрицы с пояснениями http://www.cyberforum.ru/faq/thread4...ml#post2464869
а это
Цитата Сообщение от loll Посмотреть сообщение
В каждом массиве сосчитать колво чисел кратных 3 и кратных 7, определить и вывести на экран все числа лежащие в заданном диапазоне.
делается в цикле, проверка на кратность
C
1
 if(arr[i][j] % 3 == 0)
для кратности 3-м
C
1
 if(arr[i][j] % 7 == 0)
для кратности 7-ми, принадлежность интервалу [vMin,vMax] проверяется так
C++
1
if(vMin <= arr[i][j] && arr[i][j] <= vMax)
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
15.09.2012, 09:23     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами #5
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
#define MAX 10
 
int getcount(int* p, int val, int n)
{
    int count = 0;
    for (int i = 0; i < n; i++)
        if ((p[i] % val) == 0) count++;
 
    return count;
}
 
void display(int* p, int n)
{
    for (int i = 0; i < n; i++)
        printf("%d ",p[i]);
    printf("\n");
}
 
int main()
{
    int** ppn = new int*[MAX];
    for (int n1 = 0; n1 < MAX; n1++)
    {
        ppn[n1] = new int[MAX];
        for (int n2 = 0; n2 < MAX; n2++)
        {
            ppn[n1][n2] = rand() % (2 * (MAX-1)) - (MAX-1);
            printf("%d ",ppn[n1][n2]);
        }
 
        printf("\n");
    }
 
    int *B1 = new int[MAX * MAX], k1 = 0;
    int *B2 = new int[MAX * MAX], k2 = 0;
    for (int i = 0; i < MAX; i++)
        for (int j = 0; j < MAX; j++)
            if (ppn[i][j] >= 0) B1[k1++] = ppn[i][j];
            else B2[k2++] = ppn[i][j];
 
    printf("\n");
 
    display(B1,k1);
    display(B2,k2);
 
    printf("\nB1 elements multiple by 3 count = %d\n",getcount(B1,3,k1));
    printf("B1 elements multiple by 7 count = %d\n",getcount(B1,7,k1));
    printf("\nB2 elements multiple by 3 count = %d\n",getcount(B2,3,k2));
    printf("B2 elements multiple by 7 count = %d\n",getcount(B2,7,k2));
 
    printf("\n");
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/e4cd07...5b6d607e91711c
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
15.09.2012, 10:06     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами #6
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
#include <iostream>
#include <iomanip>
#include <ctime>
 
int main()
{
    srand(time(0));
    const int Rows = 5, Colls = 5;
    int Positive_Count = 0, Negative_Count = 0;
    int Positive_Krat_Count = 0, Negative_Krat_Count = 0;
    int Matrix[Rows][Colls], Positive_Array[Rows * Colls], Negative_Array[Rows * Colls];
    
    std::cout << "Matrix: " << std::endl;
    for(int i = 0; i < Rows; i++)
    {
            for(int j = 0; j < Colls; j++)
            {
                    std::cout << std::setw(4) << (Matrix[i][j] = rand() % 100 - 55);
                    if(Matrix[i][j] > 0)
                    {            
                                    Positive_Array[Positive_Count++] = Matrix[i][j];
                                    if(!(Positive_Array[Positive_Count] % 3) && !(Positive_Array[Positive_Count] % 7))
                                                                        Positive_Krat_Count++;
                    }
                    if(Matrix[i][j] < 0)
                    {
                                    Negative_Array[Negative_Count++] = Matrix[i][j];                                    
                                    if(!(Positive_Array[Positive_Count] % 3) && !(Positive_Array[Positive_Count] % 7))
                                                                        Positive_Krat_Count++;                                                    
                    }
            }
            std::cout << std::endl;
    }
    
    std::cout << "Positive array: " << std::endl;
    for(int i = 0; i < Positive_Count; i++)
            std::cout << Positive_Array[i] << "  ";
    std::cout << std::endl;
    
    std::cout << "Count of elements % 3, %7: " << Positive_Krat_Count << std::endl;
    
    std::cout << "Negative array: " << std::endl;
    for(int i = 0; i < Negative_Count; i++)
            std::cout << Negative_Array[i] << "  ";
    std::cout << std::endl;
    
    std::cout << "Count of elements % 3, %7: " << Negative_Krat_Count << std::endl;
    
    int Minimal_Value, Maximal_Value;
    std::cout << "Enter the Minimal: ";
    std::cin >> Minimal_Value;
    std::cout << "Enter the Naximal: ";
    std::cin >> Maximal_Value;
    
    std::cout << "Matrix's elements in [" << Minimal_Value << ", " << Maximal_Value << "]: " << std::endl;
    for(int i = 0; i < Rows; i++)
    {
            for(int j = 0; j < Colls; j++)
                    if(Minimal_Value <= Matrix[i][j] && Matrix[i][j] <= Maximal_Value)
                                     std::cout << std::setw(4) << Matrix[i][j];
            std::cout << std::endl;
    }    
    
    system("pause");
    return 0;
}
cmath
15.09.2012, 10:19
  #7

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
в C++ (в отличие от С) нужно подключать заголовочный файл <ctime>
а, заодно, и <cmath> вместо <math.h>, <cstring> вместо <string.h>. Знаем-с. Но если подключить хедеры с .h то никаких ошибок не будет-с. Проверял на VC++2008. Про rand и srand знаю. Написал только про них в посте кривовато-с. (а если ТС начнет их использовать, то разницу сам обнаружит)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2012, 10:24     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами
Еще ссылки по теме:

C++ Заполнить массив размером 10 случайными числами от 0 до 10, отсортировать его по убыванию
C++ Заполнить массив размером 10 случайными числами от 0 до 10, отсортировать его по возрастанию
C++ Заполнить матрицу случайными числами. Разбить матрицу на квадраты размером 3х3. В центре каждого квадрата поме
C++ Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
15.09.2012, 10:24     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами #8
Цитата Сообщение от Hydrogen Посмотреть сообщение
Но если подключить хедеры с .h то никаких ошибок не будет-с. Проверял на VC++2008.
а если в версии VC++2014 "хедеров с .h" не будет, что ты будешь делать? Переписывать свой код? Лучше уж сразу писать правильно.

Цитата Сообщение от Hydrogen Посмотреть сообщение
Про rand и srand знаю. Написал только про них в посте кривовато-с. (а если ТС начнет их использовать, то разницу сам обнаружит)
вообще, лучше пользоваться средствами из хэдера random, если версия позволяет.
Yandex
Объявления
15.09.2012, 10:24     Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами
Ответ Создать тему
Опции темы

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