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

Массивы через указатели - C++

Восстановить пароль Регистрация
 
denisneposeda
46 / 46 / 12
Регистрация: 18.10.2010
Сообщений: 212
16.11.2011, 13:54     Массивы через указатели #1
Задание 1
В упорядоченном по невозрастанию массиве чисел определить, есть ли заданное число A, в противном случае подсчитать сумму чисел, в два раза превосходящих A; кроме того, вычислить произведение чисел, меньших A.

Задание 2
Задана квадратная матрица порядка N. Вычислить произведение положительных чисел, лежащих на главной диагонали и ниже ее.
Программа должна выполнять ввод и вывод матрицы и дополнительных данных, выполнять необходимые действия и выводить результаты.

нужно написать через указатели.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
16.11.2011, 14:38     Массивы через указатели #2
1)
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
#include <iostream>
#include <time.h>
using namespace std;
 
int main() 
{
    int n; cin >> n;
    int *arr = new int [n];
    srand(time(NULL));
    for(int i = 0; i < n; i++) 
    {
        *(arr+i) = rand()%15;
    }
    int temp;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n-1; j++)
        {
            if(arr[j] < arr[j+1])
            {
                temp = *(arr+j);
                *(arr+j) = *(arr+(j+1));
                *(arr+(j+1)) = temp;
            }
        }
    }
    for(int i = 0; i < n; i++)
        cout << *(arr+i) << " ";
    int a, sum = 0, p = 1;
    cout << "\nEnter A = ";
    cin >> a;
    for(int i = 0; i < n; i++)
    {
        if(*(arr+i) == a)
        {
            cout << "Yes" << endl;
        }
        else
        {
            if((a+a) == *(arr+i))
                sum += *(arr+i);
        }
    }
    for(int i = 0; i < n; i++)
        if(*(arr+i) < a)
            p *= *(arr+i);
    cout << "Summ = " << sum << ", proz = " << p;
}
так?
denisneposeda
46 / 46 / 12
Регистрация: 18.10.2010
Сообщений: 212
16.11.2011, 16:14  [ТС]     Массивы через указатели #3
да, условие верно выполнено...пролсто через указатели пока не въехал...их работу, присвоение и тд и тп...жду 2...где уже матрица...
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.11.2011, 16:17     Массивы через указатели #4
amor1k, судя по заданию, просто требуется применить двоичный поиск в отсортированном массиве.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.11.2011, 16:52     Массивы через указатели #5
Цитата Сообщение от denisneposeda Посмотреть сообщение
В упорядоченном по невозрастанию массиве чисел определить, есть ли заданное число A, в противном случае подсчитать сумму чисел, в два раза превосходящих A; кроме того, вычислить произведение чисел, меньших A.
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
void (double *data, double A, int n, double &s, double &p, double *&f)
{
 double *f1;
 double *i;
 for (f1=NULL, i=data+n-1; i>=data; --i)
 {
  if ((*i)==A)
  {
   f1=i;
   break;
  }
 }
 if (f1)
 {
  for (f=f1, i=data; i<f1; ++i)
  {
   if ((*i)==A)
   {
    f=i;
    break;
   }
  }
 }
 else
 {
  f=NULL;
 }
 if (f)
 {
  if (f>Data)
  {
   for (p=1.0, i=Data; i<f; ++i)
   {
    p*=*i;
   }
  }
  else
  {
   p=0.0;
  }
  for (i=data+n-1, s=0.0; i>f1; --i)
  {
   if ((*i)==2.0*A)
   {
    s+=*i;
   }
  } 
 }
 else
 {
  s=0.0;
  p=0.0;
 }
}
denisneposeda
46 / 46 / 12
Регистрация: 18.10.2010
Сообщений: 212
16.11.2011, 17:22  [ТС]     Массивы через указатели #6
так так, мне и первый вариант подошел) а вот вторую задачу нужно...
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.11.2011, 18:08     Массивы через указатели #7
Цитата Сообщение от denisneposeda Посмотреть сообщение
Задание 2
Задана квадратная матрица порядка 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
double Calc(doube **data, int n)
{
 double **i;
 double *e;
 double *j;
 double r;
 bool f;
 for (r=1.0, f=true, i=data+n-1; i>=data; --i)
 {
  e=*i+(i-data);
  for (j=*i+n-1; j>=e; --j)
  {
   if ((*j)>0)
   {
    r*=*j;
    f=false;
   }
  }
 }
 if (f)
 {
  r=0.0;
 }
 return r;
}
denisneposeda
46 / 46 / 12
Регистрация: 18.10.2010
Сообщений: 212
16.11.2011, 18:10  [ТС]     Массивы через указатели #8
вот спасибо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2011, 15:11     Массивы через указатели
Еще ссылки по теме:

C++ массивы указателей,указатели на массивы
Динамические двумерные массивы через указатели. Как это происходит? C++
C++ Указатели и массивы

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

Или воспользуйтесь поиском по форуму:
denisneposeda
46 / 46 / 12
Регистрация: 18.10.2010
Сообщений: 212
15.12.2011, 15:11  [ТС]     Массивы через указатели #9
up

вторую задачку решите плз.
Yandex
Объявления
15.12.2011, 15:11     Массивы через указатели
Ответ Создать тему
Опции темы

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