Задача: выяснить, есть ли одинаковые числа в массиве или же массив содержит только разные.
Задал двумерный массив случайными значениями, вывел. Некоторые переменные введены с заделом на следующие задачи.
На стадии проверки я хочу:
1) Остановить цикл там, где находится первый повтор. Сейчас цикл проверяет все значения массива
2) Вывести в cout повторяющиеся значения без повторов (если "2" встречается в массиве 3 раза, то я вывожу его только один раз.
Как это можно грамотно реализовать?
#include "pch.h"
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
int main()
{
srand(time(0));
const int N = 5; //строки
const int M = 5; // столбцы
int a[N][M]; //массив
int i, j, k, l; //счётчики циклов
int temp; //переменная, которая проверяет повторность
int crep = 0; //счётчик повторов
int cnotrep = 0; //счётчик разности
int saveeq = 0; //сохраняет повторяющиеся значения
bool flag = false;
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
a[i][j] = rand() % 10;
}
}
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
cout << setw(3) << a[i][j] << " ";
}
cout << '\n' << '\n';
}
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
for (k = i; k < N; k++) {
for (l = j; l < M; l++) {
temp = a[i][j];
if (temp == a[k][l] && (&a[i][j] != &a[k][l]))
{
flag = true;
break;
cout << temp << " ";
}
}
}
}
}
cout << '\n' << '\n';
if (flag == true) cout << "There are equal. Number of equal: " << crep;
else cout << "There are not equal. Number of equal: " << crep;
cout << '\n' << '\n';
Путём сортировки и создания одномерного массива всё делается просто и красиво, тут можно и количество повторов, и вхождения, и всё, что душа пожелает. Код прилагаю (буду рад комментариям).
Интересует именно реализация перебора значений матрицы, её логика и синтаксис. Возможно ли вообще посредством циклов и условий корректно перебрать двумерный массив. Буду очень благодарен за элементарный пример.
#include "pch.h"
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
int main()
{
srand(unsigned(time(0)));
const int N = 10; //строки
const int M = 10; // столбцы
const int P = N * M;
int a[N][M]; //массив
int b[P]; //одномерный массив для проверки
int c; //временная переменная
int i, j, k, l; //счётчики циклов
bool equal = false; // переменная, говорящая о наличии повтора
int count = 0; //счётчик повторов
int number = 0; // нумерация значений
int total = 0; // сколько всего повторов
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
a[i][j] = rand() % 10; // заполнили массив случайным числами
}
}
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
cout << setw(3) << a[i][j] << " "; //вывели
}
cout << '\n' << '\n';
}
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
for (k = 0; k < N; k++) {
for (l = 0; l < M; l++) {
if (a[k][l] > a[i][j])
{
c = a[k][l];
a[k][l] = a[i][j]; //отсортировали
a[i][j] = c;
}
}
}
}
}
cout << '\n' << '\n';
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
cout << setw(3) << a[i][j] << " "; //вывели сортировку
}
cout << '\n' << '\n';
}
cout << '\n' << '\n';
for (k = 0; k < P; k++) {
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
b[k] = a[i][j];
cout << b[k] << " "; //запихали в одномерный
k++;
}
}
break;
}
cout << '\n' << '\n';
for (k = 0; k < P; k++)
{
c = b[k];
number = c;
if (c == b[k + 1])
{
count = count + 1; // проверяем одномерный на повторы
equal = true;
total = total + 1;
}
if (c != b[k + 1])
{
cout << "Number " << number << " repeats : " << count << endl;
number = number + 1;
count = 0;
}
}
if (equal == true)
{
cout << '\n' << "There are " << total << " repeats" << '\n' << '\n';
}
else cout << "There are not repeats";
}
#include <iostream>
#include <time.h>
#include <iomanip>
#include <set>
using namespace std;
int main()
{
srand(unsigned(time(0)));
const int N = 10; //строки
const int M = 10; // столбцы
const int P = N * M;
set <int> temp;
set <int> double_temp;
int a[N][M]; //массив
int i, j, k, l; //счётчики циклов
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
a[i][j] = rand() % 10; // заполнили массив случайным числами
if (temp.count(a[i][j])) double_temp.insert(a[i][j]);
temp.insert(a[i][j]);
}
}
for (const auto &i:double_temp) cout << i << endl;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть ли какие-нибудь библиотеки или методы для постоянного получения снимков экрана? Максимальная частота снимков - 60/сек, но в случае если...
Установил NetBeans, с самого начала была эта ошибкаУже и MinGW переустанавливал, и пути все проверял, ничего не помогло
Нужно как то проверить симметричность строки относительно центраВернее: здесь идет проверка строки
У меня есть в форме listWidgetВ конструкторе окна я привязываю customContextMenuRequested к моей функции ShowContextMenu: