1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

Помогите с лабой на массивы, Plz !

Тема в разделе "Общие вопросы по С и С++", создана пользователем nickatin, 20 дек 2005.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. nickatin

    nickatin Гость

    Дана матрица размером NxM. Упорядочить ее строки по возрастанию их
    наибольших элементов.

    Помогите, кто-нить !!!!! Напишите как она будет выглядеть в Buildere, а то одни ошибки и ничего .... B)
     
  2. BreakPointMAN

    BreakPointMAN Гость

    Для: nickatin
    в чем именно проблема? а ты сам уже начал что-нибудь делать? есть какие-то наработки? покажи свой код... тогда посмотрим.
     
  3. nickatin

    nickatin Гость

    Вот собственно, что смог....
    Для наглядности использовал в виде промеж. массивов StringGrid 2 и 3
    В итоге выдаёт ошибку B)

    Код (Text):
    //---------------------------------------------------------------------------
    const Nmax=100;
    typedef double mas2[Nmax][Nmax];
    int N=5,M=8;

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Edit1->Text=FloatToStr(N);
    Edit2->Text=FloatToStr(M);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=M+1;
    StringGrid2->ColCount=N+1;
    StringGrid2->RowCount=M+1;
    StringGrid3->ColCount=N+1;
    StringGrid3->RowCount=M+1;

    StringGrid1->Cells[0][0]="Массив A";
    for(int i=1; i<=N;i++)
    StringGrid1->Cells[i][0]="i="+IntToStr(i);
    for(int j=1; j<=M;j++)
    StringGrid1->Cells[0][j]="j="+IntToStr(j);
    for(int i=0; i<N;i++)
    for(int j=0; j<M;j++)
    StringGrid1->Cells[i+1][j+1]=rand()%100;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    N=StrToInt(Edit1->Text);
    M=StrToInt(Edit2->Text);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=M+1;
    StringGrid2->ColCount=N+1;
    StringGrid2->RowCount=M+1;
    StringGrid3->ColCount=N+1;
    StringGrid3->RowCount=M+1;
    StringGrid1->Cells[0][0]="Массив A";
    for(int i=1; i<=N;i++)
    StringGrid1->Cells[i][0]="i="+IntToStr(i);
    for(int j=1; j<=M;j++)
    StringGrid1->Cells[0][j]="j="+IntToStr(j);
    for(int i=0; i<N;i++)
    for(int j=0; j<M;j++)
    {
    StringGrid1->Cells[i+1][j+1]=rand()%100;
    StringGrid2->Cells[i+1][j+1]=StringGrid1->Cells[i+1][j+1];
    }
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    int max1,max2,max3,k=1,min1,nstr;

    max1=StrToInt(StringGrid1->Cells[1][1]);
    for(int j=1; j<=M; j++)
    {
    for(int i=0; i<N; i++)
    {
    if (max1 < StrToInt(StringGrid1->Cells[i+1][j]))

     max1=StrToInt(StringGrid1->Cells[i+1][j]);
    }
    StringGrid3->Cells[1][k]=IntToStr(max1);
    StringGrid3->Cells[2][k]=IntToStr(j);
    k+=1;
    max1=0;
    }

    min1=StrToInt(StringGrid3->Cells[1][1]);
    for(int i=1; i<=N; i++)
    {
    for(int j=0; j<=M; j++)
    {
    if (min1 > StrToInt(StringGrid3->Cells[1][j+1]))
    {
    min1=StrToInt(StringGrid3->Cells[1][j+1]);
    nstr=StrToInt(StringGrid3->Cells[2][j+1]);
    }
    }
     for (int l=1; l<=N; l++)
     StringGrid1->Cells[l][1]=StringGrid1->Cells[l][nstr];
    }
    }
    //---------------------------------------------------------------------------
     
  4. Guest

    Guest Гость

    #include <algorithm>

    ........................................................

    double mas[Nmax][Nmax];
    int N=5,M=8;

    for (int i=0; i<N; i++)
     
  5. Guest

    Guest Гость

    #include <algorithm>

    ........................................................

    double mas[Nmax][Nmax];
    int N=5,M=8;

    for (int i=0; i<N; i++)
    sort(mas+i, mas+i+M);

    Вроде так.
    Сортировка массива по возрастанию элементов в строках
     
  6. KmeT

    KmeT Гость

    #include <algorithm>

    ........................................................

    double mas[Nmax][Nmax];
    int N=5,M=8;

    for (int i=0; i<N; i++)
    sort(mas+i, mas+i+M);

    Вроде так.
    Сортировка массива по возрастанию элементов в строках
     
  7. DAle

    DAle Гость

    <!--QuoteBegin-KmeT+21:12:2005, 04:54 -->
    <span class="vbquote">(KmeT @ 21:12:2005, 04:54 )</span><!--QuoteEBegin-->#include <algorithm>

    ........................................................

    double mas[Nmax][Nmax];
    int N=5,M=8;

    for (int i=0; i<N; i++)
    sort(mas+i, mas+i+M);

    Вроде так.
    Сортировка массива по возрастанию элементов в строках
    [snapback]28615" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Не, не так. Надо хотя бы
    std::sort(mas, mas+M);
     
  8. KmeT

    KmeT Гость



    mas > double
    mas+M > double тоже.

    sort(double, double)?

    имхо, в sort либо иттератор либо укзатель передются

    хотя я все равно ошибся

    sort(mas+i*N, mas+i*N+M);
     
  9. DAle

    DAle Гость

    <!--QuoteBegin-KmeT+24:12:2005, 04:37 -->
    <span class="vbquote">(KmeT @ 24:12:2005, 04:37 )</span><!--QuoteEBegin-->mas > double
    mas+M > double тоже.

    sort(double, double)?

    имхо, в sort либо иттератор либо укзатель передются

    хотя я все равно ошибся

    sort(mas+i*N, mas+i*N+M);
    [snapback]28717" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Ты теперь ошибся вообще во всем, что написал.
    mas при использовании в выражениях неявно преобразуется в указатель на double[Nmax] (в общем случае, если x - имя n-мерного массива, то оно неявно преобразуется к указателю на n-1-мерный массив). mas - эквивалентно *(mas+i).
    sort(mas+i*N, mas+i*N+M) было бы верно, если бы mas имел тип double*. А в данном случае mas+1 отличается от mas как минимум на Nmax*sizeof(double).
     
  10. nickatin

    nickatin Гость

    Спасибо конечно, но я уже сам разобрался :D
    PS пробовал я с sort() , так Builder воще ругается и ничего не делает

    Вот, что получилось........

    //---------------------------------------------------------------------------
    const Nmax=100;
    typedef double mas2[Nmax][Nmax];
    int N=5,M=8 ;

    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    Edit1->Text=FloatToStr(N);
    Edit2->Text=FloatToStr(M);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=M+1;


    StringGrid1->Cells[0][0]="Массив A";
    for(int i=1; i<=N;i++)
    StringGrid1->Cells[0]="i="+IntToStr(i);
    for(int j=1; j<=M;j++)
    StringGrid1->Cells[0][j]="j="+IntToStr(j);
    for(int i=0; i<N;i++)
    for(int j=0; j<M;j++)
    StringGrid1->Cells[i+1][j+1]=rand()%100;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    N=StrToInt(Edit1->Text);
    M=StrToInt(Edit2->Text);
    StringGrid1->ColCount=N+1;
    StringGrid1->RowCount=M+1;
    StringGrid1->Cells[0][0]="Массив A";
    for(int i=1; i<=N;i++)
    StringGrid1->Cells[0]="i="+IntToStr(i);
    for(int j=1; j<=M;j++)
    StringGrid1->Cells[0][j]="j="+IntToStr(j);
    for(int i=0; i<N;i++)
    for(int j=0; j<M;j++)
    {
    StringGrid1->Cells[i+1][j+1]=rand()%100;

    }
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    int i,j,k,l,max1,max2,buf1,b;
    for(b=1;b<=M;b++)
    {
    for(j=1;j<M;j++)
    {
    max1=StrToInt(StringGrid1->Cells[1][j]);
    max2=StrToInt(StringGrid1->Cells[1][j+1]);
    for(i=1;i<=N;i++)
    if (StrToInt(StringGrid1->Cells[j])>max1)
    max1=StrToInt(StringGrid1->Cells[j]);
    for(k=1;k<=N;k++)
    if (StrToInt(StringGrid1->Cells[k][j+1])>max2)
    max2=StrToInt(StringGrid1->Cells[k][j+1]);
    if (max1>max2)
    {
    for(l=1;l<=N;l++)
    {
    buf1=StrToInt(StringGrid1->Cells[l][j]);
    StringGrid1->Cells[l][j]=StringGrid1->Cells[l][j+1];
    StringGrid1->Cells[l][j+1]=IntToStr(buf1);
    }
    }
    }
    }
    }

    //---------------------------------------------------------------------------
     
  11. sup.by

    sup.by Гость

    ........ такое очучение что эфорум на этом сайте посещают только студенты ... которым самим впадлу лабы делать .... помогите с лабой(Системное программирование ......)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей