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

Работа с указателями - C++

Восстановить пароль Регистрация
 
guillemots
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 21
22.11.2013, 17:19     Работа с указателями #1
Доброго времени суток, нужна помощь.
Данный две задачи, обе работают правильно:

Дан целочисленный массив размера N. Преобразовать его, прибавив к нечетным числам первый элемент. Первый элемент массива не изменять. Осуществить сдвиг вправо на k позиций, где k – число четных элементов
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 <conio.h>
#include <stdlib.h>
#include <ctime>
#define n 10
 
using namespace std;
int main ()
 
{   int k,i,a[n],a2[n],b[n];
    srand((unsigned)time(NULL));
    for (i=0 ; i<n; i++)
        a[i]=rand()%40+10;
         
 
    cout<<"Massiv a["<<n<<"]"<<endl;
    for (i=0;i<n;i++)
        cout<<a[i]<<"   ";
    
    cout<<""<<endl;
    cout<<""<<endl;
    
    for(i=0;i<n;i++)
        b[i]=a[i];
    cout<<"Massiv b["<<n<<"]"<<endl;
    for (i=0;i<n;i++)
        cout<<b[i]<<"   ";
    
    cout<<""<<endl;
    cout<<""<<endl;
    
    cout<<"Preobrazovani massiv b["<<n<<"]"<<endl;
    cout<<b[0]<<"   ";
    for (i=1 ; i<n; i++)
        {if(b[i] % 2 != 0)
        b[i]=b[i]+b[0];
        cout<<b[i]<<"   ";}
    
    cout<<""<<endl;
    cout<<""<<endl; 
 
    k=0;    
    for (i=0; i<n; i++)
        {if(a[i] % 2 == 0)
        k=k+1;}
    
    cout<<"Kol-vo chetnih elementov v massive a["<<n<<"] k="<<k<<endl;
    cout<<""<<endl; 
 
    for(i=0;i<n;i++)
        a2[i]=a[i];
 
    cout<<"Sdvig massiva a["<<n<<"] vpravo na k pozici:"<<k<<endl;
    for (i=0; i <k; i++)
        {a[i]=a2[i+n-k];}
 
    for (i=k; i<n; i++)
        {a[i]=a2[i-k];}
 
    for (i=0;i <n;i++)
        cout<<a[i]<<"   "; 
    
    getch();
}

Дана целочисленная прямоугольная матрица. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
#define n 10
#define m 4
 
using namespace std;
int main ()
 
{   int a[n][m],i,j,sum,k;
    srand((unsigned)time(NULL));
    
    for (i=0; i<n; i++)
        {for (j=0; j<m; j++)
            a[i][j]=rand()%15-5;};
            
    cout<<"Matrix a["<<n<<"X"<<m<<"]"<<endl;
    cout<<""<<endl;
    for (i=0; i<n; i++)
        {for (j=0; j<m; j++)
            if (a[i][j]<0)
            cout<<a[i][j]<<"   "; else cout<<" "<<a[i][j]<<"   ";
            cout<<""<<endl;
            cout<<""<<endl;};
        
    for (i=0; i<n; i++)
        {sum=0;
        k=0;
        for (j=0; j<m; j++)
            {if (a[i][j]<0) k=k+1;
            sum=sum+a[i][j];};
        if (k>0)  cout<<"Summa elementov v stroke "<<i+1<<" s = "<<sum;
        if (k==0) cout<<"V stroke "<<i+1<<" otsystvyut otricatelnie elementi";
        cout<<""<<endl;};
    cout<<""<<endl;
    cout<<""<<endl;
        
    getch();
}
Теперь нужно, что бы эти задачи работали точно также, только с использованием указателей. Буду очень признателен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 17:19     Работа с указателями
Посмотрите здесь:

C++ работа с указателями
работа с указателями C++
Работа с указателями C++
C++ Работа с указателями
Работа с указателями C++
C++ работа с указателями
Работа с указателями C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
22.11.2013, 17:30     Работа с указателями #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
65
66
67
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
#define n 10
 
using namespace std;
int main ()
 
{   int k,i;
    int* a = new int[n];
    int* a2 = new int[n];
    int* b = new int[n];
    srand((unsigned)time(NULL));
    for (i=0 ; i<n; i++)
        *(a+ i)=rand()%40+10;
 
 
    cout<<"Massiv a["<<n<<"]"<<endl;
    for (i=0;i<n;i++)
        cout<<*(a+ i)<<"   ";
 
    cout<<""<<endl;
    cout<<""<<endl;
 
    for(i=0;i<n;i++)
        *(b+ i)=*(a+ i);
    cout<<"Massiv b["<<n<<"]"<<endl;
    for (i=0;i<n;i++)
        cout<<*(b+ i)<<"   ";
 
    cout<<""<<endl;
    cout<<""<<endl;
 
    cout<<"Preobrazovani massiv b["<<n<<"]"<<endl;
    cout<<b[0]<<"   ";
    for (i=1 ; i<n; i++)
        {if(*(b+ i) % 2 != 0)
        *(b+ i)=*(b+ i)+*(b+ i);
        cout<<*(b+ i)<<"   ";}
 
    cout<<""<<endl;
    cout<<""<<endl;
 
    k=0;
    for (i=0; i<n; i++)
        {if(*(a+ i) % 2 == 0)
        k=k+1;}
 
    cout<<"Kol-vo chetnih elementov v massive a["<<n<<"] k="<<k<<endl;
    cout<<""<<endl;
 
    for(i=0;i<n;i++)
        *(a2+ i)=*(a+ i);
 
    cout<<"Sdvig massiva a["<<n<<"] vpravo na k pozici:"<<k<<endl;
    for (i=0; i <k; i++)
        {*(a+ i)=*(a2+i+n-k);}
 
    for (i=k; i<n; i++)
        {*(a+ i)=*(a2+i-k);}
 
    for (i=0;i <n;i++)
        cout<<*(a+ i)<<"   ";
 
return 0;
}
Добавлено через 36 секунд
второй по примеру сам
guillemots
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 21
22.11.2013, 18:37  [ТС]     Работа с указателями #3
Спасибо, помогли очень

Добавлено через 52 минуты
Не могу разобраться с двумерным массивом. В 12 строке выдает ошибку - [Error] cannot convert 'int (*)[4]' to 'int**' in initialization. Буду признателен, если поможете.
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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctime>
#define n 10
#define m 4
 
using namespace std;
int main ()
 
{   int i,j,sum,k;
    int** a = new int[n][m];
    srand((unsigned)time(NULL));
    
    for (i=0; i<n; i++)
        {for (j=0; j<m; j++)
            *(*(a+i)+j)=rand()%15-5;};
            
    cout<<"Matrix a["<<n<<"X"<<m<<"]"<<endl;
    cout<<""<<endl;
    for (i=0; i<n; i++)
        {for (j=0; j<m; j++)
            if (*(*(a+i)+j)<0)
            cout<<*(*(a+i)+j)<<"   "; else cout<<" "<<*(*(a+i)+j)<<"   ";
            cout<<""<<endl;
            cout<<""<<endl;};
        
    for (i=0; i<n; i++)
        {sum=0;
        k=0;
        for (j=0; j<m; j++)
            {if (*(*(a+i)+j)<0) k=k+1;
            sum=sum+*(*(a+i)+j);};
        if (k>0)  cout<<"Summa elementov v stroke "<<i+1<<" s = "<<sum;
        if (k==0) cout<<"V stroke "<<i+1<<" otsystvyut otricatelnie elementi";
        cout<<""<<endl;};
 
        
    getch();
}
Yandex
Объявления
22.11.2013, 18:37     Работа с указателями
Ответ Создать тему
Опции темы

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