Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
15 / 15 / 7
Регистрация: 08.04.2012
Сообщений: 133

Возвращение массива из функции

16.04.2013, 00:38. Показов 11846. Ответов 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
void arr_input(int *arr, int n,int a, int b) {
    for (int i = 0; i < n; i++)
            arr[i]=a+rand()%(b-a);
}  
void arr_output (int *arr, int n) {
    for (int i = 0; i < n; i++)
        printf(" %d ",arr[i]);
}
int arr_count (int *arr, int n) {
    int count_ch = 0;
    for (int i = 0; i < n; i++) {
        int count = 1;
        
        while (count != 0) {
            int ch = arr[i]%10;
            if (ch<0) 
                ch *= -1;
            if (ch == 4) 
                count_ch++;
            count --;
        }
    } 
    return count_ch;
}
void arr_ent (int *arr, int *brr, int n) {
    int j=0;
    for (int i = 0; i < n; i++) {
        int count = 1;
        while (count != 0) {
            int ch = arr[i]%10;
            if (ch<0) 
                ch *= -1;
            if (ch == 4) {
                brr[j]=arr[i];
                j++;
            }
            count --;
        }
    }
    arr_output (brr, j);
}
 
int main() {    
    int *arr, *array, n, min, max, count,res,count_ch;   
    
    printf("Введите n:\n ");
    scanf("%d",&n);//ввод размерности    
    printf("Введите левую границу промежутка:\n ");
    scanf("%d",&min);//ввод границы начала
    printf("Введите правую границу промежутка:\n ");
    scanf("%d",&max);//ввод границы конца
    system("cls");
 
    srand(time(NULL));
    arr = (int *)malloc(n*sizeof(int));
    arr_input(arr,n,min,max);
    
    printf("Исходный массив: \n");
    arr_output(arr,n);
    
    count = arr_count(arr,n);
    
    if (count == 0) {
        printf("\n\nВыходящий массив пуст.");
    } 
    else {
        array=(int *)malloc(sizeof(count));
        printf("\n\nВыходящий массив:\n");
        
        arr_ent(arr,array,n);      
       
    }
    free(arr);  
    free(array);
    getch();
    return 0;
}


В конце почему-то выпадает ошибка никак не могу понять почему, собственно после выполнения arr_ent, причём данные выводятся, но программа вылетает.

Если что задача звучит так:
Задача
Заполнить массив случайными целыми числами из промежутка заданного пользователем, в другой массив занести все числа запись которых оканчивается на 4
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2013, 00:38
Ответы с готовыми решениями:

Возвращение массива в функции с переменным количеством параметров
задание Пoследoвaтeльнocть вещeствeнныx пoлoжитeльныx пеpeмeнных, ограничeннaя пeремeннoй co знaчeниeм -1. Функция вoзврaщaeт...

Возвращение матрицы из функции
Всем привет, возникло такое недопонимание, надо написать программу в которой складываются 2 матрицы, сложение происходит в отдельной ф-ии,...

Возвращение указателя из функции
Здравствуйте! Есть функция: char* dectobin(unsigned dec) { static char arr; int v = 128, i; for(i = 1; i &lt;= 8; i++) ...

3
 Аватар для kotleta
44 / 44 / 17
Регистрация: 13.09.2012
Сообщений: 196
16.04.2013, 06:57
danke_yeah
Массив, как объект, в языке Си вернуть нельзя. (хотя другие языки, типа JavaScript это позволяют)
Вы можете вернуть указатель на массив, или засунуть массив в структуру, и возвращать объект структуры..
0
15 / 15 / 7
Регистрация: 08.04.2012
Сообщений: 133
16.04.2013, 07:20  [ТС]
Цитата Сообщение от kotleta Посмотреть сообщение
danke_yeah
Массив, как объект, в языке Си вернуть нельзя. (хотя другие языки, типа JavaScript это позволяют)
Вы можете вернуть указатель на массив, или засунуть массив в структуру, и возвращать объект структуры..
Вроде понял, но не совсем дохожу как это примерно описать

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int arr_ent (int *arr, int *brr, int n) {
    int j=0;
    for (int i = 0; i < n; i++) {
        int count = 1;
        while (count != 0) {
            int ch = arr[i]%10;
            if (ch<0) 
                ch *= -1;
            if (ch == 4) {
                brr[j]=arr[i];
                j++;
            }
            count --;
        }
    }
return *brr;
 
}
так-что-ли
0
 Аватар для kotleta
44 / 44 / 17
Регистрация: 13.09.2012
Сообщений: 196
16.04.2013, 07:49
вот так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int* arr_ent (int *arr, int *brr, int n) {
    int j=0;
    for (int i = 0; i < n; i++) {
        int count = 1;
        while (count != 0) {
            int ch = arr[i]%10;
            if (ch<0) 
                ch *= -1;
            if (ch == 4) {
                brr[j]=arr[i];
                j++;
            }
            count --;
        }
    }
return brr;
 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.04.2013, 07:49
Помогаю со студенческими работами здесь

Возвращение строки из функции
#include &lt;cstdio&gt; #include &lt;string.h&gt; void bin(char * r, unsigned int n) { for (int i = 128; i &gt; 0; i &gt;&gt;= 1) strcat(r, ((n &amp;...

Возвращение переменной из функции
Объявляю функцию типа char, объявляю в ней переменную s2 тоже типа char, но возвращать эту переменную функция отказывается, выдает еррор...

Возвращение массива указателей
Доброго времени суток. Что сделано не правильно? char **test(void){ char **t; int n = 2; t = malloc(sizeof(char) * n * 30); ...

Возвращение нескольких значений массива
Есть готовая программа, но есть одна недоработка в конце программы, она показывает только один столбец с максимальным количество нечетных...

Возвращение значений массива, после рекурсионного вызова
int a = {1,2,3,4,5}; int Fun (int a){ for (int j=0; j&lt;5; j++) a++; for (int i=0; i&lt;5; i++){ if (a%2==0) Fun(a);...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru