Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

Int search (int data [],int size,int key) // функция поиска элемента массива

{ int index = 0; while ( index < size && data [ index ] != key ) index++;

return ( data [index]==key )?index : -1;}

6.2.10.8. Цикл с постусловием ‑ do while

В цикле do while проверка условия осуществляется после выпол­нения тела цикла. Синтаксис цикла: do <оператор>while (<условие>);

Оператор continue передает управление на начало следующего пов­то­рения цикла. Цикл прекращает выполняться, когда условие становится ложным или внутри цикла встретился оператор break или return.

Пример функции сравнения двух строк (str1, str2):

Int main(int argc, char **argv) // основная функция

{extern int compare ( char str1 [ ], char str2 [ ] ); char str1 [ 80 ], str2 [ 80 ];

printf (“\nВведите первую строку: “); scanf( “%s“, str1); // ввод строки 1

printf (“\nВведите вторую строку: “ ); scanf ( “%s“, str2); // ввод строки 2

if ( compare (str1,str2 )< 0) printf ( “\nПервая строка меньше второй “);

else if (compare (str1,str2 )==0) printf ( “\n\nПервая строка равна второй“);

else printf (“\n\nПервая строка больше второй“); getch();

} // конец основной функции

Int length (char str [ ]) // функция вычисления длины строки

{int index=0; while (str [index++]!= 0 ); return -index;}

Int compare (char str1 [ ], char str2 [ ] ) // функция сравнения строк

{ extern int length(char str[ ]); int len1 = length(str1); int len2=length( str2 );

int index=-1; int minlength=(len1<len2)?len1:len2; // длина короткой строки

do index++; while (index < minlength && str1[index] ==str2[index]);

if (len1== len2 && str1[index] == str2[index]) return 0; // строки равны

if ( str1[index]==str2[index] &&len1 < len2)return -1; // строка 1 < строки 2

if (str1[index]==str2[index] &&len2 > len1) return 1; // строка 1 > строки 2

if (str1[index ]<str2[index]) return -1; else return 1; // строка 1 > строки 2

}

6.2.10.9. Итерационный цикл ‑ For

for ([<выражение-1>];[<выражение-2>];[< выражение-3>]) <оператор>

Формально правила выполнения этого оператора можно описать так:

  1. Если первое выражение присутствует, то оно вычисляется.

  2. Вычисляется второе выражение (если оно присутству­ет). Если вы­ра­­ба­ты­вается значение 0 (false), то цикл пре­кращается, в противном случае цикл будет продолжен.

  3. Исполняется тело цикла (<оператор>).

  4. Вычисляется третье выражение (если оно присутствует).

  5. Переход к пункту 2.

Появление в любом месте тела цикла оператора continue или break при­во­дит к переходу к шагу 4 или к выходу из цикла соответственно.

Пример программы подсчета суммы ряда 1+1/2+1/3+1/4+...1/1000:

int main(int argc, char **argv) {

float s, i; for (s=0,i=1;i<=1000; s+=1/i++); printf ( “\n%20.8f“, s); getch(); }

Пример программы подсчета среднего числа массива чисел 1,2,..,100:

# define size 100 // макроподстановка размерности массива - 100

Int main(int argc, char **argv) { // основная функция

int data [size]; extern float average (int a[ ], int s ); int i;

for (i=0; i<size; i++) data [i]= i; // заполнение массива числами от 0 до 99

printf( “\nСреднее значение массива data=%f\n“,average(data,size));getch(); }

float average( int a [ ], int s ) // функция подсчета среднего числа массива

{ float sum = 0.0; int i; for (i = 0; i < s; i++) sum += a [ i ]; return sum / s; }

Пример программы вычисление максимальных и минимальных зна­чений элементов массива случайных чисел:

# define size 100 // макроподстановка size=100 ‑ размерность массива