Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ќбработка массивов




÷ель работы: изучение приЄмов обработки одномерных массивов данных, выработка умений алгоритмизации и программировани€ задач с массивами, отладки и тестировани€ программ с массивами.

/* ѕрограмма 9. ѕрограмма демонстрирует типовые процедуры обработки массивов: ввод, вывод, анализ и обработка данных массива.*/

#include <stdio.h>

#include <math.h>

void in_arr(float *arr, int n); // ввод с клавиатуры n элементов массива

void out_arr(float *arr, int n); // вывод на экран n элементов массива

int array_processing(double *arr, int n, double *p sum, double *p prod);

/* ќпределение суммы s, произведени€ p и количества k " + "-ых элементов массива, расположенных после первого У Ц У-го элемента. –азмер массива n <= 50.

“≈—“: x = { 1, 2, -1, 2, -2, 3, -3 }, n=7. –езультаты: s=5, p=6, k=2.

p sum, p prod, Ц переменные-указатели. C указател€ми св€заны две специальные операции: & и *. ќператор & x означает "вз€ть адрес" переменной x, оператор *p x Ц "значение, расположенное по адресу p x".

*/

float max2(float *arr, int n); // поиск в массиве максимальной по модулю
// разности двух чисел. “≈—“: x = { 1, 5, 3, 0, -1, 2, 4}, n = 7, результат: = 6.

int max_eqw(float *arr, int n); // определение максимального числа равных
// соседних чисел. “≈—“: x = { 3, 1, 3, 0, 1, 1, 1, 1, 2}, n = 9, результат: 4.

main()

{ float x[50], p, s;

int i, k, n;

printf("\n ¬ведите размер массива n: ");

scanf("%d", &n);

in_arr(x, n);

printf(" \n »сходный массив размером %d: \n", n);

out_arr(x, n);

k = array_processing(x, n, &s, &p);

printf("\n ¬ массиве после первого \Ф-\У-го числа %d чисел x[i]>0, \

их сумма = %.3f, произведение = %.3f ", k, s, p);

printf("\n ћакс-€ по модулю разность двух чисел = %.3f ", max2(x, n));

printf("\n ћакс-е число равных соседних чисел = %.3f ", max_eqw (x, n));

} //  онец main()

/* ¬ комментари€х функций in_arr() и out_arr() записаны операторы с элементами массива, обращение к которым выполн€етс€ по указателю без операции индексации arr [ i ] */.

void in_arr(float *arr, int n)

{ printf("\n ¬ведите %d элементов массива: ", n);

for (int i = 0; i < n; i++)

scanf("%e", &arr[i]); // scanf("%e", arr++);

}

void out_arr(float *arr, int n)

{ for (int i = 0; i < n; i++)

{ printf(" %.3f ", x[i]); // printf(" %.3f ", *x++);

if ((i+1) % 8 == 0) // вывод массива по 8 чисел в строке:

printf("\n");

}

}

int array_processing(double *arr, int n, double *psum, double *pprod)

{ int i;

*psum = 0; *pprod = 1; k = 0, m = -1; // инициализаци€

for (m = 0; m < n; m++)

if (arr[m] < 0) break;

for (i = m+1; i < n; i++)

if (arr[i] > 0)

{ *psum += arr[i];

*pprod *= arr[i];

k += 1;

}

return k;

}

float max2(float *arr, int n)

{ float k; int k, m = 0;

for(int i = 0; i < n-1; i++)

for(k = i+1; k < n; k++)

if(fabs(x[i]-x[k]) > m) m = fabs(x[i] - x[k]);

return m;

}

 

int max_eqw(float *arr, int n)

{ int i, k=0, m=0;

for(i=0; i<n-1; i++)

if(x[i] == x[i+1]) m++;

else if(m > k) k = m, m = 0;

return k+1;

}

¬опросы и упражнени€

1.  ак организован одномерный массив в программе: тип элементов массива, их расположение в пам€ти компьютера?

2.  ак объ€вить массив в программе?

3.  акое значение имеет объект программы им€ массива? ћожно ли изменить это значение?

4.  ак обратитьс€ по указателю к элементу arr[i] массива?

5. ≈сть ли ошибка в списке инициализации массива: int х[3] = {1, 2, 3, 4};?

6. Ќапишите операторы вывода элементов одномерного массива по заданному условию: а) каждого k-го элемента, б) m последних элементов, в) только отрицательных или только положительных элементов.

7. Ќапишите функции: а) поиск минимального (максимального) элемента массива, б) поиск двух наибольших (наименьших) чисел в массиве.

8. ¬ыполните упражнение 6 c выбором элементов массива по указател€мю.

9. ќпределите значение m как результат операторов:

int m = 0, n = 10; // x[10] = { 1, 2, 2, 3, 4, 4, 5, 6, 6, 7 }

for(int i = 0; i < n - i; i++)

if(x[i]!= x[i+1]) m++; else m - -;

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-10-01; ћы поможем в написании ваших работ!; просмотров: 564 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

„то разум человека может постигнуть и во что он может поверить, того он способен достичь © Ќаполеон ’илл
==> читать все изречени€...

1681 - | 1552 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.013 с.