Другие языки программирования и технологии
Помогите написать программу пожалуйста на Си
(и если можно на Basic) Задача: Найти максимальное число, входящее в матрицу A более одного раза
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#define ROWS 4
#define COLS 3
#define UNDEFINED SHRT_MIN
void print(short*);
short max2(short*);
void copy_to_vector_to_vector(short*, short*);
int compare(const void*, const void*);
int main(void) {
short matrix[ROWS][COLS] = { { 7, 3, 6 }, { 9, 8, 6 }, { 7, 1, 3 }, { 3, 2, 4 } };
short* beg = &matrix[0][0];
print(beg);
short maximum = max2(beg);
if (maximum == UNDEFINED) printf(" Undefined result\n");
else printf(" Maximum = %d\n", maximum);
getchar();
}
void print(short* mx) {
int i = 1;
short* begin = NULL;
short* end = mx + ROWS * COLS;
for (begin = mx; begin != end; ++begin, ++i) {
printf(" %d ", *begin);
if (0 == i % 3) printf("\n");
}
printf("\n");
}
void copy_to_vector(short* vec, short* matrix) {
short* vec_begin = vec;
short* mx_begin = NULL;
short* mx_end = matrix + ROWS * COLS;
for (mx_begin = matrix; mx_begin != mx_end; ++mx_begin, ++vec_begin) *vec_begin = *mx_begin;
}
short max2(short* matrix) {
short vector[ROWS * COLS];
short* begin = vector;
copy_to_vector(vector, matrix);
qsort(vector, ROWS * COLS, sizeof(short), compare);
short* rbegin = NULL;
short* rend = vector - 1;
for (rbegin = vector + ROWS * COLS - 2; rbegin != rend; --rbegin) if (*rbegin == *(rbegin + 1)) return *rbegin;
return SHRT_MIN;
}
int compare(const void* a, const void* b) {
if ((*(short *)a > *(short *)b)) return 1;
else if ((*(short *)a < *(short *)b)) return -1;
return 0;
}
#include <stdlib.h>
#include <limits.h>
#define ROWS 4
#define COLS 3
#define UNDEFINED SHRT_MIN
void print(short*);
short max2(short*);
void copy_to_vector_to_vector(short*, short*);
int compare(const void*, const void*);
int main(void) {
short matrix[ROWS][COLS] = { { 7, 3, 6 }, { 9, 8, 6 }, { 7, 1, 3 }, { 3, 2, 4 } };
short* beg = &matrix[0][0];
print(beg);
short maximum = max2(beg);
if (maximum == UNDEFINED) printf(" Undefined result\n");
else printf(" Maximum = %d\n", maximum);
getchar();
}
void print(short* mx) {
int i = 1;
short* begin = NULL;
short* end = mx + ROWS * COLS;
for (begin = mx; begin != end; ++begin, ++i) {
printf(" %d ", *begin);
if (0 == i % 3) printf("\n");
}
printf("\n");
}
void copy_to_vector(short* vec, short* matrix) {
short* vec_begin = vec;
short* mx_begin = NULL;
short* mx_end = matrix + ROWS * COLS;
for (mx_begin = matrix; mx_begin != mx_end; ++mx_begin, ++vec_begin) *vec_begin = *mx_begin;
}
short max2(short* matrix) {
short vector[ROWS * COLS];
short* begin = vector;
copy_to_vector(vector, matrix);
qsort(vector, ROWS * COLS, sizeof(short), compare);
short* rbegin = NULL;
short* rend = vector - 1;
for (rbegin = vector + ROWS * COLS - 2; rbegin != rend; --rbegin) if (*rbegin == *(rbegin + 1)) return *rbegin;
return SHRT_MIN;
}
int compare(const void* a, const void* b) {
if ((*(short *)a > *(short *)b)) return 1;
else if ((*(short *)a < *(short *)b)) return -1;
return 0;
}
Отсортируй массив. И сразу поймёшь, как найти искомое число.
найми программиста
Похожие вопросы
- Напишите программу, пожалуйста! На Си (не С++)
- помогите написать программу на языке Си: В одномерном массиве целых чисел заменить максимальное значение минимальным.
- помогите написать программу на языке си
- Помогите написать программу пожалуйста. Буду очень сильно благодарен =)
- Помогите написать программу, пожалуйста.
- Помогите написать программу со switch в СИ
- Помогите, пожалуйста, написать программу на языке Си
- Помогите написать программу на Си
- Пожалуйста, помогите написать программу через функции в Си++
- Помогите доделать программу пожалуйста ) На языке Си