Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамические массивы и указатели / 3 сообщений из 3, страница 1 из 1
29.03.2017, 00:30
    #39428858
cnainik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические массивы и указатели
Здраствуйте . Помогите пожалуйста .... Есть динамический массив и натуральное число N, крайним элементом будет A(n).Организовать ввод, обработку , вывод элементов массива используя указатели .


Код: plaintext
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.
int main()
{
    setlocale(LC_ALL, "russian");
    char mass[N];
    char* ptr;
    int i, tmp;
    ptr = mass;

    ptr = (char*)malloc(sizeof(char) * N);

    puts("Введите элементы ");
    for (i = 0; i < N; i++)
        scanf("%c", &ptr[i]);

    for (i = 0; i < N; i++)
        printf("%c", *ptr++);

    for (i = 0; i < N; i++) {
        if (mass[i] > mass[i + 1]) {
            tmp = 0;
            tmp = ptr[i];
            mass[i] = mass[i + 1];
            mass[i + 1] = tmp;
        }
        printf("%c", mass[i + 1]);
    }

    return 0;
}


Модератор: Отформатировано
...
Рейтинг: 0 / 0
29.03.2017, 12:08
    #39429090
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические массивы и указатели
cnainikЗдраствуйте . Помогите пожалуйста .... Есть динамический массив и натуральное число N, крайним элементом будет A(n).Организовать ввод, обработку , вывод элементов массива используя указатели .


Код: plaintext
1.
    ptr = (char*)malloc(sizeof(char) * N);




malloc и ?

Сказал "А" -- надо говорить и "Б"!
...
Рейтинг: 0 / 0
30.03.2017, 23:51
    #39430553
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические массивы и указатели
Я немного покритиковал:

Код: plaintext
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.
int main()
{
    setlocale(LC_ALL, "russian");
    char mass[N];
    char* ptr;
    int i, tmp;
    ptr = mass; //указатель ptr "смотрит" на массив mass

    ptr = (char*)malloc(sizeof(char) * N); //а теперь укзатель "смотрит" на новый кусок памяти, поэтому предыдущая строчка теряет смысл

    puts("Введите элементы ");
    for (i = 0; i < N; i++)
        scanf("%c", &ptr[i]); //заполнили новый кусок памяти (не массив!)

    for (i = 0; i < N; i++)
        printf("%c", *ptr++);

    for (i = 0; i < N; i++) {
        if (mass[i] > mass[i + 1]) {//у нас в массиве значения не заданы, поэтому сравнения не имеют смысл
            tmp = 0; //абсолютно бесполезная строчка
            tmp = ptr[i];
            mass[i] = mass[i + 1];
            mass[i + 1] = tmp;
        }
        printf("%c", mass[i + 1]); //последний элемент выйдет за границы массива!
    }

    return 0; //до выхода из функции нет освобождения выделенной памяти с помощью free
}



Для поставленной задачи массив mass не нужен, а последний цикл надо проводить с указателем ptr.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Динамические массивы и указатели / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]