Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2017, 18:18   #1
Desdev
 
Регистрация: 07.08.2017
Сообщений: 5
По умолчанию map функция

Помогите пожалуйста ребят не могу найти ошибку,указателям учусь,нужно для инт массива применить функцию к всем элементам массива и вернуть массив возвращенных значений


Код:
#include <stdio.h>
#include <stdlib.h>

int     f(int   x)
{
    x = x * 2;
    return (x);
}

int     *map(int *tab, int lenght, int(*f)(int))
{
    int     i;
    int     *mss;

    i = 0;
    if (lenght < 0)
        return (0);
    mss = malloc(sizeof(int) * lenght);
    while (i < lenght)
    {
        mss[i] = f(tab[i]);
        i++;
    }
    return (mss);
}

int     main(void)
{
    int     *tab;
    int     lenght;

    tab = 54;
    lenght = 2;

    printf("%d", map(tab, lenght, f));
    return (0);
}
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 07.08.2017 в 18:27.
Desdev вне форума Ответить с цитированием
Старый 07.08.2017, 18:23   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Код:
41 int *tab;
...
44 tab = 54;
кто память будет выделять? вы уверены, что вам доступен этот адрес 54?

Код:
33 mss[i] = f(tab[i]);
tab у вас сколько элементов содержит? один? или два?

кто возвращаемый map массив удалять будет?
p51x вне форума Ответить с цитированием
Старый 07.08.2017, 18:34   #3
Desdev
 
Регистрация: 07.08.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
41 int *tab;
...
44 tab = 54;
кто память будет выделять? вы уверены, что вам доступен этот адрес 54?

Код:
33 mss[i] = f(tab[i]);
tab у вас сколько элементов содержит? один? или два?

кто возвращаемый map массив удалять будет?
Спасибо,я понял что нужно лучше учить массивы,объявления и тдтп только неделю учусь

#include <stdio.h>
#include <stdlib.h>

int f(int x)
{
x = x * 2;
return (x);
}

int *ft_map(int *tab, int lenght, int(*f)(int))
{
int i;
int *mss;

i = 0;
mss = malloc(sizeof(int) * lenght);
while (i < lenght)
{
mss[i] = f(tab[i]);
i++;
}
return (mss);
}

int main(void)
{
int tab[] = {6 ,2 ,3};
int lenght;

lenght = 3;

printf("%d", *ft_map(tab, lenght, f));
return (0);
}
Desdev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ map Filipa Помощь студентам 1 13.01.2011 12:07
Map Chartvit Общие вопросы C/C++ 1 01.12.2009 19:22
map Vladimir_D Общие вопросы C/C++ 1 17.10.2009 13:37
STL Map Olya90 Помощь студентам 10 01.10.2009 17:15