alert30
08-02-2016, 11:29
Вот сама задача: "Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз, и вывести размер полученного массива и его содержимое."
Я решил, но получается так, что в программе выдает совсем иное.
В общем, нужно сделать так, чтобы эти одинаковые элементы, встречающиеся более 2 раз, удалил только один из них элемент и уменьшил общий размер массива на единицу. Например:
Ввожу на компе "a[0]=2, a[1]=2, a[2]=2, a[3]=4, a[4]=4, a[5]=4, a[6]=33, a[7]=44, a[8]=9, a[9]=18"
Должно быть при выводе:
"A[]: 2 2 4 4 33 44 9 18
Размер массива: 8"
Вот, собственно, код:
#include <conio.h>
#include <cstdlib>
#include <iostream>
#include <memory.h>
using namespace std;
void in_a(int* a, int N);
void out_a(int* a, int N);
int main(int argc, char *argv[])
{
system("color 0f");
setlocale (0,"");
int N;
cout<<"Введите N (N<=10): ";
cin>>N;
int *a=new int[N];
memset((void*)a, 0x00, sizeof(int)*N);
int *a_T=new int [N];
memset((void*)a_T, 0x00, sizeof(int)*N);
if (N<=10){
cout<<"Заполнение массива"<<endl;
in_a(a,N);
int T=0;
for(int i=0;i<N;i++){
int C=0;
for(int j=0;j<N;j++) if (a[j]==a[i]) C++;
if (C<=2) a_T[T++]=a[i];
}
a=a_T;
cout<<"Ответ\na[]: ";
out_a(a,N);
cout<<"\nРазмер полученного массива: "<<T;
}
else cout<<"Ошибка";
getch();
}
void in_a(int* a, int N){
for(int T=0;T<N;T++){
cout<<"a["<<T<<"]=";
cin>>a[T];
}
}
void out_a(int* a, int n){
for (int T=0;a[T]!=0;T++) cout<<a[T]<<" ";
}
Я решил, но получается так, что в программе выдает совсем иное.
В общем, нужно сделать так, чтобы эти одинаковые элементы, встречающиеся более 2 раз, удалил только один из них элемент и уменьшил общий размер массива на единицу. Например:
Ввожу на компе "a[0]=2, a[1]=2, a[2]=2, a[3]=4, a[4]=4, a[5]=4, a[6]=33, a[7]=44, a[8]=9, a[9]=18"
Должно быть при выводе:
"A[]: 2 2 4 4 33 44 9 18
Размер массива: 8"
Вот, собственно, код:
#include <conio.h>
#include <cstdlib>
#include <iostream>
#include <memory.h>
using namespace std;
void in_a(int* a, int N);
void out_a(int* a, int N);
int main(int argc, char *argv[])
{
system("color 0f");
setlocale (0,"");
int N;
cout<<"Введите N (N<=10): ";
cin>>N;
int *a=new int[N];
memset((void*)a, 0x00, sizeof(int)*N);
int *a_T=new int [N];
memset((void*)a_T, 0x00, sizeof(int)*N);
if (N<=10){
cout<<"Заполнение массива"<<endl;
in_a(a,N);
int T=0;
for(int i=0;i<N;i++){
int C=0;
for(int j=0;j<N;j++) if (a[j]==a[i]) C++;
if (C<=2) a_T[T++]=a[i];
}
a=a_T;
cout<<"Ответ\na[]: ";
out_a(a,N);
cout<<"\nРазмер полученного массива: "<<T;
}
else cout<<"Ошибка";
getch();
}
void in_a(int* a, int N){
for(int T=0;T<N;T++){
cout<<"a["<<T<<"]=";
cin>>a[T];
}
}
void out_a(int* a, int n){
for (int T=0;a[T]!=0;T++) cout<<a[T]<<" ";
}