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

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

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

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

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

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

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

2
0 / 0 / 1
Регистрация: 12.09.2009
Сообщений: 10
18.06.2010, 02:05  [ТС]
если кому интересно вот исправление
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
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2010, 08:06
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru