Что то не правильно в красном коде)вроде нахожу максимальное и минимальное значение в строках и записываю их в переменные,потом подставляю чтобы эти строчки поменять и вывести в массиве Б. 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] } //---------------------------------------------------------------------------
Лень самому разобраться? Да? Плати деньги. Мудак. Пруфы? Почитай свои темы. Я бы таким, как ты, вообще ничем не помогал.
Тебе особое спасибо за прошлую задачу с помощью шаблонов,которые я не просил вообще использовать еще и за маты тоже спасибо.
Ась?Ты опиши нормально задачу,которая перед тобой поставлена, а то я не совсем уловил, что должен выполнять скрипт и каков результат. Фраза "вроде нахожу" улыбнула Ты как бы "вроде" находишь, а мы "как-бы" советуем.
Условие. Нужно найти в массив двухмерном А наибольший элемент и наименьший и поменять строчки местами ,где они находятся.
Вроде все правильно,но работает по столбцам ,а не по строкам,может все дело в выводе))) 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); } } //---------------------------------------------------------------------------
Так уж и быть, я тебе помогу снова, несмотря на то, что ты такой неблагодарный. Правда, так как борланд говно, я буду писать без использования его возможностей. 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 width, height; 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 = 0; i < height; i++) { std::vector<unsigned int> row; for(unsigned int j = 0; j < width; j++) { unsigned int element; std::cout << "Enter " << (i + 1) << " row, " << (j + 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_max, row_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; } И, как всегда, иллюстрация работы: Тут у нас 2 и 4 строки массива поменялись местами, потому что 2-я содержала максимальный элемент, а 4-я - минимальный. И я даже не использовал шаблоны и C++0x.
Скажи пожалуйст зачем мне консоль и еще и вижуал)я в консоле деаю эту задачу нормально!мне в билдере почему не пашет ,код вроде верный. GRRRL Power ТЫ всегда такой мудренный код пишешь на такие простые задачи)не представляю ,как ты пишешь большие проги лишнего кода,указатели)))
Это уже выпиндрешь)Я попрсил посмотреть код на билдере ,а не написать ,что это си,с шаблонами ,структурами и прочей хереты решать лугкую задачу это нормально))) ты посмотри сколько секунд его код и мой займет) и это всего лишь простая задача,но здесь не в этом проблемма,не вижу тех кто видит ошибку и хорошо разбирается в коде!!
Ты не поверишь, насколько медленный борланд... Ты попросил вот что: Так что выпендриваешься тут уже ты. Скачай себе QBasic, он тебе поможет решать задачи без всякой "хереты". А если ты пишешь на C++, то и пиши на C++, а не на каком-то убогом подобии.
Я пишу простые примеры ,что ты хочешь чтобы сразу писать на отлично и понимать твои шаблоны и векторы?Я не проходил эту тему и не собираюсь пока ее разбирать. Ты луучше бы код мой посмотрел и сказал в чем ошибка,уже 2 человека не могут понять в чем проблемма)
Какого хуя тогда ты тут хочешь от людей, я не пойму. Появился какой-то хер с горы, который ВОООБЩЕ нифига не понимает в программировании и начинает качать права. ЗЫ. Накипело.
так уж и быть, вот тебе код: 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; } это все ты должен был проходить. ищет первое наименьшее и первое наибольшее и меняет местами соответствующие строки.