lil_SV

8 лаба

Oct 8th, 2021
977
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4.  
  5. void in(double **a,int n,int m);
  6. double * sum(double **a,int n,int m);
  7. int getMinPos(double *a,int n);
  8. int getMaxPos(double *a,int n);
  9. void out(double **a,int pos,int m);
  10.  
  11. int main()
  12. {
  13.     double **a;
  14.     int n,m;
  15.     printf("Введите N, M: ");
  16.     scanf("%d%d",&n,&m);
  17.     a=(double**)malloc(n*m*sizeof(double)+n*sizeof(double*));
  18.     double *prt=(double*)(a+n);
  19.     for(int i=0;i!=n;i++)a[i]=(prt+m*i);
  20.     in(a,n,m);
  21.     double *s=sum(a,n,m);
  22.     printf("Максимум\n");
  23.     out(a,getMaxPos(s,n),m);
  24.     printf("Минимум\n");
  25.     out(a,getMinPos(s,n),m);
  26.     return 0;
  27. }
  28.  
  29.  
  30. void in(double **a,int n,int m){
  31.     printf("Введите %d чисел\n",n*m);
  32.     for(int i=0;i<n;++i){
  33.         for(int j=0;j<m;++j){
  34.             scanf("%lf",&a[i][j]);
  35.         }
  36.     }
  37. }
  38.  
  39. double * sum(double **a,int n,int m){
  40.     double *ans=(double*)malloc(sizeof(double)*n);
  41.     for(double *i=ans;i!=ans+n;i++)*i=0;
  42.     for(int i=0;i<n;++i){
  43.         for(int j=0;j<m;++j){
  44.             ans[i]+=a[i][j];
  45.         }
  46.     }
  47.     return ans;
  48. }
  49.  
  50. int getMinPos(double *a,int n){
  51.     double ans=999999.0;
  52.     int pos=-1;
  53.     for(int i=0;i<n;i++){
  54.         if(ans>a[i]){
  55.             ans=a[i];
  56.             pos=i;
  57.         }
  58.     }
  59.     return pos;
  60. }
  61.  
  62. int getMaxPos(double *a,int n){
  63.     double ans=-999999.0;
  64.     int pos=-1;
  65.     for(int i=0;i<n;i++){
  66.         if(ans<a[i]){
  67.             ans=a[i];
  68.             pos=i;
  69.         }
  70.     }
  71.     return pos;
  72. }
  73.  
  74. void out(double **a,int pos,int m){
  75.     for(int j=0;j<m;j++){
  76.         printf("%lf ",a[pos][j]);
  77.     }
  78.     printf("\n");
  79. }
  80.  
  81.  
RAW Paste Data