Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/55: Рейтинг темы: голосов - 55, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142

Таблица умножения - таблица размера n строк на m столбцов, на пересечении i-ой строки и j-ого столбца стоит число i*j

14.04.2019, 20:59. Показов 10909. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Таблицей умножения назовем таблицу размера n строк на m столбцов, в которой на пересечении i-ой строки и j-ого столбца стоит число i*j (строки и столбцы нумеруются с единицы).

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

Процесс покраски чисел можно условно разбить на четыре этапа. На первом этапе все числа красятся в черный цвет. На втором - все четные числа красятся в красный цвет, на третьем – все числа, делящиеся на 3, красятся в зеленый цвет, на четвертом - все числа, делящиеся на 5, красятся в синий цвет.

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

Напишите пожалуйста программу, решающую задачу подсчета соответствующих количеств.

С принципом работы постараюсь разобраться сам, но желательно написать её понятной для новичка

Добавлено через 16 секунд
Заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.04.2019, 20:59
Ответы с готовыми решениями:

Таблица умножения до 10, на число 12
Нужно сделать таблицу умножения в Free Pascal, на число 12. С параметром послусловием, предусловием и параметром.

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

Таблица умножения на заданное число. Рекурсия
Добрый день!)) Прошу помощи уважаемые форумчане, код рекурсивно рисует таблицу умножения на заданное пользователем число. Пример: ...

8
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
14.04.2019, 21:42
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
#include <iostream>
using namespace std;
const int n = 10, m = 10;
enum { BLACK, RED, BLUE, GREEN, TOTAL }
table[n][m];
int main()
{
 
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j += 2)
            table[i][j] = RED;
    for (int i = 0; i < n; i+=2)
        for (int j = 0; j < m; ++j)
            table[i][j] = RED;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j += 3)
            table[i][j] = GREEN;
    for (int i = 0; i < n; i += 3)
        for (int j = 0; j < m; ++j)
            table[i][j] = GREEN;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j += 5)
            table[i][j] = BLUE;
    for (int i = 0; i < n; i += 5)
        for (int j = 0; j < m; ++j)
            table[i][j] = BLUE;
    int colors[TOTAL] = { 0 };
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            ++colors[table[i][j]];
    cout << "BLACK: " << colors[BLACK] << endl;
    cout << "RED: " << colors[RED] << endl;
    cout << "BLUE: " << colors[BLUE] << endl;
    cout << "GREEN: " << colors[GREEN] << endl;
    return 0;
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.04.2019, 23:57
как вариант:
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
#include <iostream>
using namespace std;
 
int main()
{
    int n, m, red=0, green=0, blue=0;
    cout <<"n="; cin >>n;
    cout <<"m="; cin >>m;
    
      int **a = new int*[n]; 
    for (int i = 0; i < n; i++)
       a[i] = new int[m];   
    
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      {
      a[i][j]=i*j;
      if (a[i][j]%2==0&&a[i][j]%3!=0&&a[i][j]%5!=0) red++;
      else if (a[i][j]%3==0&&a[i][j]%5!=0) green++;
      else if (a[i][j]%5==0) blue++;
      }  
      
    cout << "red=" << red << "\ngreen=" << green << "\nblue=" << blue 
    << "\nblack=" << n*m - red - green - blue << "\n"; 
 
    for (int i = 0; i < n; i++)
    delete [] a[i];
    delete [] a;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
15.04.2019, 10:39  [ТС]
Kuzia domovenok, Всё отлично, только вот задавать кол-во строк и столбцов пользователь должен задавать сам с клавиатуры. Как так можно сделать? Просто table вроде как работает только с константами
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
15.04.2019, 12:48
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
#include <iostream>
using namespace std;
int n = 10, m = 10;
enum color{ BLACK, RED, BLUE, GREEN, TOTAL }
*table;
int main()
{
    cout<<"?m,n:";
    cin>>m>>n;
    table=new color[m*n];
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j ++)
            table[i*m+j] = BLACK;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j += 2)
            table[i*m+j] = RED;
 
    for (int i = 0; i < n; i+=2)
        for (int j = 0; j < m; ++j)
            table[i*m+j] = RED;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j += 3)
            table[i*m+j] = GREEN;
    for (int i = 0; i < n; i += 3)
        for (int j = 0; j < m; ++j)
            table[i*m+j] = GREEN;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j += 5)
            table[i*m+j] = BLUE;
    for (int i = 0; i < n; i += 5)
        for (int j = 0; j < m; ++j)
            table[i*m+j] = BLUE;
    int colors[TOTAL] = { 0 };
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            ++colors[table[i*m+j]];
    cout << "BLACK: " << colors[BLACK] << endl;
    cout << "RED: " << colors[RED] << endl;
    cout << "BLUE: " << colors[BLUE] << endl;
    cout << "GREEN: " << colors[GREEN] << endl;
    return 0;
}
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
15.04.2019, 17:19  [ТС]
Kuzia domovenok, почему-то если ввести например m=1, n=1, то выведет BLUE=1, хотя должно BLACK=1, ведь синий цвет - когда число кратно 5, а 1 не кратна.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
15.04.2019, 18:11
Лучший ответ Сообщение было отмечено llatibro как решение

