Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как работает цикл? 
:(
    Опции темы
Andrei3423421
Дата 23.12.2017, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 11.11.2017

Репутация: нет
Всего: нет



как работает цикл почему 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");
}

PM MAIL   Вверх
Курсант
Дата 4.1.2018, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: 1
Всего: 4



Цикл ищет в каждой строке массива a максимальное и минимальное значение, и меняет их местами. На значения накладывается ограничение - оно заключено между 0 и 999999. На самом деле такое ограничение - потенциальная уязвимость, т.к. данные далеко не всегда оказываются такими, которыми хочет видеть их программист. Т.е. если значения в массиве будут вообще произвольные, то алгоритм может работать неправильно.
Ну а дальше всё просто - цикл for ( i ... ) перебирает строки. Цикл for ( j ... ) перебирает элементы i-й строки. Если элемент меньше наименьшего, то он записывается в наименьший, плюс сохраняется индекс элемента. Если элемент больше наибольшего - то он записывается в наибольший. В качестве "очень большого числа" используется 999999. Типа, первое попавшееся число будет меньше его, и т.п. В качестве "очень маленького" - 0. Это ошибка. Лучше сделать так:
Код

min = max = a[i][0];
r = l = 0;
for ( j = 1, j < m; j++ ) {
...


Это сообщение отредактировал(а) Курсант - 4.1.2018, 17:01
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1261 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.