Как сделать так чтобы элементы двумерного массива не повторялись?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define M 5
#define N 4
int main()
{
int mass[M][N];
int i, j;
int* p1 = (int*)mass;
int nel = sizeof(mass) / sizeof(int);
int(*prow)[N];
system("chcp 1251");
srand(time(NULL));
int* max = &mass[0][0];
printf("Розмірність [%d*%d]\n", M, N);
printf("Елементи матриці:\n");
for (; p1 < (int*)mass + nel; p1++)
{
*p1 = rand() % 101;
if (*max < *p1)
*max = *p1;
}
for (prow = mass; prow < mass + M; prow++) {
for (j = 0; j < N; j++)
printf("%4d", *(*prow + j));
printf("\n");
}
printf("\n Максимальний елемент-%d", *max);
int min = mass[0][0];
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
if (min > mass[i][j])
min = mass[i][j];
}
printf("\n Мінімальний елемент-%d\n", min);
return 0;
}
Используя стандартные библиотечные функции генерирования случайных цифр, заполнить случайными двузначного числа матрицу размерности M x N.Обеспечить,чтобы в каждой строке матрицы элементы имели разные значения. Отдельно отметить наибольший и наименьший среди с генерированных элементов.
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Генерация чисел, чтобы в строке были все разные. Создаёте "список" чисел и из них "выбираете" случайные.
// gcc -Wall -Wextra -Wpedantic -std=c11 massdiff.c -o massdiff
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
# define M 20
# define N 20
int main(){
int mass[M][N];
for(int r = 0;r<M;++r) {
// генерируем массив [ 0 1 .. 98 99 ]
int numbers [100];
for(int d=0;d<100;++d)
numbers[d]=d;
for(int c = 0;c<N;++c) {
// выбираем случайное число из "списка" оставшихся
int ra = rand() % (100 - c) ;
mass[r][c] = numbers[ra] ;
// убираем и списка отработанное число
// и ставим на его место другое
numbers[ra] = numbers[99-c]; } }
for(int r = 0;r<M;++r) {
for(int c = 0;c<N;++c) {
printf("%d " , mass[r][c]);
}
printf("\n");}
}