Вещественные массивы

Тема в разделе "C/C++/C#", создана пользователем ilya1989, 24 ноя 2010.

Статус темы:
Закрыта.
  1. ilya1989

    ilya1989 Гость

    Репутация:
    0
    Вариант 1 Даны вещественные массивы A[3][5], V[3][5]. Для каждого
    массива опpеделить номеp столбца с наибольшим
    количеством положительных элементов.



    Код (C++):
    #include <iostream.h>
    #include <conio.h>
    #define I 3
    #define J 5

    void InputMas(float [I][J],char);
    int RashetMas(float [I][J]);
    void PrintMas(float [I][J],char ,int );
    void main()
    {
    float A[I][J],V[I][J];
    float num_stolbets_A;
    float num_stolbets_V;
    InputMas(A,'A');
    num_stolbets_A=RashetMas(A);
    //InputMas(V,'V');
    //num_stolbets_V=RashetMas(V);
    PrintMas(A,'A',num_stolbets_A);
    //PrintMas(V,'V',num_stolbets_V);
    getch();
    }

    void InputMas(float a[I][J],char name)
    {
    cout<<"-----------------------------------------------------------------------\n";
    int i,j;
    for(j=0;j<J;j++)
    for(i=0;i<I;i++)
    {
    cout<<"Vvedite znacheniye s plavaytshey tochkoy v massiv "<<name<<"["<<j<<"]"
    "["<<i<<"] = ";
    cin>>a[i][j];
    }
    }

    int RashetMas(float a[I][J])//Вот в этой функции вся загвоздка!!!
    {
    int j,kol[J];
    int j_max=0;
    for(j=0;j<J;j++)
    {
    for(int i=0;i<I;i++)
    {
    if(a[i][j]>0)
    {
    kol[j]++;
    if(kol[j]==1)
    {
    j_max=j;
    }
    if(kol[j]>j_max)
    {
    j_max=j;
    }
    }
    }
    }
    return j_max;
    }

    void PrintMas(float a[I][J],char name,int c)
    {
    cout<<"\nRESULTS\n";
    cout<<"----------------------------------------------------------------------\n";
    cout<<"Massiv "<<name<<" :\n";
    for(int i=0;i<I;i++)
    {
    cout<<"\n";
    for(int j=0;j<J;j++)
    {
    cout<<a[i][j]<<"\t";
    }
    cout<<"\n";
    }
    cout<<"\nNomer stolbtsa s maksimal kollitchestvom elem " <<c<<"\n";
    }
    Программа неверно выдаёт в конце номер столбца!Всем буду очень признателен!)
    Программирование совсем тяжело даётся(
     
  2. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    int надо.
     
  3. ilya1989

    ilya1989 Гость

    Репутация:
    0
    а изменение float на int ничего не даст!
    сам по себе номер столбца неверно сохраняется(
    судя по всему,напутано в функции расчёта в if-ах.(
     
  4. acorn

    acorn PHP Developer
    Web Team

    Репутация:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    585
    Симпатии:
    3
    Код (C++):
    if(kol[j]==1)
    {
    j_max=j;
    }
    if(kol[j]>j_max)
    {
    j_max=j;
    }
    логика у вас... вот тут проблема у вас, не буду говорить в чём, попробуйте догадаться.

    Добавлено: да и не в том месте эта проверка... скопируйте код еще раз, чтоб табуляция сохранилась, а то ниче не понятно.
     
  5. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8

    выводите подсказку j, i, а считываете в a[j]; - в этом есть смысл?

    Добавлено: Acorn
    та там вроде вообще kol[j] как массив не надо. хранить просто максимальное кол-во и индекс столбца... Хотя, если несколько столбцов с одинаковым количеством положительных будет - тогда да, надо.
     
  6. acorn

    acorn PHP Developer
    Web Team

    Репутация:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    585
    Симпатии:
    3
    да тут много чего не надо если честно :)
     
  7. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    в общем, тут кол-во элементов сравнивается с индексом столбца. А до этого выше индекс столбца перезатирается.
    это полный бред.
    Во внутреннем цикле по элементам столбца достаточно просто посчитать количество положительных в текущем столбце.
    А потом уже сравнить с максимальным количеством элементов и, если больше - изменить индекс столбца с максимальным количеством. вот так.
    остальное выше моё - просто замечания по коду.
     
  8. ilya1989

    ilya1989 Гость

    Репутация:
    0
    Acorn,я как бы в кусе,что проблема в этом....спасибо за коментарий....вы ж наверное,понимаете,что я не так просто сюда пришёл....в программировании я начинающий....а обучаюсь я по форме дистанционного обучения,где толком ничему не учат,а лишь указывают на косяки студентов...
     
  9. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Ну прям завалили парнишку вопросами. Видно что он что-то пытается но у него не выходит...
    ilya1989 в твоей копаться не стал, читать невозможно... Вот посмотри:
    Код (C++):
    /*
    ** Даны вещественные массивы A[3][5], V[3][5]. Для каждого
    ** массива опpеделить номеp столбца с наибольшим
    ** количеством положительных элементов.
    */


    #include <iostream.h>

    #define     I   3
    #define     J   5

    void input_array( float a[I][J] )
    {
    for ( int i = 0; i < I; i++ )
    for ( int j = 0; j < J; j++ ) {
    cout << "[" << i << "][" << j << "]: ", cin >> a[i][j];
    }
    }

    void find_column( float a[I][J] )
    {
    int i, j;
    int num = 0;
    int max_n = 0;
    int max_j = 0;
    for ( j = 0; j < J; j++ ) {
    for ( i = 0, num = 0; i < I; i++ ) if ( a[i][j] > 0.0f ) num++;
    if ( num > max_n ) {
    max_n = num;
    max_j = j;
    }
    }

    cout << "j = " << max_j << endl;
    }

    int main()
    {
    float   A[I][J], V[I][J];

    cout << "Input array A:" << endl;
    input_array( A );
    find_column( A );

    //  cout << "Input array V:" << endl;
    //  input_array( V );
    //  find_column( V );

    return 0;
    }
    Если что непонятно говори.
     
  10. ilya1989

    ilya1989 Гость

    Репутация:
    0

    А библиотеку math обязательно использовать?
     
  11. acorn

    acorn PHP Developer
    Web Team

    Репутация:
    0
    Регистрация:
    29 авг 2004
    Сообщения:
    585
    Симпатии:
    3
     
  12. ilya1989

    ilya1989 Гость

    Репутация:
    0

    Просто ситуэйшн в том,что если мой препод увидит уже изменённую работу,то поймёт,что писал её не я....
    Просто,мой препод,требует написания программ без всяких на то дополнительных библиотек типа math.h
     
  13. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    А где ты ее там видишь?)))
     
  14. ilya1989

    ilya1989 Гость

    Репутация:
    0
    ой)))извиняюсь)))уже глаза,видать,занимаются кое-чем))))
    вопрос:а если ту,что я писал,как-то доработать или что-то добавить))))?
    просто,мне б самому понять,как работает программа))))....а то я код написать-то написал,а как он работает,не совсем пойму....
    к тому же,если вы обратите внимание,в написанном мною коде 3 функции,причём вторая идёт с возвратом значения...
     
  15. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Т.е., если программа заработает - то писал не ты?))
    Сейчас твой вариант посмотрим.
     
  16. ilya1989

    ilya1989 Гость

    Репутация:
    0
    спасибо)))
     
  17. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    1.339
    Симпатии:
    0
    Заменяй свои на эти:
    Код (C++):
    void InputMas( float a[I][J], char name )
    {
    cout << "-----------------------------------------------------------------------\n";
    int i,j;
    for(i=0;i<I;i++)
    for(j=0;j<J;j++) {
    cout<<"Vvedite znacheniye s plavaytshey tochkoy v massiv "<<name<<"["<<i<<"]["<<j<<"] = ";
    cin>>a[i][j];
    }
    }
    Код (C++):
    int RashetMas( float a[I][J] )
    {
    int j,kol[J];
    int j_max=0;
    for(j=0;j<J;j++)
    {
    kol[j]=0;
    for(int i=0;i<I;i++)
    {
    if(a[i][j]>0)
    {
    kol[j]++;
    }
    }
    if(kol[j]>j_max)
    {
    j_max=j;
    }
    }
    return j_max;
    }
     
  18. ilya1989

    ilya1989 Гость

    Репутация:
    0
    ооо))))))спасибочки огромное))))вот))))теперь всё работает))))вот и получается,что просто нужно было изменить функцию расчёта))))я так понимаю,что в пинципе,был близок к той теории,которую подсказали мне Вы)))))спасибо Вам))))
     
Загрузка...
Похожие Темы - Вещественные массивы
  1. Shandrik
    Ответов:
    3
    Просмотров:
    415
  2. Искушенный
    Ответов:
    0
    Просмотров:
    544
  3. Искушенный
    Ответов:
    1
    Просмотров:
    564
  4. Искушенный
    Ответов:
    1
    Просмотров:
    542
  5. Rpp
    Ответов:
    1
    Просмотров:
    898
Статус темы:
Закрыта.

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