Решение

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
#include <iostream>
using namespace std;
int n = 10, m = 10;
enum color{ BLACK, RED, BLUE, GREEN, TOTAL }
*table;
int main()
{
    cout<<"?m,n:";
    cin>>m>>n;
    table=new color[m*n];
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; j ++)
            table[i*m+j] = BLACK;
    for (int i = 0; i < n; ++i)
        for (int j = 1; j < m; j += 2)
            table[i*m+j] = RED;
 
    for (int i = 1; i < n; i+=2)
        for (int j = 0; j < m; ++j)
            table[i*m+j] = RED;
    for (int i = 0; i < n; ++i)
        for (int j = 2; j < m; j += 3)
            table[i*m+j] = GREEN;
    for (int i = 2; i < n; i += 3)
        for (int j = 0; j < m; ++j)
            table[i*m+j] = GREEN;
    for (int i = 0; i < n; ++i)
        for (int j = 4; j < m; j += 5)
            table[i*m+j] = BLUE;
    for (int i = 4; i < n; i += 5)
        for (int j = 0; j < m; ++j)
            table[i*m+j] = BLUE;
    int colors[TOTAL] = { 0 };
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            ++colors[table[i*m+j]];
    cout << "BLACK: " << colors[BLACK] << endl;
    cout << "RED: " << colors[RED] << endl;
    cout << "BLUE: " << colors[BLUE] << endl;
    cout << "GREEN: " << colors[GREEN] << endl;
    return 0;
}
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.04.2019, 18:27
Цитата Сообщение от llatibro Посмотреть сообщение
почему-то если ввести например m=1, n=1, то выведет BLUE=1, хотя должно BLACK=1, ведь синий цвет - когда число кратно 5, а 1 не кратна.
массивы в С++ индексируются с нуля. при m=1, n=1 i*j=0 соответственно BLUE=1
1
0 / 0 / 0
Регистрация: 23.10.2018
Сообщений: 142
15.04.2019, 20:52  [ТС]
Kuzia domovenok, да, теперь вроде всё ок, спасибо большое)

Добавлено через 26 минут
Kuzia domovenok, я извиняюсь, конечно, но а что изменилось с последнего раза?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.04.2019, 20:52
Помогаю со студенческими работами здесь

Таблица 6 строк и 5 столбцов
Задание 19. Создайте новое приложение, в котором на форме расположены Таблица размером 6 строк и 5 столбцов, Таблица размером 1 строка и 5...

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

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

Интерактивная таблица (динамическое добавление строк или столбцов)
Доброго времени суток. Подскажите, пожалуйста, возможно ли реализовать такую таблицу с помощью JavaScript и как это можно сделать: ...

Поменять местами элементы той строки и столбца матрицы, на пересечении которых стоит максимальный элемент
ПОМОГИТЕ ПОЖАЛУЙСТА ВЫПОЛНИТЬ ЗАДАНИЕ ПО С++. Дана матрица размерности n*m. Поменять местами элементы той строки и столбца, на пересечении...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru