Инструменты пользователя

Инструменты сайта


reshenie_zadachi_6

Задача. Дан массив целых чисел. Найти в массиве все простые двухзначных числа, если таких чисел больше двух удалить их из массива. Проверить изменился ли максимальный элемент массива.

/* 
 * 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";
}
reshenie_zadachi_6.txt · Последние изменения: 2010/11/07 16:17 (внешнее изменение)

Яндекс.Метрика