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

Странное поведение функции работы с массивом(шаблон) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ При подсчёте косинуса компилятор выдаёт неверное значение http://www.cyberforum.ru/cpp-beginners/thread258047.html
И снова здравствуйте,возникла очередная проблема в моей программе,при элементарном подсчёте косинуса компилятор выдаёт неверное значение,даю весь код чтобы не спрашивали,что и откуда берётся....проблема в последней функции в извлечении косинуса #include<iostream.h> #include<math.h> #include<conio.h> float a={-0.3,0.1,-0.1,0.2,0.3,-0.1}; float x1={0.7,0.6,-0.4}; float modul (float...
C++ Ввод константы Имеется массив. Нужно чтоб пользователь вводил его размер, но для этого нужно чтоб переменная была константой. Вопрос как сделать так чтоб пользователь константу вводил? cout<<"Введите колличество элементов в массиве"; cin>> z; z++; int arrive; Не работает http://www.cyberforum.ru/cpp-beginners/thread258045.html
C++ коэффициент пропорциональности
Создайте программу, которая вычисляет коэффициент пропорциональности (aspect ratio) экрана вашего компьютера по заданным значениям ширины и высоты в пикселях, используя следующие операторы: int width = 1280; int heidht =1024; double aspect = width / height;
C++ Lab4 вступ в C++
Скорость первого автомобиля V1 км / ч, второго - V2 км / ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили сначала движутся навстречу друг другу. Для C++
C++ бинарное дерево http://www.cyberforum.ru/cpp-beginners/thread258003.html
В общем у меня есть двоичное дерево поиска с включением, сделаны функции создания узла\дерева, поиска, и обхода. никак не получается дописать следующее: 1)поменять тип данных на строку символов 2)сделать функцию нахождения в дереве узла с заданным значением ключевого признака 3)сделать функцию определения максимальной глубины дерева 4)сделать функцию определения кол-ва узлов и листьев дерева...
C++ Двумерный массив.Мах и Мин поменять местами... Здравствуйте! Написать программу которая создает матрицу a*b. Найти максимальный элемент.И поменять их в массиве местами вывести массив. Помогите доделать и исправить ошибки. Чтото не так с min не пойму....и саму перестановку min b max не понимаю. #include "stdafx.h" #include "iostream" #include <conio.h> #include <stdlib.h> подробнее

Показать сообщение отдельно
РагнаР
0 / 0 / 0
Регистрация: 21.10.2010
Сообщений: 27

Странное поведение функции работы с массивом(шаблон) - C++

16.03.2011, 01:29. Просмотров 454. Ответов 5
Метки (Все метки)

Нужно написать функцию, которая из динамического массива удаляет все повторяющиеся элементы(остается только первый), массив сжимается.То есть , если наш массив 3 3 3 4 0 4 0 0 0, то результат 3 4 0.
Функцию реализовать шаблонной.
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
#include<iostream>
#include<time.h>
using namespace std;
template<typename T>
 
void szhatie(T* mas,unsigned &size)
{
    int s=size,q=size;
    T *temp=new T[size];
    for(unsigned i=0;i<size;i++)
    {
        temp[i]=mas[i];
        for(unsigned j=i+1;j<size;j++)
        {
            if(mas[i]==mas[j])
            {
                q--;
                break;
            }
        }
    }
    size=q;
    delete[]mas;
    mas=new T[size];
    unsigned index=0;
    for(unsigned i=0;i<s,index<size;i++)
    {
        bool a=true;
        for(unsigned j=0;j<i;j++)
        {
            if(temp[i]==temp[j])
            {
                a=false;
                break;
            }
        }
        if(a)
        {           
            mas[index++]=temp[i];
        }
    }
    
    delete[]temp;
//      for(int i=0;i<size;i++)
//  {
//      cout<<"Element"<<mas[i]<<endl;
//  }
//}
 
int main()
{
    setlocale(LC_ALL,".1251");
    unsigned size;
    //srand(time(0));
    cout<<"Введите размер массива ";
    cin>>size;
    int *mas=new int[size];
    for(unsigned i=0;i<size;i++)
    {
        //mas[i]=rand()%5;
        cin>>mas[i];
        //cout<<mas[i]<<" ";
    }
        szhatie(mas,size);
    cout<<endl<<"Сжатый массив"<<endl;
    for(unsigned i=0;i<size;i++)
    {
        cout<<mas[i]<<" ";
    }
    return 0;
}
Если я ввожу числа 3 3 3 4 0 4 0 0 0, то результат выводит -572662307 1 0
Если раскомментировать последние строки в функции(которые выводят массив), то результат с теми же числами будет 1433284136 1 0
Если же я прогоняю программу построчно (ctrl+f10) или текст функции засовываю в мэйн, то результат 3 4 0, то есть то что надо.

Добавлено через 3 часа 44 минуты
Иногда вообще какую-то ерунду выдает. Может быть проблема с удалением памяти?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru