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

Определение класса для работы с одномерным динамическим массивом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Циклы http://www.cyberforum.ru/cpp-beginners/thread146486.html
Помогите пожалуйста) Для каждого 0.16≤ y≤ 1.6 с шагом ∆ y=0.24 при всех 0.1 <z <0.5 вычислить S=(y*x^2+z)*arcsinz, причем, если y≤0.8, то∆z=0.1, иначе ∆z=0.05 .
C++ Функции Помогите пожалуйста, горю горю... вот само задание на с++ Написать Функцию подсчитывающую количество не нулевых элементов массива. http://www.cyberforum.ru/cpp-beginners/thread146481.html
Создание dll C++
Всем привет, лютые и бородатые прогеры :) Потихоньку изучаю язык С. Столкнулся с такой проблемой. Не могу сделать динамическую библиотеку (dll), юзал гугл, нашел много материала, но правильно применить так и смог. Суть задания заключается вот в чем: "Реализовать в подпрограммах предусмотренные вариантом алгоритмы сортировки. Подпрограммы выносятся в отдельную библиотеку, которая...
C++ Найти модуль суммы и квадрат произведения компонент файла
Всем Доброй ночи! Если сможете, то помогите решит задание: Дан файл f: file of real. Найти модуль суммы и квадрат произведения компонент файла f.
C++ Builder Возможно ли изменить цвет заголовка окна? http://www.cyberforum.ru/cpp-beginners/thread146451.html
Есть проект, интерфейс - окошко... Самая верхняя полоска, справа которой виндовский крестик закрытия окна, имеет синий цвет с градиентом... А можно в программе как-нибудь поменять этот цвет?
C++ Программа с++ Написать программу на языке C++,читающую со стандартного ввода 4 десятичных числа x,y,m,n. Все смещения будут указываться, начиная с младшего бита, начиная с 0.В числах x,y младшие m из x заменить на старшие m бит из y, потом инвертировать 5 младших бит в x. Программа должна вывести все исходные данные в десятичном виде, Исходные и полученные значения x, y в двоичном виде в столбик, причём... подробнее

Показать сообщение отдельно
Sov3117
0 / 0 / 0
Регистрация: 12.09.2009
Сообщений: 10
16.06.2010, 23:49     Определение класса для работы с одномерным динамическим массивом
задача : В массиве А(N) поменять местами последний отрицательный элемент с максимальным элементом. делал в BC++

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
#include <iostream.h>
#include <stdlib.h>
class Massiv{       
  int n;
  int *p;                  
  int z;
  int t;
  int s;
  int max;
public:
  Massiv(int k);        
  ~Massiv(){delete [] p;}   
  maximal();
  otric();
  zamena();
  show();
};
Massiv::Massiv(int k){  
  n = k;                
  p = new int[n];       
  if(p == NULL){
    cout<<"no memory"<<endl;
    exit(1);
  }
  for(int i = 0; i < n; i++)     
    p[i] = random(10)-5;
}
Massiv::maximal()
{
  for(int i=0; i<n; i++)
  {
    if (p[i]> p[max])
    p[max]=p[i];
 
  }
   cout<<"\n maximal element = "<<p[max]<<endl;
   z=p[max];
}
Massiv::otric()
{
  for(int i = n-1; i >=0; i--)
  {
    if (p[i]<0)
    {
      s=i;
      break;
    }
  }
  if (p[s]>=0)
    cout<<"\n posled otric element net"<<endl;
  else
    cout<<" posled otric element = "<<p[s]<<endl;
    t=p[s];
}
Massiv::zamena()
{
   if(p[s]<0)
   {
      for(int i=0; i<n; i++)
      {
       if(p[i]==z)
        p[i]=t;
       else  if(i==s)
        p[i]=z;
      }
   }
}
Massiv::show()
{
  cout<<"Massiv=="<<endl;
  for(int i = 0; i < n; i++)
  {
   cout.width(4);
   cout<<p[i]<<" ";
  }
}
int main(){
  int kol;
  cout<<"Vvedi chislo elementov:";     cin>>kol;
  Massiv ob(kol);       
  ob.show();
  ob.maximal();
  ob.otric();
  ob.zamena();
  ob.show();
  system ("pause");
  return 0;
}
Я менял последний отрицательный со всеми элиментоми равными максимальному.
Не могу понять почему меняется значение 2-го элемента массива, вне зависимости от того максимальный это элемент или нет.И если не лень объясните
почему программа не верно работает если в

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Massiv::zamena()                            //Massiv::zamena() 
{                                                    {
   if(p[s]<0)                                             if(p[s]<0)
   {                                                        {
      for(int i=0; i<n; i++)                             for(int i=0; i<n; i++) 
      {                                                       {
        if(p[i]==z)                                    if(p[i]==p[max]) 
        p[i]=t;                                            p[i]=p[s];
        else  if(i==s)                                        else  if(i==s)
        p[i]=z;                                                p[i]=z; 
      }                                                         }
   }                                                          }
}
}

я напрямую использую p[max], p[s]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru