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

Использование указателей в программах - C++

Восстановить пароль Регистрация
 
pezhone
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 9
19.01.2010, 02:27     Использование указателей в программах #1
Тема: «Использование указателей в программах»
№5.2
Составить программу, которая вычисляет наибольшие элементы и их порядковые номера для массивов Х(N), Y(M). Нахождение наибольших элементов и их порядковых номеров оформить в виде функции.


Тема: «Массивы»
4.3
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Не использовать дополнительный массив.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
19.01.2010, 03:22     Использование указателей в программах #2
5.2 Функция поиска индекса минимального элемента массива.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<assert.h>
 
int Max(const int* arr, int size)
{
  assert(arr);
 
  if(size == 0)
    return -1;
 
  int max_index = 0;
 
  for(int i = 0; i < size; ++i)
    if(arr[i] > arr[max_index])
      max_index = i;
 
  return max_index;
}
Пример использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
 
// Предыдущий листинг
 
int main()
{
  int arr[] = {1, -3, 6, 9, 10, 3, 4, 5};
 
  int max_index = Max(arr, sizeof(arr) / sizeof(arr[0]));
 
  std::cout << "Max element " << arr[max_index] << " at " << max_index << std::endl;
 
  return 0;
}

Не по теме:

Это не сайт первой доврачебной помощи - название "надо спасти мне жизнь))))))))))" только отталкивает от просмотра темы.
Давайте осмысленные названия темам - откликнувшихся будет больше.

insideone
Модератор
Автор FAQ
 Аватар для insideone
3623 / 901 / 48
Регистрация: 10.01.2010
Сообщений: 2,429
19.01.2010, 18:09     Использование указателей в программах #3
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
#define N 10
void flip(int& x, int& y)
{
    int temp = x;
    x = y;
    y = temp;
}
int main()
{
    // В одномерном массиве все отрицательные элементы переместить в начало массива,
    // а остальные – в конец с сохранением порядка следования.
    // Не использовать дополнительный массив.
    int A[N] = {10, -5, 23, -2, 32, -43, 0, 2, 8, -1};
    int ChangePos = 0, Temp = 0, writed = 0; 
    for (int i = 0; i < N; i++)
    {
        if ( A[i] < 0 )
        {
            int temp = A[i];
            for (int j = i; j > writed; j--)
            {
                flip(A[j], A[j-1]);
            }
            A[writed] = temp; writed++;
        }
    }
}

Не по теме:

Это было тяжело, однако несравнимо с IWBTG

taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
20.01.2010, 11:13     Использование указателей в программах #4
Где
сдесь
Цитата Сообщение от insideone Посмотреть сообщение
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
#define N 10
void flip(int& x, int& y)
{
    int temp = x;
    x = y;
    y = temp;
}
int main()
{
    // В одномерном массиве все отрицательные элементы переместить в начало массива,
    // а остальные – в конец с сохранением порядка следования.
    // Не использовать дополнительный массив.
    int A[N] = {10, -5, 23, -2, 32, -43, 0, 2, 8, -1};
    int ChangePos = 0, Temp = 0, writed = 0; 
    for (int i = 0; i < N; i++)
    {
        if ( A[i] < 0 )
        {
            int temp = A[i];
            for (int j = i; j > writed; j--)
            {
                flip(A[j], A[j-1]);
            }
            A[writed] = temp; writed++;
        }
    }
}

Не по теме:

Это было тяжело, однако несравнимо с IWBTG

указатели?

Добавлено через 1 минуту
И где они
сдесь?
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
// Предыдущий листинг
int main()
{
int arr[] = {1, -3, 6, 9, 10, 3, 4, 5};
int max_index = Max(arr, sizeof(arr) / sizeof(arr[0]));
std::cout << "Max element " << arr[max_index] << " at " << max_index << std::endl;
return 0;
}


Добавлено через 28 секунд
А
сдесь
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<assert.h>
int Max(const int* arr, int size)
{
assert(arr);
if(size == 0)
return -1;
int max_index = 0;
for(int i = 0; i < size; ++i)
if(arr[i] > arr[max_index])
max_index = i;
return max_index;
}
указатель действительно есть.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3623 / 901 / 48
Регистрация: 10.01.2010
Сообщений: 2,429
20.01.2010, 14:58     Использование указателей в программах #5
4.3 относится к теме «Массивы»
хм?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
20.01.2010, 15:36     Использование указателей в программах #6
taras atavin, не заметил название темы задачи. Вот задача 5.2. с использованием указателей:
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
#include<iostream>
#include<assert.h>
 
int Max(const int* arr, int size)
{
  assert(arr);
 
  if(size == 0)
    return -1;
 
  const int* max = arr;
 
  for(const int* p = arr; p < arr + size; ++p)
    if(*p > *max)
      max = p;
 
  return max - arr;
}
 
int main()
{
  int arr[] = {1, -3, 6, 9, 10, 3, 4, 5};
 
  int max_index = Max(arr, sizeof(arr) / sizeof(arr[0]));
 
  std::cout << "Max element " << arr[max_index] << " at " << max_index << std::endl;
 
  return 0;
}
Результат: http://codepad.org/PjYcrhah.
Yandex
Объявления
20.01.2010, 15:36     Использование указателей в программах
Ответ Создать тему
Опции темы

Текущее время: 22:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru