Задача. Дан массив целых чисел. Найти в массиве все простые двухзначных числа, если таких чисел больше двух удалить их из массива. Проверить изменился ли максимальный элемент массива.
Решение с использованием языка CPP:
/* * File: arraydelsimple.cpp * Author: darkfire * * Created on November 7, 2010, 4:58 PM */ #include <iostream> #include <stdlib.h> /* * Дан массив целых чисел. * Найти в массиве все простые двухзначных числа, если таких чисел * больше двух удалить их из массива. * Проверить изменился ли максимальный элемент массива. */ /*Алгоритм */ using namespace std; void EnterRandArray(int *arr, int ); void ViewArray(int *arr, int ); int MaxElment(int *, int ); bool num_simple (int); int *del_symple(int *arr, int &sz, int count); int main(){ int SIZE = 10; int *parr = new int[SIZE]; int maxarr,maxparr, zn2,count=0; //заполним массив EnterRandArray(parr, SIZE); //выведем масив на экран ViewArray(parr, SIZE); //Находим максимальный элемент maxarr=MaxElment(parr, SIZE); cout<<"\n"<<"Max arr1: "<<maxarr<<"\n"; //Найдем количесво двухзначных простых чисел for (int i=0;i<SIZE;i++){ if((parr[i]>10)&&(parr[i]<99)) if (num_simple(parr[i]))count++; } cout<<"count: "<<count; //если таких цисел больше двух -удаляем их if (count>2){ parr = del_symple(parr, SIZE, count); cout<<"\n"; ViewArray(parr, SIZE); } maxarr=MaxElment(parr, SIZE); cout<<"\n"<<"Max newarr: "<<maxarr<<"\n"; delete [] parr; cout<<"\n"; return 0; } int *del_symple(int *parr, int &sz, int count){ int new_sz=sz-count; int pos =0; int *newarr= new int [new_sz]; for(int i=0,j=0;i<sz;i++){ if((parr[i]<10)||(parr[i]>99)){ newarr[j]=parr[i]; j++;} else if(!(num_simple(parr[i]))){ newarr[j]=parr[i]; j++; } } sz=new_sz;//изменяем(уменьшаем) размер массива return newarr; } bool num_simple (int number){ //простое число делится без остатка только на самого себя и единицу. for (int i=2;i<number;i++) if(number%i==0){ return false;} return true; } int MaxElment(int *arr, int SIZEA){ int max=arr[0];//правильней брать элемент массива for (int i=1;i<SIZEA;i++){ if (arr[i]>max)max=arr[i]; } return max; } void EnterRandArray(int *arr, int SIZEARR){ for (int i=0;i<SIZEARR;i++)arr[i]=rand()%110; } void ViewArray(int *arr, int SIZEARR){ for (int i=0;i<SIZEARR;i++)cout<<arr[i]<<"\t"; }