динамические массивы.матрицы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by VASIA 29, 24 Dec 2011.

  1. VASIA 29

    VASIA 29 New Member

    Joined:
    21 Dec 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    помогите пожалуйста решить задачу на языке Си!!

    Дана матрица размера M  N. Продублировать 2 раза столбец матрицы, содержащий ее минимальный элемент.

    продублировать-это значит после столбца,который содержит минимальный элемент вставить такой же столбец.

    заранее спасибо!
     
  2. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,770
    Likes Received:
    881
    Reputations:
    859
    Пример программы на С++. Чисто для понимания алгоритма. Ворчуны нах =/

    Code:
    #include <conio.h>
    #include <iostream.h>
    
    int main ()
    {
    int m,n,i,j,a[100][100],min,nomstol;
    clrscr();
    cout<<"Input skolko strok = ";
    cin>>n;
    cout<<"Input skolko stolbcov = ";
    cin>>m;
    cout<<endl;
    for (j=1;j<=n;j++)
         {
         for (i=1;i<=m;i++)
    	  {
    	 cout<<"Input a["<<j<<","<<i<<"]=";
    	 cin>>a[i][j];
    	  }
         }
    cout<<endl;
    min=a[1][1];
    nomstol=1;
    cout<<"Ishodniy massiv"<<endl;
    cout<<endl;
    for (j=1;j<=n;j++)
         {
         for (i=1;i<=m;i++)
    	  {
    	  cout<<a[i][j]<<" ";
    	  if (a[i][j]<min)
    	      {
    	      min=a[i][j];
    	      nomstol=i;
    	      }
    	  }
         cout<<endl;
         }
    
    for (i=1;i<=m;i++)
         {
         for (j=1;j<=n;j++)
    	{
    	if (i==nomstol)
    	   {
    	   a[i+1][j]=a[i][j];
    	   }
    	}
         }
    cout<<endl;
    cout<<"New massiv"<<endl;
    cout<<endl;
    for (j=1;j<=n;j++)
         {
         for (i=1;i<=m;i++)
    	  {
    	  cout<<a[i][j]<<" ";
    	  }
         cout<<endl;
         }
    cout<<endl;
    getch();
    return 0;
    }
    
    
     
    _________________________
    #2 BigBear, 25 Dec 2011
    Last edited: 26 Dec 2011
  3. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    BigBear, чистый Си, ага.
     
  4. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,770
    Likes Received:
    881
    Reputations:
    859
    Зачастую когда говорят Си имеют ввиду С++, ибо он чаще преподается в универах на различных специальностях. В любом случае - это только алгоритм. Знающему человеку (или почти знающему) не составит труда переписать его на чистый Си.
     
    _________________________
  5. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    И где вы здесь увидели чистый С?
     
  6. Kudesnik

    Kudesnik New Member

    Joined:
    25 Dec 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Вроде так
    Code:
    #include <stdlib.h>
    #include <stdio.h>
    
    
    int main()
    {
    	int n, m, **mass;
    	n = m = 0;
    	printf("vvedfite n m: ");
    	scanf("%d %d", &n, &m);
    	mass = (int **)malloc(n * sizeof(int));
    	for(int i = 0; i < n; i++)
    		mass[i] = (int *)malloc(m * sizeof(int));
    	for(int i = 0; i < n; i++)
    	{
    		for(int j = 0; j < m; j++)
    		{
    			printf("vvedite element [%d][%d]", i, j);
    			scanf("%d", &mass[i][j]);
    		}
    	}
    	int min = mass[0][0];
    	int column = 0;
    	for(int i = 0; i < n; i++)
    	{
    		for(int j = 0; j < m; j++)
    		{
    			if(mass[i][j] < min)
    			{
    				min = mass[i][j];
    				column = j;
    			}
    		}
    	}
    	for(int i = 0; i < n; i++)
    	{
    		for(int j = 0; j < m; j++)
    		{
    			printf("%4d", mass[i][j]);
    			if(j == column)
    				printf("%4d", mass[i][j]);
    		}
    		printf("\n");
    	}
    	for(int i = 0; i < n; i++)
    	{
    		free(mass[i]);
    	}
    	free(mass);
    	return 0;
    }
    
     
  7. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    Kudesnik, отлично, только в памяти то ничего не дублируется.

    Я бы завернул связанный список столбцов, тогда продублировать было бы очень легко.
     
  8. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    Товарищ scrat просил передать: http://pastebin.com/czFbKNfK