Форум программистов, компьютерный форум CyberForum.ru

Создать массив минимально возможного размера, в котором нужно собрать общие элементы двух заданных массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм убирания всех пробелов http://www.cyberforum.ru/cpp-beginners/thread12568.html
C++ Чтение бинарных файлов Здравствуйте уважаемые эксперты,хотелось бы узнать как можно прочитать шестнадцатиричные значения из файла,длиной 1б,в блок размером 4байта каждый. И запихнуть каждыйблок в структуру для того чтоб обратиться к каждому значению отдельно. Проблемка у меня в том что байты в начале могут быть нулевыми,т.е.функции fread,fgets просто нечитают остальные, а со scanf я ужу мозги скрутил,не могу... http://www.cyberforum.ru/cpp-beginners/thread12553.html
работа с файлами C++
Здравствуйте!прошу помогите пожалуйста написать программу на С++... Даны два файла(путь к файлам ввести с консоли).Надо найти сколько раз содержимое файла1 встречается в файле 2. Заранее спасибо))
Как удалить символ C++
Вот код проги, на экан выводит кол-во числ, затем <(скобки); перечисляет числа через запятую и наконец >(скобки)....... Как убрать после последнего числа и перед скобками запятую?? Допустим я ввёл 1 3 Прога пишет 3 <1,2,3,) Мне после 3 запятая не нужна Спасибо большое! #include <iostream> using namespace std;
C++ Народ ПОБЛЕМА С Экраном на Borland C++ 5.02 http://www.cyberforum.ru/cpp-beginners/thread12516.html
Я вот решил попробывать Borland C++ 5.02 Написал программу (самую простую #include <iostream.h> int main() { *** cout << "Hello C++\n" ; *** return 0; } ) но экран просто бликаетю. Я думаю что нужна Задержка Экрана но незнаю как!Помогите Советом
C++ Widows приложения... В чём отличия писать прогу на виндоуз приложения (например виндоускоке-окно) на 6 Visual и на 2005-ом подробнее

Показать сообщение отдельно
qwone
8 / 8 / 1
Регистрация: 18.08.2008
Сообщений: 129
18.09.2008, 00:32     Создать массив минимально возможного размера, в котором нужно собрать общие элементы двух заданных массивов
Casper! вот я решил твою задачу с помощью классов.
отлажена и работает


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream>
#include <stdlib.h>
using namespace std;
 
 
class M{
private:
    char *pN;    // указатель на имя объекта 
    int *pM;    //Масив
    int Len;    //длина
public:
    M();
    M(int len);
    ~M();
    void SetName(char *p){pN=p;}
    int GetLen(){return Len;};
    int GetI(int i){return pM[i-1];};
    void sort(); // сортировка если в масиве одинаковые элементы
    void sort(M & A1,M& A2); // нахождение одинаковых элементов
    friend ostream& operator<< (ostream& theStream,M & theString);
};
M::M(){
    pN="!";
    pM= new int[1];
    Len=0;
}
M::M(int i){
    pN="!";
    pM= new int[i];
    Len=i;
    for(i=0;i<Len;i++)
          pM[i]=rand()%20;
}
M::~M(){
    delete []pM;
    Len=0;
}
void M::sort(){
    if (Len > 1) {
        int *pM1=new int[Len];
        int x; // вспомог флаг
        int i,k=0;
        for(i=0;i<Len-1;i++){
            x=0;
            for(int j=i+1;j<Len;j++){
                if (pM[i]==pM[j])
                    x=1;// элементы повторились        
            }
            if (x==0) {
                pM1[k]=pM[i];
                k++;
                }
            }
            pM1[k]=pM[i];
            k++;
        delete []pM;
        pM=pM1;
        Len=k;
    }
}
void M::sort(M & A1,M& A2){
    delete []pM;
    int Len1=A1.GetLen();
    int *pM1 =new int[Len1];
    int k=0;
    for(int i=1;i<=A1.GetLen();i++)
        for(int j=1;j<=A2.GetLen();j++)
            if (A1.GetI(i)==A2.GetI(j)){
                pM1[k]=A1.GetI(i);
                k++;
                }
    Len=k;            
    pM =new int[Len];
    for(int i=0;i<Len;i++)
        pM[i]=pM1[i];
    delete []pM1;
}
ostream & operator << (ostream & theStream,M & OUT ){
    theStream << OUT.pN << endl;
    if (OUT.Len<1){
        theStream <<" is empty"<<endl;
        return theStream;
        }
    else
        for (int i=1;i<=OUT.Len;i++)
            theStream <<i<<"\t"<<OUT.GetI(i)<<endl;
        return theStream;
    }
void viev(M & A){
    for(int i=1;i<=A.GetLen();i++)
        cout <<i<<"\t"<< A.GetI(i)<<endl;
};
template <class T>
void input(char * L,T & N){  //char n=input("number:",n); 
cout << L;
cin >> N;
cout << endl;
};
//------------ MAIN() -------------------
int main(){
    int size1,size2;     
    
    input("1 masiv size:",size1);
    M M1(size1);
    M1.SetName("1-Massiv");
    M1.sort(); // сжать масив 1
    cout << M1;
    
    input("2 masiv size:",size2);    
    M M2(size2);
    M2.SetName("2-Massiv");
    M2.sort();  // сжать масив 2
    cout << M2;
    
    M M3;
    M3.sort(M1,M2);
    M3.SetName("3-Massiv");
    cout << M3;
    
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru