Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Neuroart
0 / 0 / 1
Регистрация: 05.11.2015
Сообщений: 9
1

Задание: напишите функцию, которая обнуляет массив

05.11.2015, 15:28. Просмотров 1030. Ответов 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>
const int N = 5;
int zerMas ( int *a, const int *N )
{
int i;
    for (i=0; i < N; i++)
        a[i] = 0;
}
main()
{ 
int a[N];
int i;
for(i=0; i<N; i++)  
    {
    printf("a[%d] = ", i);
    scanf("%d", &a[i]);
    }
         zerMas (a, &N);
    for(i=0;i<N;i++)  
    {
    printf("%d \n", a[i]);
    }
return 0;
}
Не работает. Подскажите, пожалуйста, что я сделал не так.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2015, 15:28
Ответы с готовыми решениями:

Напишите функцию, которая печатает числа в следующем виде
3) Напишите функцию, которая печатает числа в следующем виде 1 33 555 7777...

Напишите функцию, которая возвращает наименьшее из трех чисел с плавающей точкой
Всем привет, не могу найти ошибку, помогите пожалуйста. #include &lt;stdio.h&gt;...

Напишите функцию, которая определяет, является ли заданное натуральное число точным квадратом
Напишите функцию, которая определяет, является ли заданное натуральное число...

Напишите функцию внутр najdlhsie_opakovanie, которая возвращает длину самого длинного сегмента
Напишите функцию внутр najdlhsie_opakovanie (char str ), которая возвращает...

Написать функцию, которая упорядочивает массив целых чисел или по возрастанию или по убыванию. Использовать эту функцию
Написать функцию, которая упорядочивает массив целых чисел или по возрастанию...

4
Epicus
15 / 15 / 11
Регистрация: 25.04.2014
Сообщений: 39
05.11.2015, 15:33 2
Лучший ответ Сообщение было отмечено Neuroart как решение

Решение

В функции второй аргумент - указатель на целое число, то есть его адрес в памяти. В итоге, когда вы пишите:
for (i=0; i < N; i++)
цикл на самом деле проходит не N итераций, а гораздо больше, потому что используется адрес, а не значение. В результате вы выходите за границы массива и программа падает.

Нужно или сделать аргументом функции значение числа, а не его адрес, или в функции вместо N писать *N, чтобы получить значение числа, хранящегося по адресу.
1
Neuroart
0 / 0 / 1
Регистрация: 05.11.2015
Сообщений: 9
05.11.2015, 15:59  [ТС] 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
#include <stdio.h>
const int N = 5;
int zerMas ( int *a, const int *N )
{
int i;
    for (i=0; i < *N; i++)
        a[i] = 0;
}
main()
{ 
int a[N];
int i;
for(i=0; i<N; i++)  
    {
    printf("a[%d] = ", i);
    scanf("%d", &a[i]);
    }
         zerMas (a, &N);
    for(i=0;i<N;i++)  
    {
    printf("%d \n", a[i]);
    }
return 0;
}
так работает
0
zer0mail
2452 / 2089 / 216
Регистрация: 03.07.2012
Сообщений: 7,571
Записей в блоге: 1
05.11.2015, 16:03 4
Только неясно, зачем лишний раз писать & * ...
0
Neuroart
0 / 0 / 1
Регистрация: 05.11.2015
Сообщений: 9
05.11.2015, 16:30  [ТС] 5
Вы имеете ввиду
scanf("%d", a[i]);
так?
0
05.11.2015, 16:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2015, 16:30

Указатель на функцию, которая возвращает массив
Данная программа делает следующее: 1) просит ввести пользователя целое число в...

Написать функцию, которая преобразует одномерный массив
Написать функцию, которая преобразует одномерный массив,содержащий однозначные...

Написать функцию,которая принимает массив целых чисел
Написать функцию,которая принимает массив целых чисел расположенныъ в...


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

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

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