Незнаю Как Сделать Програму На С++

Тема в разделе "C/C++/C#", создана пользователем vovamakarovych, 27 ноя 2011.

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

    vovamakarovych Гость

    у меня есть 2 програмы. Мне нужно их переписать с использованием методов программирования с помощью функций:

    - Функция для ввода значений массива с клавиатуры;
    - Функция для вычисления значений по вашему варианту;
    - Функция для вывода результатов на экран.

    Мои програмы:
    1
    Код (C++):
     #include <iostream>
    using namespace std;

    int main() {
    setlocale(LC_ALL,"Russian");
    const int arraySize = 10;
    int A[arraySize];              
    int index_min = 0;                               
    cout<<"Введите массив из 10 элементов.\n";
    for (int j=0; j<arraySize; j++)
    {
    cout << "A[" << j << "]= ";
    cin>>A[j];
    }
    int min_elem = A[0];
    for (int j = 0; j < arraySize; j++)
    {
    if (min_elem > A[j])
    {
    min_elem = A[j];
    index_min = j;
    }
    }
    cout << "Минимальное значение = " << min_elem << " его индекс =" << index_min<< '\n';
    system("pause");
    }
    2
    Код (C++):
    #include <iostream>
    using namespace std;
    int main()
    {
    setlocale(LC_ALL,"Russian");
    const int arraySize = 10;
    int A[arraySize];
    int *ptr=&A[0];
    int index_max = 0;                           

    cout<<"Введите массив из 10 элементов.\n";
    for (int j=0; j<arraySize; j++)
    {
    cout << "A[" << j << "]= ";
    cin>>ptr[j];
    }
    int max_elem = A[0];

    for (int j = 0; j < arraySize; j++)
    {
    if (max_elem < ptr[j])

    max_elem = ptr[j];
    index_max = j;

    }
    cout << "Максимальное значение = " << max_elem << " его индекс =" << index_max<< '\n';
    system("pause");
    }
     
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    вот приблизительно набросал (1) :

    Код (C++):
     void vvod(int *A,int arraySize)
    {
    int j;
    cout<<"Введите массив из 10 элементов.\n";
    for (j=0; j<arraySize; j++)
    {
    cout << "A[" << j << "]= ";
    cin>>A[j];
    }
    }
    int function(int arraySize,int *A,int min_elem,int index_min )
    {
    int j;
    for (j=0;j<arraySize;j++)
    {
    if (min_elem > A[j])
    {
    min_elem = A[j];
    index_min = j;
    }
    }
    return min_elem;
    }
    int function1(int arraySize,int *A, int min_elem,int index_min )
    {
    int j;
    for (j=0;j<arraySize;j++)
    {
    if (min_elem > A[j])
    {
    min_elem = A[j];
    index_min = j;
    }
    }
    return index_min;
    }

    void out(int min_elem ,int index_min)
    {
    cout << "Минимальное значение = "<< min_elem << " его индекс =" << index_min<< '\n';
    }
    int main()
    {
    setlocale(LC_ALL,"Russian");
    const int arraySize(10);
    int A[arraySize],index_min(0);             
    vvod(A,arraySize);
    int min_elem=A[0];
    min_elem=function(arraySize,A,min_elem,index_min);
    index_min=function1(arraySize,A,min_elem,index_min);
    out(min_elem ,index_min);
    }

    вторую сам сделаешь
     
  3. vovamakarovych

    vovamakarovych Гость

    не выходит сделать(((
     
  4. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    ты издеваешься???я тебе полностью написал 1ую,разберись и напиши.
    что не понятно спрашивай
     
  5. vovamakarovych

    vovamakarovych Гость

    от мой код, индекс не верно показывает((
    Код (C++):
    #include <iostream>
    #include <iomanip>

    using namespace std;
    void vvod(int *A,int arraySize)
    {
    int j;
    cout<<"Введите массив из 10 элементов.\n";
    for (j=0; j<arraySize; j++)
    {
    cout << "A[" << j << "]= ";
    cin>>A[j];
    }
    }
    int function(int arraySize,int *A,int max_elem,int index_max )
    {
    int j;
    for (j=0;j<arraySize;j++)
    {
    if (max_elem < A[j])
    {
    max_elem = A[j];
    index_max = j;
    }
    }
    return max_elem;
    }
    int function1(int arraySize,int *A, int max_elem,int index_max )
    {
    int j;
    for (j=0;j<arraySize;j++)
    {
    if (max_elem < A[j])
    {
    max_elem = A[j];
    index_max = j;
    }
    }
    return index_max;
    }

    void out(int max_elem ,int index_max)
    {
    cout << "Максемальное значение = "<< max_elem << " его индекс =" << index_max<< '\n';
    }
    int main()
    {
    setlocale(LC_ALL,"Russian");
    const int arraySize(10);
    int A[arraySize],index_max(0);             
    vvod(A,arraySize);
    int max_elem=A[0];
    max_elem=function(arraySize,A,max_elem,index_max);
    index_max=function1(arraySize,A,max_elem,index_max);
    out(max_elem ,index_max);
    system("Pause");
    }
     
  6. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Код (C++):
    #include <iostream>
    #include <iomanip>

    using namespace std;
    void vvod(int *A,int arraySize)
    {
    int j;
    cout<<"Введите массив из 10 элементов.\n";
    for (j=0; j<arraySize; j++)
    {
    cout << "A[" << j << "]= ";
    cin>>A[j];
    }
    }
    int function(int arraySize,int *A,int max_elem,int index_max )
    {
    int j;
    for (j=0;j<arraySize;j++)
    {
    if (max_elem < A[j])
    {
    max_elem = A[j];
    index_max = j;
    }
    }
    return max_elem;
    }


    void out(int max_elem ,int index_max)
    {
    cout << "Максемальное значение = "<< max_elem << " его индекс =" << index_max<< '\n';
    }
    int main()
    {
    setlocale(LC_ALL,"Russian");
    const int arraySize(10);
    int A[arraySize],index_max(0),j(0);            
    vvod(A,arraySize);
    int max_elem=A[0];
    max_elem=function(arraySize,A,max_elem,index_max);
    while(A[j]!=max_elem)
    j++;
    index_max=j;
    out(max_elem ,index_max);
    system("Pause");
    }


    вот всё правильно работает цикл в функцию сам занесёшь
     
  7. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Whatka
    если не секрет, в чем стратегический замысел написания двух различных функций function и function1 ?

    ЗЫ. а работает неверно, проверь на
    1 2 3 4 5 6 7 8 9 0

    выведет что индекс наименьшего элемента = 0

    как-то криво все, извиняюсь )

    Добавлено: а вот, щас исправил ) теперь результат правильный, но зачем нам:
    Код (Text):
    while(A[j]!=max_elem)
    j++;
    неужели юзе этого лишнего цикла не обойтись?

    Добавлено: поправил функцию вычисления и main
    Код (Text):
    #include <iostream>
    #include <iomanip>

    using namespace std;
    void vvod(int *A,int arraySize)
    {
    int j;
    cout<<"Введите массив из 10 элементов.\n";
    for (j=0; j<arraySize; j++)
    {
    cout << "A[" << j << "]= ";
    cin>>A[j];
    }
    }

    int function( int arraySize, int *A, int &index_max ) {
    int j;

    index_max = 0;
    for( j = 0; j < arraySize; j++ )
    if( A[ index_max ] < A[ j ] )
    index_max = j;

    return A[ index_max ];
    }


    void out(int max_elem ,int index_max)
    {
    cout << "Максемальное значение = "<< max_elem << " его индекс =" << index_max<< '\n';
    }

    int main() {
    setlocale(LC_ALL,"Russian");

    const int
    arraySize = 10;
    int     A[ arraySize ],
    max, imax;

    vvod( A, arraySize );

    max = function( arraySize, A, imax );

    out( max, imax );

    system( "Pause" );
    }
    но, что-то мне до сих пор не нравится :facepalm:
     
  8. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    нет конечно можно по другому и без цикла
    я бы и сам по другому делал
    НО это не моё решение а его
    суть в правильном ответе,если поймёт как работает сможет оптимизировать сам
    ...
    я думаю
     
Загрузка...
Статус темы:
Закрыта.

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