Задачи замены в массивах
Задачи замены в массивах предполагают решение задачи на поиск с последующим изменением найденных значений. В основе решения таких задач лежит поисковые алгоритмы с выбором подходящей схемы перебора.
Пример 3. Дан одномерный целочисленный массив, заданный случайными числами на промежутке [-50; 50).Заменить в массиве все отрицательные элементы им противоположными.
Для решения задачи выполним просмотр массива с начала. Каждый элемент сравним с нулем, при этом отрицательные заменим противоположными (if (x[i]<0) x[i]=-x[i]). В данной задаче целесообразно выполнить вывод массива дважды: до и после замены.
//Замена отрицательных элементов противоположными
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//подключение модуля для генератора случайных чисел
#define max 100
void gen (int k, int a, int b,int x[max]);
//прототип функции генерации массива
void out (int k, int x[max]);
//прототип функции вывода массива
void zamena (int k, int x[max]);
//прототип функции замены
void main (){
int mas[max];
int n;
do {
printf("\nВведите количество элементов массива n
(n<=100): ");
scanf ("%d",&n);
}
while (n>max);
gen(n,-50,50,mas);
printf("Вывод сгенерированного массива из %d элементов:
\n", n);
out(n,mas);
zamena (n,mas);
printf("\nВывод массива после замены отрицательных
элементов на протипоположные:\n");
out(n,mas);
}
//Описание функции генерации массива с клавиатуры
void gen(int k,int a, int b, int x[max]){
int i;
srand(time(NULL)*1000);
for (i=0;i<k;i++){
x[i]=int(rand()*1.0/(RAND_MAX)*(b-a)+a);
}
}
//Описание функции вывода массива в строку
void out (int k,int x[max]){
int i;
for (i=0;i<k;i++)
printf("%-6d",x[i]);
}
//Описание функции замены
void zamena(int k,int x[max]){
int i;
for (i=0;i<k;i++)
if (x[i]<0) x[i]=-x[i];
}
Дата добавления: 2015-02-16; просмотров: 747;