/*Упорядочить динамический массив в порядке возрастания (Метод "пузырька")*/

 

#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;

}

Сайт создан в системе uCoz