В чем ошибка си++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Tofy, 21 May 2011.

  1. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Что то не правильно в красном коде)вроде нахожу максимальное и минимальное значение в строках и записываю их в переменные,потом подставляю чтобы эти строчки поменять и вывести в массиве Б.
    Code:
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    #include<math.h>
    int A[100][100],B[100][100];
    int N;
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
    N=2;
    Edit1->Text=FloatToStr(N);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=N+1;
    StringGrid2->RowCount=N+1;
    StringGrid1->Cells[0][0]="Ìàññèâ À:";
    StringGrid2->Cells[0][0]="Ìàññèâ B:";
     for (int i=1;i<N;i++)
       {
         StringGrid1->Cells[0][i]="i= "+IntToStr(i);
         StringGrid1->Cells[i][0]="j= "+IntToStr(i);
         }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    N=StrToInt(Edit1->Text);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=N+1;
    StringGrid2->RowCount=N+1;
    StringGrid2->ColCount=N+1;
     for (int i=1;i<=N;i++)
       {
         StringGrid1->Cells[0][i]="i= "+IntToStr(i);
         StringGrid1->Cells[i][0]="j= "+IntToStr(i);
         StringGrid2->Cells[0][i]="i= "+IntToStr(i);
         StringGrid2->Cells[i][0]="j= "+IntToStr(i);
    
       }
    }
    
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int i,j;
    int K;
    int minz=A[1][1];
    int maxz=0;
    int smin=1,smax=1;
    for (i=1;i<=N;i++)
      for (j=1;j<=N;j++)
         A[i][j]=StrToInt(StringGrid1->Cells[i][j]);
    
         for (i=1;i<=N;i++)
           {
              for (j=1;j<=N;j++)
              {
                if (A[i][j]<minz) {
                 minz=A[i][j];
                 smin=i;  }
    
                if(A[i][j]>maxz){
                 maxz=A[i][j];
                 smax=i; }
               }
            }
    
         [COLOR=DarkOrange]for (i=1;i<=N;i++)
       for ( j=1;j<=N;j++)
       {
          K=A[smax][j];
          A[smax][j]=A[smin][j];
          A[smin][j]=K;
          StringGrid2->Cells[i][j]=FloatToStrF(A[i][j],ffFixed,6,2);
       }[/COLOR]
    
    
    
    }
    //---------------------------------------------------------------------------
    
     
    #1 Tofy, 21 May 2011
    Last edited: 21 May 2011
  2. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Всем лень помочь,простая задача?
     
  3. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Очень простая, я думал, ты уже и сам ее решил за 4 часа...
     
  4. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    Лень самому разобраться?
    Да? Плати деньги.
    Мудак. Пруфы? Почитай свои темы. Я бы таким, как ты, вообще ничем не помогал.
     
  5. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Не могу решить,не пойму в чем проблемма с перестановкой,сижу уже 5 часов))
     
  6. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Тебе особое спасибо за прошлую задачу с помощью шаблонов,которые я не просил вообще использовать еще и за маты тоже спасибо.
     
  7. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Если есть стимул,предлагайте цену в аське 639797153 ,яд.
     
  8. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Нет желающих?
     
  9. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Ась?Ты опиши нормально задачу,которая перед тобой поставлена, а то я не совсем уловил, что должен выполнять скрипт и каков результат.
    Фраза "вроде нахожу" улыбнула:) Ты как бы "вроде" находишь, а мы "как-бы" советуем.
     
  10. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0

    Условие.
    Нужно найти в массив двухмерном А наибольший элемент и наименьший и поменять строчки местами ,где они находятся.
     
  11. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Вроде все правильно,но работает по столбцам ,а не по строкам,может все дело в выводе)))
    Code:
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    #include<math.h>
    int A[100][100],B[100][100];
    int N;
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
    N=2;
    Edit1->Text=FloatToStr(N);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=N+1;
    StringGrid2->RowCount=N+1;
    StringGrid1->Cells[0][0]="Ìàññèâ A:";
    StringGrid2->Cells[0][0]="Ìàññèâ B:";
     for (int i=1;i<N;i++)
       {
         StringGrid1->Cells[0][i]="i= "+IntToStr(i);
         StringGrid1->Cells[i][0]="j= "+IntToStr(i);
         StringGrid2->Cells[0][i]="i= "+IntToStr(i);
         StringGrid2->Cells[i][0]="j= "+IntToStr(i);
         }
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    N=StrToInt(Edit1->Text);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=N+1;
    StringGrid2->RowCount=N+1;
    StringGrid2->ColCount=N+1;
     for (int i=1;i<=N;i++)
       {
         StringGrid1->Cells[0][i]="i= "+IntToStr(i);
         StringGrid1->Cells[i][0]="j= "+IntToStr(i);
         StringGrid2->Cells[0][i]="i= "+IntToStr(i);
         StringGrid2->Cells[i][0]="j= "+IntToStr(i);
    
       }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    int i,j;
    int K;
    for (i=1;i<=N;i++) {
      for (j=1;j<=N;j++){
         A[i][j]=StrToFloat(StringGrid1->Cells[i][j]);
    }
    }
    int minz=A[1][1];
    int maxz=A[1][1];
    int smin=1,smax=1;
         for (i=1;i<=N;i++)
           {
              for (j=1;j<=N;j++)
              {
                if (A[i][j]<minz) {
                 minz=A[i][j];
                 smin=i;  }
    
                if(A[i][j]>maxz){
                 maxz=A[i][j];
                 smax=i; }
               }
            }
    
         for ( j=1;j<=N;j++)
        {
           K=A[smax][j];
           A[smax][j]=A[smin][j];
           A[smin][j]=K;
        }
      for (i=1;i<=N;i++)
       for ( j=1;j<=N;j++){
          StringGrid2->Cells[i][j]=FloatToStrF(A[i][j],ffFixed,6,2);
    }
    }
    //---------------------------------------------------------------------------
     
  12. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Так уж и быть, я тебе помогу снова, несмотря на то, что ты такой неблагодарный. Правда, так как борланд говно, я буду писать без использования его возможностей.

    PHP:
    #include <vector>
    #include <iostream>
    #include <string>
    #include <algorithm>

    void print_array(const std::vector<std::vector<unsigned int> >& arr)
    {
        for(
    std::vector<std::vector<unsigned int> >::const_iterator it arr.begin(); it != arr.end(); it++)
        {
            for(
    std::vector<unsigned int>::const_iterator it2 = (*it).begin(); it2 != (*it).end(); it2++)
            {
                
    std::cout << (*it2) << " ";
            }
            
    std::cout << std::endl;
        }
    }


    int main()
    {
        
    std::vector<std::vector<unsigned int> > arr;

        
    unsigned int widthheight;
        
    std::cout << "Enter array width: ";
        
    std::cin >> width;
        
    std::cout << "Enter array height: ";
        
    std::cin >> height;

        if(!
    width || !height)
            return 
    0;

        for(
    unsigned int i 0heighti++)
        {
            
    std::vector<unsigned introw;

            for(
    unsigned int j 0widthj++)
            {
                
    unsigned int element;
                
    std::cout << "Enter " << (1) << " row, " << (1) << " element: ";
                
    std::cin >> element;
                
    row.push_back(element);
            }

            
    arr.push_back(row);
        }

        
    std::cout << "Now your array is: " << std::endl;
        
    print_array(arr);

        
    unsigned int max_elem arr[0][0], min_elem arr[0][0];

        
    std::vector<std::vector<unsigned int> >::iterator row_with_maxrow_with_min;

        for(
    std::vector<std::vector<unsigned int> >::iterator it arr.begin(); it != arr.end(); it++)
        {
            
    unsigned int row_max = *std::max_element((*it).begin(), (*it).end());
            if(
    row_max max_elem)
            {
                
    row_with_max it;
                
    max_elem row_max;
            }

            
    unsigned int row_min = *std::min_element((*it).begin(), (*it).end());
            if(
    row_min min_elem)
            {
                
    row_with_min it;
                
    min_elem row_min;
            }
        }

        if(
    row_with_max != row_with_min)
            
    std::swap(*row_with_max, *row_with_min);

        
    std::cout << "After swapping your array is: " << std::endl;
        
    print_array(arr);

        return 
    0;
    }
    И, как всегда, иллюстрация работы:
    [​IMG]
    Тут у нас 2 и 4 строки массива поменялись местами, потому что 2-я содержала максимальный элемент, а 4-я - минимальный. И я даже не использовал шаблоны и C++0x.
     
    #12 GRRRL Power, 24 May 2011
    Last edited: 24 May 2011
    1 person likes this.
  13. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Скажи пожалуйст зачем мне консоль и еще и вижуал)я в консоле деаю эту задачу нормально!мне в билдере почему не пашет ,код вроде верный.
    GRRRL Power ТЫ всегда такой мудренный код пишешь на такие простые задачи)не представляю ,как ты пишешь большие проги лишнего кода,указатели)))
     
    #13 Tofy, 24 May 2011
    Last edited: 24 May 2011
  14. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    GRRRL Power нaписaл прaвильный пльсовый код. А то, что вы пишитe в стилe С - это вaши проблeмы.
     
  15. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Это уже выпиндрешь)Я попрсил посмотреть код на билдере ,а не написать ,что это си,с шаблонами ,структурами и прочей хереты решать лугкую задачу это нормально))) ты посмотри сколько секунд его код и мой займет) и это всего лишь простая задача,но здесь не в этом проблемма,не вижу тех кто видит ошибку и хорошо разбирается в коде!!
     
  16. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Ты не поверишь, насколько медленный борланд...

    Ты попросил вот что:
    Так что выпендриваешься тут уже ты.

    Скачай себе QBasic, он тебе поможет решать задачи без всякой "хереты". А если ты пишешь на C++, то и пиши на C++, а не на каком-то убогом подобии.
     
    #16 GRRRL Power, 24 May 2011
    Last edited: 24 May 2011
  17. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Я пишу простые примеры ,что ты хочешь чтобы сразу писать на отлично и понимать твои шаблоны и векторы?Я не проходил эту тему и не собираюсь пока ее разбирать.
    Ты луучше бы код мой посмотрел и сказал в чем ошибка,уже 2 человека не могут понять в чем проблемма)
     
  18. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    Какого хуя тогда ты тут хочешь от людей, я не пойму.
    Появился какой-то хер с горы, который ВОООБЩЕ нифига не понимает в программировании и начинает качать права.
    ЗЫ. Накипело.
     
    1 person likes this.
  19. Tofy

    Tofy New Member

    Joined:
    21 Nov 2010
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    Что у тебя накипело)писать такие коменты?
     
  20. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    так уж и быть, вот тебе код:
    Code:
    #include <iostream>
    #include <ctime>
    
    int main() {
    	int matrix[ 5 ][ 5 ];
    	int min = 0;
    	int minPos = 0;
    	int max = 0;
    	int maxPos = 0;
    
    	std::srand( std::time( 0 ) );
    
    	for( int i = 0; i < 5; i++ )
    		for( int k = 0; k < 5; k++ )
    			matrix[ i ][ k ] = 1 + rand()  % 9;
    
    	std::cout << "Original matrix:\n";
    
    	for( int i = 0; i < 5; i++ ) {
    		for( int k = 0; k < 5; k++ )
    			std::cout << matrix[ i ][ k ] << ' ';
    		std::cout << std::endl;
    	}
    
    	std::cout << std::endl;
    
    	min = matrix[ 0 ][ 0 ];
    	max = matrix[ 0 ][ 0 ];
    
    	for( int i = 0; i < 5; i++ )
    		for( int k = 0; k < 5; k++ ) {
    			if( min > matrix[ i ][ k ] ) {
    				min = matrix[ i ][ k ];
    				minPos = i;
    			}
    
    			if( max < matrix[ i ][ k ] ) {
    				max = matrix[ i ][ k ];
    				maxPos = i;
    			}
    		}
    
    		int temp = 0;
    		for( int i = 0; i < 5; i++ ) {
    			temp = matrix[ minPos ][ i ];
    			matrix[ minPos ][ i ] = matrix[ maxPos ][ i ];
    			matrix[ maxPos ][ i ] = temp;
    		}
    
    		std::cout << "New matrix(" << minPos << "<->" << maxPos << "):\n";
    
    		for( int i = 0; i < 5; i++ ) {
    			for( int k = 0; k < 5; k++ )
    				std::cout << matrix[ i ][ k ] << ' ';
    			std::cout << std::endl;
    		}
    
    		return 0;
    }
    

    это все ты должен был проходить. ищет первое наименьшее и первое наибольшее и меняет местами соответствующие строки.
     
    1 person likes this.