+ Ответить в теме
Показано с 1 по 2 из 2

Тема: Как работает цикл?

  1. #1
    dummy Кирилл1212 is on a distinguished road
    Регистрация
    11.11.2017
    Сообщений
    6
    Вес репутации
    0

    По умолчанию Как работает цикл?

    как работает цикл почему min начинается 999999?
    for (i=0; i<m; i++)
    {
    min=999999;
    max=0;
    for (j=0; j<n; j++)
    {
    if (a[i][j]<min) {min=a[i][j]; l=j;}
    if (a[i][j]>max) {max=a[i][j]; r=j;}
    }
    a[i][l] = max;
    a[i][r] = min;
    }


    #include <stdlib.h>
    #include <time.h>
    #include <stdio.h>

    void main()
    {
    const long m=3, n=3;
    long a[m][n], i, j, min, max, x, l, r;
    srand(time(0));
    //формируем и выводим матрицу
    for (i=0; i<m; i++)
    {
    printf("\n\n");
    for (j=0; j<n; j++)
    {
    a[i][j]=25+rand()%56;
    printf("%d\t",a[i][j]);
    }
    }
    //ищем min и max, меняем местами
    for (i = 0; i < n; i++)

    min = 0;
    max = 0;
    for (i=0; i<m; i++)
    {
    min=999999;
    max=0;
    for (j=0; j<n; j++)
    {
    if (a[i][j]<min) {min=a[i][j]; l=j;}
    if (a[i][j]>max) {max=a[i][j]; r=j;}
    }
    a[i][l] = max;
    a[i][r] = min;
    }
    printf("\n\n");
    //выводим то что получилось
    for (i=0; i<m; i++)
    {
    printf("\n\n");
    for (j=0; j<n; j++)
    {
    printf("%d\t",a[i][j]);
    }
    }
    printf("\n\n");
    }

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    36
    Сообщений
    3,057
    Вес репутации
    20

    По умолчанию Re: Как работает цикл?

    Потому, что написавший плохо разбирается в алгоритмах. Если все элементы будут больше 999999 (а теоретически это возможно), то алгоритм даст сбой.

    На самом деле в качестве инициализирующего значения для min нужно выбрать максимально возможное положительное значение для типа long. Фактически, это число 0x7FFFFFFF, однако могут быть варианты в зависимости от разрядности компилятора. Для того, чтобы не задумываться о таких низких деталях реализации, правильным будет использовать хедер limits, который содержит великолепный темплейтный помощник numeric_limits. Например, самое большое число для long можно получить с помощью следующего выражения.
    Код cpp:
    1. numeric_limits<long>::max

    P.S. На практике не опускаются даже до этого хоть и правильного, но тем не менее несколько мудреного варианта. Наиболее простым выходом является присваивание и min и max первого элемента массива.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

+ Ответить в теме

Похожие темы

  1. цикл в VBA
    как правильно задать вот такой цикл: V(1)=V(a)-Q(1) V(2)=V(1)-Q(2) ....................... V(n)=V(n-1)-Q(n) Заранее большое спасибо!!!
    от Айше в разделе задачи на Basic и Visual Basic (VB)
  2. Цикл в цикле While
    Столкнулся с проблемой, что нужно сверять значение одного столбца на одной странице, со значениями другова столбца на другой странице. По сути...
    от kuznetsovSergey в разделе MS Office и VB(A).
  3. Паскаль Цикл
    Помогите пожалуйста, програмка архипростая Дано действительное число x. Вычислить x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-x^11/11!+x^13/13! В программе в...
    от FaKuP в разделе задачи на Паскале и Delphi
  4. Как прервать цикл repeat
    begin repeat fam:=InputBox('Авторизация', 'Введите свои ФИО', ''); if fam='' then MessageDlg('Вы не представились', mtWorning, ,0); until fam<>''...
    от demon_1607 в разделе Delphi и Pascal
  5. Action Script цикл
    На рабочей области есть кнопка картинка и группа объектов Хочется, чтобы при наведении курсора на кнопку группа объектов плавно появлялась. Для этого...
    от Cimota в разделе Perl, PHP, ASP ...

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения