1

Тема: Як переробити програму

Як розвязати цю програму за допомогою вказівників?

#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
#include<time.h>
#define n 4
#define h 6
 int main()
{
    unsigned int i,j;
    int vect[2*h],a[n][h];
    system("chcp 1251 >> nul");
    srand((unsigned int)time(0));
    puts("Исходная матрица имеет вид:");
    for (i=0;i<n;++i) {
        for (j=0;j<h;++j) {
            a[i][j]=rand()%100-50;
            printf("%4d ",a[i][j]);
        }
        puts("");
    }
     for (j=0;j<h;++j) {
        vect[j]=a[0][j];
        vect[j+h]=a[1][j];
    }
     printf("\nВектор имеет вид: ");
    for (j=0; j<2*h; ++j) printf("%d ",vect[j]);
    puts("");
    system("pause");
    return 0;
}

Завдання Дано матрицю розміром МхN. Сформувати з цієї мат-
риці вектор за правилом: перші N елементів вектора - це елемен-
ти матриці першого рядка, другі N елементів - елементи другого
рядка і т.д. (М=4; N=6).

2

Re: Як переробити програму

1. Програму не можна розв'язати. Розв'язати можна задачу.
2. Ця програма використовує вказівники, тільки неявно.
3. А нащо? Що саме ви хочете зробити вказівниками?
4. Де ваша спроба розв'язання? В чому проблема?

3

Re: Як переробити програму

SET MODE TELEPATHY ON

Гадаю, мова про те, щоб всякі

a[i][j]

замінити на

 *(a+i*h+j) 

4

Re: Як переробити програму

koala написав:

1. Програму не можна розв'язати. Розв'язати можна задачу.
2. Ця програма використовує вказівники, тільки неявно.
3. А нащо? Що саме ви хочете зробити вказівниками?
4. Де ваша спроба розв'язання? В чому проблема?

Мені цю задачу треба розвязати за допомогою вказівників.

5

Re: Як переробити програму

Пане, я вмію читати. Продемонструйте і ви своє вміння читати і прочитайте те, що йде далі першого пункту.

6

Re: Як переробити програму

koala написав:

Пане, я вмію читати. Продемонструйте і ви своє вміння читати і прочитайте те, що йде далі першого пункту.

2.Використати вказівники явно.
3.Таке завдання дали.
4.У мене не спроба,а розвязана задача,яку треба ще раз розвязати за допомогою вказівників.

7

Re: Як переробити програму

oleh007 написав:
koala написав:

Пане, я вмію читати. Продемонструйте і ви своє вміння читати і прочитайте те, що йде далі першого пункту.

2.Використати вказівники явно.
3.Таке завдання дали.
4.У мене не спроба,а розвязана задача,яку треба ще раз розвязати за допомогою вказівників.

SET TELEPATHY MODE OFF

...

8

Re: Як переробити програму

Bartash написав:
oleh007 написав:
koala написав:

Пане, я вмію читати. Продемонструйте і ви своє вміння читати і прочитайте те, що йде далі першого пункту.

2.Використати вказівники явно.
3.Таке завдання дали.
4.У мене не спроба,а розвязана задача,яку треба ще раз розвязати за допомогою вказівників.

SET TELEPATHY MODE OFF

...

Причому тут телепатія?

9

Re: Як переробити програму

oleh007 написав:

Причому тут телепатія?

При тому, що без неї незрозуміло, як саме вас просять використати вказівники (третє питання від koala).
Увімкнувши телепатію, я припустив можливий варіант у першому пості, який ви, вочевидь, проігнорували. А як вимкнув - ідеї зникли.

10

Re: Як переробити програму

інститут мод он, там 99,9% треба щось таке
http://stackoverflow.com/a/936702

11

Re: Як переробити програму

Bartash написав:

SET MODE TELEPATHY ON

Гадаю, мова про те, щоб всякі

a[i][j]

замінити на

 *(a+i*h+j) 

Можливо так.

12

Re: Як переробити програму

Я б просто замінив всі масиви на вказівники:
   int vect[ 2*h ],a[ n ][ h ];

  int *vect = new int     [ 2*h ],
      **a    = new (int *)[ n    ];
  for(int i = 0; i < n; ++i)
        a[ i ] = new int     [ h    ];

ну і, відповідно, видалити потім все.

Альтернативні варіанти тут.

13

Re: Як переробити програму

koala написав:

Я б просто замінив всі масиви на вказівники:
   int vect[ 2*h ],a[ n ][ h ];

  int *vect = new int     [ 2*h ],
      **a    = new (int *)[ n    ];
  for(int i = 0; i < n; ++i)
        a[ i ] = new int     [ h    ];

ну і, відповідно, видалити потім все.

Альтернативні варіанти тут.

Тобто мены просто добавити ваш код з заміною в програму і все?

14

Re: Як переробити програму

Не знаю, ви не відповіли на моє питання 3, а я не телепат.