Другие языки программирования и технологии

помогите написать программу на Си

Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке. Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента.
написала как матрицу создавать, подскажите как написать дальше..
#include
#include
#include

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int M,N, i, j;
printf("\tПрограмма упорядочивает строки целочисленной\n"
"\tпрямоугольной матрицы по возрастанию количесва \n"
"\tодинаковых элементов в каждой строке. \n"
"\tИ находит номер первого из столбцов, \n"
"\tне содержащих ни одного отрицательного эл-та. \n");
printf("Введите количество строк: ");
scanf("%d",&M);
printf("Введите количество столбцов: ");
scanf("%d",&N);

int mas[N][M];
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
mas[i][j]=-20+rand()%20;
}
scanf("%d",&M);
scanf("%d",&N);
int mas[N][M]; /* Так работать не будет! Размер статического массива должен быть известен во время компиляции */

mas[i][j] = 20 - rand() % 40; /* хотя бы так, а то у вас все отрицательные */

/* И неплохо бы было узнать зачем нужна функция srand() */
Бауржан Искаков
Бауржан Искаков
95 856
Лучший ответ
#include <stdio.h
#include <time.h
#include <locale.h
#include <random
#include <conio.h

int main(){
srand(time(0));
setlocale(0,"");
int a = 1, b = 5; // диапазон случайных значений
const int N = 3, M = 5; // размеры матрицы
int mat[N][M]; // матрица
int eq[N]; // массив для подсчёта количества одинаковых элементов
int counter(1); // переменная, для подсчёта количетсва одинаковых элементов
int temp;

// обнуляем массив для хранения одинаковых записей
for(int i(0); i < N; i++)
eq[i] = 0;

// заполняем матирицу и выводим её на экран
printf("Начальная матрица: \n");
for(int i(0); i < N; i++)
{
for(int j(0); j < M; j++)
{
mat[i][j] = rand() % (b - a + 1) + a;
printf("%3i",mat[i][j]);
}
printf("\n");
}

for(int i(0); i < N; i++)
{
for(int j(0); j < M-1; j++)
{
for(int k(j+1); k < M; k++)
{
if(mat[i][j] == mat[i][k]) counter++;
}
// если в одной строке находится несколько повторяющихся элементов,
// то запишется большее количество
if(counter > eq[i]) eq[i] = counter;
counter = 1;
}
}
printf("\nКоличество повторяемых элементов в строке: \n");
for(int i(0); i < N; i++)
printf("%i\n",eq[i]);
printf("\n");

// сортируем методом пузырька
for(int i(1); i < N; i++)
{
for(int j(N-1); j >= i; j--)
{
if(eq[j] < eq[j-1]){
for(int k(0); k < M; k++)
{
temp = mat[j][k];
mat[j][k] = mat[j-1][k];
mat[j-1][k] = temp;
}
temp = eq[j];
eq[j] = eq[j-1];
eq[j-1] = temp;
}
}
}

printf("\nКоличество повторяемых элементов в строке: \n");
for(int i(0); i < N; i++)
printf("%i\n",eq[i]);
printf("\n");

printf("Отсортированная матрица: \n");
// выводим отсортированную матрицу
for(int i(0); i < N; i++)
{
for(int j(0); j < M; j++)
{
printf("%3i",mat[i][j]);
}
printf("\n");
}

getch();
return 0;
}
ZM
Zura Meladze
5 430