С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Deemk0
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 18
1

Переделать задачу под указатели

13.02.2012, 22:13. Просмотров 457. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Никак не могу понять, каким образом данную задачу переделать под указатели так как напрямую к элементам не обращаюсь, если есть время прошу помочь переделать или хотя бы пару дельных советов.Спасибо!
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
#include <stdio.h>
#include <conio.h> 
 void main()
{int a[10][10],n,i,j,k,p;
printf("vvedi n");
scanf("%d",&n);
printf("vvedite massiv");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf("%d",&a[i][j]);
 
for(p=0;p<n;p++)
{
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[p][i]>a[p][j])
{k=a[p][i]; a[p][i]=a[p][j]; a[p][j]=k;}
}
 
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%d ", a[i][j]);
printf("\n");
}}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2012, 22:13
Ответы с готовыми решениями:

Переделать индексацию на указатели
Необходимо сделать все через указатели ,но не выходит все сразу( #include...

Нужно переделать программу, используя указатели
Нужно переделать программу, используя указатели, первая часть считает...

Переделать программу, используя указатели, а не индексы
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; void main() { clrscr(); int...

Переделать обработку массивов через указатели
есть код с использованием индексной формы, нужно сделать через указатели, а как...

Нужно переделать под С
Нужно код с++ переделать на с #include &lt;stdio.h&gt; #include &lt;locale.h&gt;//для...

4
soon
2546 / 1311 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.02.2012, 22:29 2
Цитата Сообщение от Deemk0 Посмотреть сообщение
a[i][j]
На
C++
1
*(*(a + i) + j)
Вот вам и работа с указателями.
1
ШКІПЕР
96 / 96 / 22
Регистрация: 14.04.2010
Сообщений: 280
Записей в блоге: 9
Завершенные тесты: 1
13.02.2012, 22:44 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
38
39
40
41
#include <stdio.h>
#include <conio.h> 
#include <stdlib.h>
#include <locale.h>
 
int main()
{
    int a[10][10],n,i,j,k,p;
    setlocale(LC_ALL, "Rus");
    printf("Вводим n = ");
    
    scanf("%d",&n);
    
    printf("Теперь массив: \n");
    for (i=0;i<n;i++)
        for (j=0;j<n;j++)
            scanf("%d",&*(*(a+i)+j));
 
    for(p=0;p<n;p++)
    {
        for(i=0;i<n-1;i++)
            for(j=i+1;j<n;j++)
                if(*(*(a+p)+i)>*(*(a+p)+j))
                {
                    k=a[p][i]; 
                    *(*(a+p)+i)=*(*(a+p)+j); 
                    *(*(a+p)+j)=k;
                }
    }
 
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf("%2d", *(*(a+i)+j));
 
        printf("\n");
    }
    _getch();
    return EXIT_SUCCESS;
 
}


Добавлено через 1 минуту
Deemk0, ваша программа жутко "нечитабельна". Иногда время от времени форматируйте сам код
1
Deemk0
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 18
14.02.2012, 14:34  [ТС] 4
я поменял все так
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
#include <stdio.h>
#include <conio.h> 
 void main()
{int a[10][10],n,i,j,k,p;
printf("vvedi n");
scanf("%d",&n);
printf("vvedite massiv");
for (i=0;i<n;i++)
    for (j=0;j<n;j++)
    scanf("%d",&*(*(a+i)+j);
 
for(p=0;p<n;p++)
{
       for(i=0;i<n-1;i++)
          for(j=i+1;j<n;j++)
                            if(*(*(a+p)+i)>*(*(a+p)+j)
                            {k=*(*(a+p)+i); *(*(a+p)+i)=*(*(a+p)+j); *(*(a+p)+j)=k;}
}
 
for(i=0;i<n;i++)
          {for(j=0;j<n;j++)
         printf("%d ", *(*(a+i)+j));
           printf("\n");
                          }
}
Но вопрос в том как выделить правильно память с использованием функции malloc? и объявить переменные?

Добавлено через 10 минут
не могли бы вы подсказать как выделить память при помощи malloc и объявить указатель в строке
C
1
{int a[10][10],n,i,j,k,p;
, вместо а[10][10], что-то вроде *а?
0
soon
2546 / 1311 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.02.2012, 16:56 5
Цитата Сообщение от Deemk0 Посмотреть сообщение
не могли бы вы подсказать как выделить память при помощи malloc и объявить указатель в строке
C
1
2
3
4
5
6
7
int **arr = (int**)malloc(rows * sizeof(int*));
for(i = 0; i < rows; ++i)
    arr[i] = (int*)malloc(cols * sizeof(int));
/*...*/
for(i = 0; i < rows; ++i)
    free(arr[i]);
free(arr);
1
14.02.2012, 16:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2012, 16:56

Переделать под классы
Здравствуйте. Был бы благодарен, если бы вы помогли переделать эту задачу под...

Переделать программу под поинтер
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; struct hotel{...

Переделать код программы под Си
помогите переделать код программы под Си #include &lt;iostream&gt; using...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru