1.Число N и M вставляет. Заполните 2-мерный массив N и M случайными числами и замените максимальное и минимальное числа в массиве и распечатайте массив на экране.
2.Число N и M вставляет. Заполните 2-мерный массив N и M случайными числами и распечатайте индексы максимального и минимального числа в массиве на экране.
3.Число N и M вставляет. Заполните 2-мерный массив N и M случайными числами и распечатайте максимальное и минимальное числа в массиве на экране.
4.Число N и M вставляет. Заполните 2-мерный массив N и M случайными числами и распечатайте минимальные числа в каждой строке на экране.
5.Число N и M вставляет. Заполните 2-мерный массив N и M случайными числами и распечатайте максимальные числа в каждом столбце на экране.
C/C++
Помогите пожалуйста с Массивами .В языке С .Заполнил 2-мерный массив N и M случайными числами дальше не понимаю.
1)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int n,m; printf("N M: "); scanf("%d%d",&n,&m); int a[n][m]; srand(time(NULL));
for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=rand()%100;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}
int imin=0,imax=0,jmin=0,jmax=0,t; printf("\n");
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]>a[imax][jmax])imax=i,jmax=j;
if(a[i][j]<a[imin][jmin])imin=i,jmin=j;}
t=a[imax][jmax]; a[imax][jmax]=a[imin][jmin]; a[imin][jmin]=t;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}}
2)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int n,m; printf("N M: "); scanf("%d%d",&n,&m); int a[n][m]; srand(time(NULL));
for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=rand()%100;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}
int imin=0,imax=0,jmin=0,jmax=0,t; printf("\n");
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]>a[imax][jmax])imax=i,jmax=j;
if(a[i][j]<a[imin][jmin])imin=i,jmin=j;}
printf("max=a[%d][%d], min=a[%d][%d]\n",imax,jmax,imin,jmin);}
3)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int n,m; printf("N M: "); scanf("%d%d",&n,&m); int a[n][m]; srand(time(NULL));
for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=rand()%100;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}
int imin=0,imax=0,jmin=0,jmax=0,t; printf("\n");
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]>a[imax][jmax])imax=i,jmax=j;
if(a[i][j]<a[imin][jmin])imin=i,jmin=j;}
printf("max=%d, min=%d\n",a[imax][jmax],a[imin][jmin]);}
Уф, надоело...
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int n,m; printf("N M: "); scanf("%d%d",&n,&m); int a[n][m]; srand(time(NULL));
for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=rand()%100;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}
int imin=0,imax=0,jmin=0,jmax=0,t; printf("\n");
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]>a[imax][jmax])imax=i,jmax=j;
if(a[i][j]<a[imin][jmin])imin=i,jmin=j;}
t=a[imax][jmax]; a[imax][jmax]=a[imin][jmin]; a[imin][jmin]=t;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}}
2)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int n,m; printf("N M: "); scanf("%d%d",&n,&m); int a[n][m]; srand(time(NULL));
for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=rand()%100;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}
int imin=0,imax=0,jmin=0,jmax=0,t; printf("\n");
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]>a[imax][jmax])imax=i,jmax=j;
if(a[i][j]<a[imin][jmin])imin=i,jmin=j;}
printf("max=a[%d][%d], min=a[%d][%d]\n",imax,jmax,imin,jmin);}
3)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int n,m; printf("N M: "); scanf("%d%d",&n,&m); int a[n][m]; srand(time(NULL));
for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=rand()%100;
for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%3d",a[i][j]); printf("\n");}
int imin=0,imax=0,jmin=0,jmax=0,t; printf("\n");
for(int i=0;i<n;i++)for(int j=0;j<n;j++){
if(a[i][j]>a[imax][jmax])imax=i,jmax=j;
if(a[i][j]<a[imin][jmin])imin=i,jmin=j;}
printf("max=%d, min=%d\n",a[imax][jmax],a[imin][jmin]);}
Уф, надоело...
#include
#include
#include
void insert(const char c, unsigned * num)
{
do
{
printf("%c = ",c);
scanf("%u",num);
}while(!num);
}
unsigned * * create(unsigned * M, unsigned * N)
{
unsigned * * A = (unsigned**) NULL;
insert('N',N);
insert('M',M);
A = (unsigned**) malloc(sizeof(unsigned*) * *N);
for(unsigned i = 0; i < *N; i++)
*(A + i) = (unsigned*) malloc(sizeof(unsigned) * *M);
srand(time(NULL));
return A;
}
void generate(unsigned * * A, unsigned M, unsigned N)
{
rand();
for(unsigned x = 0; x < N; x++)
for(unsigned y = 0; y < M; y++)
A[x][y] = rand() % 31 + 15; /* [15;45] */
}
void print(unsigned * * A, unsigned N, unsigned M)
{
putchar('\n');
for(unsigned x = 0; x < N; x++)
{
for(unsigned y = 0; y < M; y++)
printf("\t%u",A[x][y]);
putchar('\n');
}
putchar('\n');
}
void f1(unsigned * * A, unsigned N, unsigned M,
unsigned * max_all, unsigned * min_all)
{
printf(" 1 \n");
A = create(&M,&N);
generate(A,M,N);
print(A,N,M);
unsigned x_min, x_max, y_min, y_max, buf;
*max_all = *min_all = A[0][0];
for(unsigned x = 0; x < N; x++)
for(unsigned y = 0; y < M; y++)
{
if(A[x][y] > *max_all)
{
*max_all = A[x][y];
x_max = x;
y_max = y;
}
else if(A[x][y] < *min_all)
{
*min_all = A[x][y];
x_min = x;
y_min = y;
}
}
buf = A[x_max][y_max];
A[x_max][y_max] = A[x_min][y_min];
A[x_min][y_min] = buf;
print(A,N,M);
if(A == (unsigned**) NULL)
exit(1);
for(unsigned i = 0; i < N; i++)
{
if(A[i] == (unsigned*) NULL)
exit(1);
free(A[i]);
A[i] = (unsigned*) NULL;
}
free(A);
A = (unsigned**) NULL;
}
void f2(unsigned * * A, unsigned N, unsigned M,
unsigned * max_all, unsigned * min_all)
{
printf(" 2 \n");
A = create(&M,&N);
generate(A,M,N);
print(A,N,M);
unsigned x_min, x_max, y_min, y_max;
*max_all = *min_all = A[0][0];
for(unsigned x = 0; x < N; x++)
for(unsigned y = 0; y < M; y++)
{
if(A[x][y] > *max_all)
{
*max_all = A[x][y];
x_max = x;
y_max = y;
}
else if(A[x][y] < *min_all)
{
*min_all = A[x][y];
x_min = x;
y_min = y;
}
}
printf("\nMax -- A[%u][%u]\n",x_max,y_max);
printf("Min -- A[%u][%u]\n\n",x_min,y_min);
if(A == (unsigned**) NULL)
exit(1);
for(unsigned i = 0; i < N; i++)
{
if(A[i] == (unsigned*) NULL)
exit(1);
free(A[i]);
A[i] = (unsigned*) NULL;
}
free(A);
A = (unsigned**) NULL;
}
void f3(unsigned * * A, unsigned N, unsigned M,
unsigned * max_all, unsigned * min_all)
{
printf(" 3 \n");
A = create(&M,&N);
generate(A,M,N);
print(A,N,M);
unsigned x_min, x_max, y_min, y_max;
*max_all = *min_all = A[0][0];
for(unsigned x = 0; x < N; x++)
for(unsigned y = 0; y < M; y++)
{
if(A[x][y] > *max_all)
{
*max_all = A[x][y];
x_max = x;
y_max = y;
}
else if(A[x][y] < *min_all)
{
*min_all = A[x][y];
x_min = x;
y_min = y;
}
}
printf("\nMax = %u\n", A[x_max][y_max]);
printf("Min = %u\n\n", A[x_min][y_min]);
if(A == (unsigned**) NULL)
exit(1);
for(unsigned i = 0; i < N; i++)
{
if(A[i] == (unsigned*) NULL)
exit(1);
free(A[i]);
A[i] = (unsigned*) NULL;
}
free(A);
A = (unsigned**) NULL;
}
/* см комменты */
Максим Сидоров
void f4(unsigned * * A, unsigned N, unsigned M,
unsigned * min_stroka)
{
printf(" 4 \n");
A = create(&M,&N);
generate(A,M,N);
min_stroka = (unsigned*) malloc (sizeof(char) * N);
print(A,N,M);
for(unsigned x = 0; x < N; x++)
{
min_stroka[x] = A[x][0];
for(unsigned y = 0; y < M; y++)
if(A[x][y] < min_stroka[x])
min_stroka[x] = A[x][y];
printf("Минимальное число в строке %u равно %u\n", x + 1, min_stroka[x]);
}
if(min_stroka == (unsigned*) NULL)
exit(1);
free(min_stroka);
min_stroka = (unsigned*) NULL;
if(A == (unsigned**) NULL)
exit(1);
for(unsigned i = 0; i < N; i++)
{
if(A[i] == (unsigned*) NULL)
exit(1);
free(A[i]);
A[i] = (unsigned*) NULL;
}
free(A);
A = (unsigned**) NULL;
Максим Сидоров
}
void f5(unsigned * * A, unsigned N, unsigned M,
unsigned * max_stolb)
{
printf(" 5 \n");
A = create(&M,&N);
generate(A,M,N);
max_stolb = (unsigned*) malloc (sizeof(char) * M);
print(A,N,M);
for(unsigned x = 0; x < M; x++)
{
max_stolb[x] = A[0][x];
for(unsigned y = 0; y < N; y++)
if(A[y][x] > max_stolb[x])
max_stolb[x] = A[y][x];
printf("Максимальное число в строке %u равно %u\n", x + 1, max_stolb[x]);
}
Максим Сидоров
if(max_stolb == (unsigned*) NULL)
exit(1);
free(max_stolb);
max_stolb = (unsigned*) NULL;
if(A == (unsigned**) NULL)
exit(1);
for(unsigned i = 0; i < N; i++)
{
if(A[i] == (unsigned*) NULL)
exit(1);
free(A[i]);
A[i] = (unsigned*) NULL;
}
free(A);
A = (unsigned**) NULL;
}
int main()
{
unsigned M,N,**A;
unsigned max_all, * max_stolb;
unsigned min_all, * min_stroka;
f1(A, N, M, & max_all, & min_all);
f2(A, N, M, & max_all, & min_all);
f3(A, N, M, & max_all, & min_all);
f4(A, N, M, min_stroka);
f5(A, N, M, max_stolb);
return 0;
}
Евгений Тришин
Спасибо.Сможете 4 и 5ю обяснять. Не могу понять. Unsigned что такое мы еще не прошли эту тему
Евгений Тришин
Спасибо
Похожие вопросы
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- Помогите пожалуйста решить задачу на языке С#.
- Помогите пожалуйста решить программу на языке СИ!!!
- Помогите пожалуйста доделать задачу на языке СИ!!!
- Помогите пожалуйста решить задачу на языке СИ или С# !!!
- Здравствуйте, помогите пожалуйста написать программы на языке C++.
- Помогите, пожалуйста, написать программу на языке Си.
- Помогите пожалуйста с заданиями.В языке С.
- Даны два числа: n и m. Создайте двумерный массив размером n×m и заполните его в соответствии с примером.
- Для всех задач сформировать одномерный массив N случайных чисел из интервала (-10; 10).
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
int n,m; printf("N M: "); scanf("%d%d",&n,&m); int a[n][m]; srand(time(NULL));
for(int i=0;i<n;i++)for(int j=0;j<n;j++)a[i][j]=rand()%100;
for(int i=0;i<n;i++){
int jmin=0; for(int j=0;j<n;j++){if(a[i][j]<a[i][jmin])jmin=j;
printf("%3d",a[i][j]);} printf(" min=%d\n",a[i][jmin]);}}
А за первоначальный минимальный в каждой строке принимается ее первый элемент.
Попутно отвечу на твой вопрос о unsigned. В Си много разных типов чисел. int ты знаешь. Переменная объявленная как int, может принимать значения от -2 147 483 648 до 2 147 483 647. Объявленная как unsigned int (можно писать в программе и просто unsigned) - от 0 до 4 294 967 295.
Это чаще всего не имеет значения. Есть и другие типы - long int (можно писать просто long), short int (можно писать просто short) и т.п.