С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 12.09.2009
Сообщений: 10
1

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

16.06.2010, 23:49. Показов 1201. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
задача : В массиве А(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]
0
IT_Exp
Эксперт
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
Блог
16.06.2010, 23:49
Ответы с готовыми решениями:

Функции для работы с одномерным динамическим массивом
Написать функции для работы с одномерным динамическим массивом: 1. Заполнение массива случайными...

Программа работы с одномерным динамическим массивом
Помогите пожалуйста!!! //Реализовать функционал работы с одномерным динамическим массивом. // 1....

Шаблон класса для работы с одномерным массивом
Создать шаблон класса для работы с одномерным массивом. Выполнить тестирование путем...

Реализовать функционал работы с одномерным динамическим массивом (добавление одного элемента в начало)
Реализовать функционал работы с одномерным динамическим массивом. Возникла проблема с добавлением...

2
0 / 0 / 1
Регистрация: 12.09.2009
Сообщений: 10
18.06.2010, 02:05  [ТС] 2
если кому интересно вот исправление
C++
1
2
3
4
5
6
7
8
9
10
11
Massiv::maximal()
{
  int im = 0; int max=p[0];
  for(int i=1; i<n; i++)
  {
    if (p[i]> max){ max=p[i]; im=i;}
 
  }
   cout<<"\n maximal element = "<<p[im]<<endl;
   z=max;
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.06.2010, 08:06 3
Цитата Сообщение от Sov3117
В массиве А(N) поменять местами последний отрицательный элемент с максимальным элементом.
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
#include <stdio.h>
#include <stdlib.h>
 
int func(int n[], int size);
int print(int n[], int size);
 
 
int main(void) /* ANSI C89 */
{
    /*
     *   В массиве А(N) поменять местами последний
     *   отрицательный элемент с максимальным элементом.
     *
     */
    
    int n[] = { 1, -2, 10, -3, 4, 7 };
    int size = sizeof n / sizeof n[0];
    
    
    print(n, size);
    
    func(n, size);
    
    print(n, size);
    
    
    return EXIT_SUCCESS;
}
 
int func(int n[], int size)
{
    int lastneg, lni;
    int max, mi;
    int i, tmp;
    
    
    max = n[0];
    
    lni = -1;
    
    for (i = 0; i < size; i++) {
        
        if (n[i] > max) {
            max = n[i];
            mi = i;
        }
        
        if (n[i] < 0) {
            lastneg = n[i];
            lni = i;
        }
    
    }
 
    if (lni < 0)
        return -1;
 
 
    tmp = n[mi];
    
    n[mi] = n[lni];
    
    n[lni] = tmp;
    
    
    return 0;
}
 
int print(int n[], int size)
{
    int i;
    
    for (i = 0; i < size; i++)
        printf("%3d%s", n[i], (i+1 < size ? ", " : "\n"));
        
    return 0;
}
0
18.06.2010, 08:06
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
18.06.2010, 08:06
Помогаю со студенческими работами здесь

Создать класс для работы с одномерным массивом целых чисел. Разработать следующие элементы класса:
Создать класс для работы с одномерным массивом целых чисел. Разработать следующие элементы класса:...

Определить класс для работы с одномерным массивом типа double, разработав следующие элементы класса. Поля: - double []
Определить класс для работы с одномерным массивом типа double, разработав следующие элементы...

Работа с динамическим одномерным массивом
Нужно реализовать функцию void appendElements (Array, *array, int *xs, int n);, которая добавляет n...

Работа с одномерным динамическим массивом Array
1. void pushFront (Array *array, int value); Добавляет значение value в начало массива array. Все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru