/*Упорядочить динамический массив в порядке возрастания (Метод
"пузырька")*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int *p;
int temp;
int n;
printf("Enter kol-vo elementov:\n");
scanf("%d",&n);
p=(int*)calloc(n,sizeof(int));
int fl=1;
printf("Enter massive:\n");
for (int
i=0;i<n;i++)
scanf("%d",p+i);
while (fl==1)
{
fl=0;
for(int
i=0;i<n-1;i++)
if (*(p+i)>*(p+i+1))
{
temp=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=temp;
fl=1;
}
}
for(int
i=0;i<n;i++)
printf("%d ",*(p+i));
free(p);
getch();
return 0;
}
/*Составить ф-ю, которая вычисляет произведение элементов строки матрицы
S[m][n], в которой находится максимальный элемент матрицы и сумму элементов
столбца, где находится минимальный элемент.*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void nm(float *a, int m, int n, float *s, float *p);
int main()
{ float *a;
float s,p;
int i,j,m,n;
printf("Enter m:\n");
scanf("%d", &m);
printf("Enter n:\n");
scanf("%d", &n);
a=(float*)calloc(m*n,sizeof(float));
printf("Enter massiv A:\n");
for (i=0;i<m;i++)
for (j=0;j<n;j++)
scanf("%f", a+i*n+j);
printf("Massive A:\n");
for (i=0;i<m;i++)
{ for
(j=0;j<n;j++)
printf("%3.1f ", *(a+i*n+j));
printf("\n");
}
nm(a,m,n,&s,&p);
printf("Summa: ");
printf("%4.2f ", s);
printf("\n");
printf("Proizvedenie: ");
printf("%4.2f ", p);
getch();
free(a);
return 0;
}
void nm(float *a, int m, int n, float *s, float *p)
{ int i,j,imax,jmin;
float max=-1.0e10, min=1.0e10;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{ if(*(a+i*n+j)>max)
{
max=*(a+i*n+j);
imax=i;
}
if(*(a+i*n+j)<min)
{ min=*(a+i*n+j);
jmin=j;
}
}
*s=0;
*p=1;
for(i=0;i<m;i++)
{ if(i==imax)
for(j=0;j<n;j++)
*s=*s+a[i*n+j];
}
for(i=0;i<m;i++)
*p=*p*a[i*n+jmin];
}
/*В динамическом массиве A сформировать и распечатать динамический массив
B из количеств положительных элементов кеаждой строки. Распечатать сам массив,
а справа - массив B. Определить максимальный и минимальный элементы массив B.*/
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
float *a, *b;
int i,j,m,n,k;
printf("Enter m\n");
scanf("%d",&m);
printf("Enter n\n");
scanf("%d",&n);
a=(float*)calloc(m*n,sizeof(float));
b=(float*)calloc(m,sizeof(float));
printf("Enter massive\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f", &a[i*n+j]);
k=0;
int c=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
if(a[i*n+j]>0)
c++;
b[k]=c;k++;c=0;}
float min=1.0e10, max=-1.0e10;
for(i=0;i<m;i++)
{if (b[i]>max)
max=b[i];
if(b[i]<min)
min=b[i];}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4.1f ",a[i*n+j]);
printf("
%4.1f\n",b[i]);
}
printf("max=%4.1f min=%4.1f",max,min);
getch();
free(a);
free(b);
return 0;
}
/*Составить массив В из количеств элементов массива C делящихся на
некоторое число без остатка*/
# include <stdafx.h>
# include <stdio.h>
# include <stdlib.h>
# include <conio.h>
# include <math.h>
void kol(int *a, int k, int *b, int n, int m);
int maxi(int *b, int *max, int m, int n);
void main()
{ int *a,i,j,k,*b,p,m,n;
printf("Enter m:\n");
scanf("%d",&m);
printf("Enter n:\n");
scanf("%d",&n);
a=(int*)calloc(m*n,sizeof(int));
b=(int*)calloc(m,sizeof(int));
printf("Enter massiv c:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",(a+i*n+j));
printf("Enter k:\n");
scanf("%d",&k);
kol(a,k,b,n,m);
printf("Massiv a:\n");
for (i=0;i<m;i++)
{ for
(j=0;j<n;j++)
printf("%d",*(a+i*n+j));
printf("\n");
}
printf("\n");
printf("Massiv b:\n");
for (i=0;i<m;i++)
{ printf("%d",b[i]);
printf("\n");
}
int max;
max=maxi(b,&max,m,n);
printf("Maximum: ");
printf("%d",max);
free(a);
free(b);
getch();
}
void kol(int *a, int k, int *b, int n, int m)
{ int i,j,l;
for(i=0;i<m;i++)
{ l=0;
for(j=0;j<n;j++)
if (*(a+i*n+j)%k==0)
l=l++;
*(b+i)=l;
}
}
int maxi(int *b, int *max, int m, int n)
{ int i;
*max=-100000000;
for (i=0;i<n;i++)
if (b[i]>*max)
*max=b[i];
return *max;
}
/*В каждой строке динамического массива A[m][n] необходимо посчитать
количество положительных и отрицательных элементов, сформировать и распечатать
два массива из этих количеств*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float *a;
int i,j,k,l,f,g,n,m;
printf("Enter m,n\n");
scanf("%d%d",&m,&n);
a=(float*)calloc(m*n,sizeof(float));
printf("Enter massive\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",a+i*n+j);
float *b, *c;
b=(float*)calloc(m,sizeof(float));
c=(float*)calloc(m,sizeof(float));
f=0;
g=0;
for(i=0;i<m;i++)
{
k=0;
l=0;
for(j=0;j<n;j++)
{
if(*(a+i*n+j)>0)
k=k++;
if(*(a+i*n+j)<0)
l=l++;
}
*(b+f)=k;
f++;
*(c+g)=l;
g++;
}
printf("Massive\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4.1f ",*(a+i*n+j));
printf("\n");
}
printf("\n");
printf("polozhit\n");
for(i=0;i<m;i++)
printf("%4.1f\n",*(b+i));
printf("\n");
printf("Otric\n");
for(i=0;i<m;i++)
printf("%4.1f\n",*(c+i));
getch();
free(a);
free(b);
free(c);
return 0;
}
/*В динамическом массиве A[m][n] необходимо поменять местами строку с max
элементом и строку, содержащую min элемент.*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
float *a, max=-9.0e10,min=9.0e10;
int i,j,imax,imin,n,m;
printf("Enter m,n\n");
scanf("%d%d",&m,&n);
a=(float*)calloc(m*n,sizeof(float));
printf("Enter massive\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",a+i*n+j);
printf("Massive\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4.1f ",*(a+i*n+j));
printf("\n");
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
if(*(a+i*n+j)>max)
{
max=*(a+i*n+j);
imax=i;
}
if(*(a+i*n+j)<min)
{
min=*(a+i*n+j);
imin=i;
}
}
float temp;
for(j=0;j<n;j++)
{
temp=*(a+imin*n+j);
*(a+imin*n+j)=*(a+imax*n+j);
*(a+imax*n+j)=temp;
}
printf("New massive\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4.1f ",*(a+i*n+j));
printf("\n");
}
getch();
free(a);
return 0;
}
/*Cоставить функцию, которая в массиве A[m][n] определить количество
перемен знаков в каждой строке и формирует массив B[m]. Составить другую
функцию, определяющую максимальный элемент массив B.*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void kol(int *a, int *b, int m, int n);
int maximum(int *b, int m, int *max);
int main()
{
int *a;
int *b;
int i,j;
int m,n;
printf("Enter m,n\n");
scanf("%d%d",&m,&n);
a=(int*)calloc(m*n,sizeof(int));
b=(int*)calloc(m,sizeof(int));
printf("Enter massiv A:\n");
for (i=0;i<m;i++)
for (j=0;j<n;j++)
scanf("%d", &a[i*n+j]);
printf("Massive A:\n");
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
printf("%d ", a[i*n+j]);
printf("\n");
}
kol(a,b,m,n);
printf("Massive B:\n");
for(i=0;i<m;i++)
printf("%d ", b[i]);
int max;
maximum(b,m,&max);
printf("max=%d",max);
getch(); free(a);
free(b);
return 0;
}
int maximum(int *b, int m, int *max)
{
int i;
*max=-100000000;
for(i=0;i<m;i++)
if(*(b+i)>*max)
*max=*(b+i);
return *max;
}
void kol(int *a, int *b, int m, int n)
{
int i,j,f;
for(i=0;i<m;i++)
{
f=0;
{
for(j=0;j<(n-1);j++)
if((*(a+i*n+j))*(*(a+i*n+j+1))<0)
f++;
}
*(b+i)=f;
}
}
/*Поменять первую строку со строкой сумма элементов которой максимальна,
вывести сумму и номер строки*/
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
int main()
{ float a[4][4],s,max,b[4],c[4]; int i,j,imax;
printf("Enter massive:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%f",&a[i][j]);
printf("Nachal massiv\n");
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
printf("%4.1f",a[i][j]);
printf("\n");}
printf("\n"); max=-1.0e10;
for(i=0;i<4;i++)
{ s=0;
for(j=0;j<4;j++)
s=s+a[i][j];
if(s>max)
{ max=s; imax=i;}}
int l=0;
for(i=0;i<1;i++)
for(j=0;j<4;j++)
{ b[l]=a[i][j]; l++; }
printf("Pervaya stroka\n");
for(l=0;l<4;l++)
printf("%4.1f",b[l]);
printf("\n");
int k=0;
for(i=0;i<4;i++)
{ if
(i==imax)
for(j=0;j<4;j++)
{ c[k]=a[i][j]; k++; }}
printf("\n");
printf("stroka c max summoy\n");
for(k=0;k<4;k++)
printf("%4.1f",c[k]);
printf("\n");
printf("\n");
for(i=0;i<4;i++)
{ if(i==0)
{ k=0;
{ for(j=0;j<4;j++)
{ a[i][j]=c[k]; k++; }}}}
for(i=0;i<4;i++)
{ if(i==imax)
{ l=0;
{ for(j=0;j<4;j++)
{ a[i][j]=b[l]; l++; }}}}
printf("Konech massive\n");
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
printf("%4.1f",a[i][j]);
printf("\n"); }
printf("\n");
printf("max znach summy i nomer stroki 'imax'\n");
printf("%4.1f %4.1d",max,imax+1);
getch();
return 0;}
/*Удалить из массива A[4][5] столбец с номером N*/
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
int main()
{
float a[4][5], b[4][4];
int i, j, k,l, n;
printf ("Enter massive A[4][5]\n");
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
scanf("%f",&a[i][j]);
}
printf("Enter numbers stolbca n\n");
scanf("%d",&n);
k=0;
l=0;
printf("Massiv do:\n");
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
printf("%3.1f ",a[i][j]);
printf("\n");
}
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if (j!=n-1)
{
b[k][l]=a[i][j];
l++;
}
}
}
printf("Massive posle:\n");
for(k=0;k<4;k++)
{
for(l=0;l<4;l++)
printf("%3.1f ",b[k][l]);
printf("\n");
}
printf("\n");
getch();
return 0;
}
/*Вывести диагональ параллельную главной с минимальной суммой
элементов*/
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{
int *a;
printf(" Enter N:\n ");
int n;
scanf("%d",&n);
a=(int*)calloc(n*n,sizeof(int));
int i,j;
printf(" Enter A[%dx%d]:\n",n,n);
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf
("%d",a+i*n+j);
int min=9999999;
int mi,mj,s;
for (i=1;i<n;i++)
{
s=0;
for(j=0;j<n-i;j++)
s=s+a[(i+j)*n+j];
if (s<min)
{
min=s;
mi=i;
mj=0;
}
}
for (j=1;j<n;j++)
{
s=0;
for(i=0;i<n-j;i++)
s=s+a[(i+j)+i*n];
if (s<min)
{
min=s;
mi=0;
mj=j;
}
}
printf("\n diagonal (Smin=%d):\n\n",min);
while ((mi<n)&&(mj<n))
{
for (i=0;i<mj+mj;i++)
printf(" ");
printf("%d\n",a[mi++*n+mj++]);
}
free(a);
getch();
}
/*Поменять местами максимальный среди отрицательных и минимальный среди
положительных элементов массива A[10]*/
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
float a[10], maxotr, minpol, temp;
int i, idmin, idmax;
minpol=1.0e20;
maxotr=-1.0e20;
printf("Enter massive:\n");
for(i=0;i<10;i++)
{
scanf("%f",&a[i]);
}
for(i=0;i<10;i++)
{
if (a[i]<0 && a[i]>maxotr)
{
idmin=i;
maxotr=a[i];
}
if (a[i]>0 && a[i]<minpol)
{
idmax=i;
minpol=a[i];
}
}
printf("Massive:\n");
for (i=0;i<10;i++)
printf("%4.1f ", a[i]);
printf("\n");
temp=a[idmax];
a[idmax]=a[idmin];
a[idmin]=temp;
printf("New massive:\n");
for (i=0;i<10;i++)
printf("%4.1f ",a[i]);
getch();
return 0;
}