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

Указатели с++ - C++

Восстановить пароль Регистрация
 
Акинак
1 / 1 / 0
Регистрация: 19.06.2011
Сообщений: 6
19.06.2011, 21:09     Указатели с++ #1
Здравствуйте. У меня такая проблема. Осталась последняя лабораторная по информатике. Условие такое:
"В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) Количество элементов, равных 0;
2) Сумму элементов, расположенных после минимального элемента;
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
28
29
30
31
32
33
34
35
36
37
#include<iostream>
#include<conio.h>
#include<time.h>
using namespace std;
int main() 
{
srand(time(0));
const int m=10;
int i, j, n, n1, x, s;
int a[m], b[m];
for(i=0;i<m;i++)
    {   a[i]=rand()%11-5; b[i]=a[i];
        cout<<"["<<i+1<<"] = "<<a[i]<<endl;
    }
n1=0;
n=a[0];
s=0;
for(i=0;i<m;i++)
    {   if (a[i]==0) n1+=1;
        if (a[i]<=n) {n=a[i]; x=i; }
    }
cout<<"Kolichestvo nulevyh = "<<n1<<endl;
for(i=x;i<m-1;i++) 
    { 
        s+=a[i+1];
    }
cout<<"Summa = "<<s<<endl;
for(i=0;i<m;i++)
          { for (j=0;j<m-1;j++)
               { if (b[i]<b[j])
                   { x=b[i]; b[i]=b[j]; b[j]=x; }
                }
}
for(j=0;j<m;j++) cout<<"["<<j+1<<"] "<<b[j]<<endl;
getch();
return 0;
}
Где и как нужно использовать указатели? Просто я эту область языка вообще не знаю. Заранее благодарен

 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2011, 21:09     Указатели с++
Посмотрите здесь:

C++ Указатели
Указатели.... C++
C++ Указатели
Указатели C++
Указатели. C++
Указатели C++
C++ Указатели
C++ Указатели

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
19.06.2011, 21:36     Указатели с++ #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
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
#include <iostream>
#include <algorithm>
using namespace std;
#define  COUNT(sz1)    sizeof(sz1) / sizeof(float)
 
 
 
int   main(void) {
 
    float   arr[] = { 0.7f, 3.14f, 0.0f, -99.55f, 0.0f, 4.2f, 2.33f, 0.0f, 3.3333f, 9.9f,  0.0f };
    const float*  first  = arr;
    const float*  last  = arr + COUNT(arr);
 
           // подсчитываем нули
    int cnt_zero = 0;
    while( first != last ) {
            if( *first == 0.0f )
                 ++cnt_zero;
            *first++;
    }
    cout << "count zero: " << cnt_zero << endl;
 
 
    // суммируем после наименьшего элемента
    first = arr;
    last = arr + COUNT(arr);
    float  tmp = *first;
    const float*  pos = NULL;
 
    while( first != last ) {
        if( *first < tmp ) {
            tmp = *first;
            pos = first;
        }
        *first++;
    }
    if(pos) {
            float  sum = 0.0f;
            for(pos = pos + 1; pos != last; *pos++ )
                   sum += *pos;
            cout << "min sum: " << sum << endl;
    }
 
 
    // сортируем по-возрастанию
    while(1) {
            float*  a    = arr;
            float*  b    = arr + 1;
            short test = 0;
            for(int sz = COUNT(arr) - 1; sz-- ; ++a, ++b) {
                if( *a > *b ) {
                     float    sv = *a;
                     *a = *b;
                     *b = sv;
                     test = 1;
                }
            }
            if(! test)
                break;
    }
    copy(arr, arr + COUNT(arr), ostream_iterator<float>(cout, ", "));  // выводим в консоль
 
return (0);
}
Акинак
1 / 1 / 0
Регистрация: 19.06.2011
Сообщений: 6
19.06.2011, 23:32  [ТС]     Указатели с++ #3
Эмм. Честно, не очень понятно. Можно чуть поподробнее?
Yandex
Объявления
19.06.2011, 23:32     Указатели с++
Ответ Создать тему
Опции темы

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