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

Масив произвольной длинны

03.02.2020, 18:28. Показов 643. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция, аналог range в других языках, только для заполнения массива.

Lisp
1
2
3
(range 10 30 2)
 
'(10 12 14 16 18 20 22 24 26 28)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void fill(int* mas, int num, int from) {
int len = (sizeof mas);
int j = from;    
for(int k = 0; k<len; k++) {
j+=num;
mas[k] = j; 
}
return;    
}
 
int main() {
 
int mas[7];
 
fill(mas, 1, 10);    
 
for(int k = 0; k<7; k++)
printf("%d ", mas[k]);
 
return 0;
}
Соответственно
C
1
fill(mas, 1, 0)
вернет массив со следующими значениями.- 1 2 3 4 5 6 7.
mas - передаваемый массив, первое число - шаг, втрое - начальное значение.

[CLANG]fill(mas, 2, 10)[/CLANG ] - 12 14 16 18 20 22 24.

Собственно вопрос: чтобы добавить еще четвертый аргумент в функцию - для определения конечного значения, как выше в примере кода на Лисп - нужен массив произвольной длинны. Как бы это лучше сделать. Где функция
C
1
 fill(mas, 2, 10, 30)
- заполнит массив цифрами от 10 до 30 с шагом 2. Как бы это лучше сделать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2020, 18:28
Ответы с готовыми решениями:

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

Создание битовых массивов произвольной длинны
Всем привет!Нужна помощь! Мне необходимо в Delphi создать и записать в файл последовательность бит произвольной длинны.(например создать...

QML TextFiled inputMask, как задать маску произвольной длинны заданного шаблона?
TextField { id: input anchors.fill: parent anchors.margins: 5 focus: true inputMask: &quot;HH...

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,733
Записей в блоге: 14
03.02.2020, 19:22
Возвращает заполненный массив:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
 
int * range(int beg,int end,int step)
{
    int sz=(end-beg)/step+1;
    int *r = (int *) calloc(sz,sizeof(int));
    int i,k=beg;
    for (i=0; i<sz; i++,k+=step) r[i]=k; 
    return r;
}
 
int main(void) {
    int *m;
    int i,beg,end,step;
    scanf("%d",&beg);
    scanf("%d",&end);
    scanf("%d",&step);
    m=range(beg,end,step);
    for (i=0;i<(end-beg)/step+1; i++) printf("%d ",m[i]);
    free(m);
    return 0;
}
1
Заблокирован
03.02.2020, 21:23  [ТС]
Catstail, то что надо.

Интересно, почему (sizeof m) видит только 8 элементов, а не 11.


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
int * range(int beg,int end,int step)
{
    int sz=(end-beg)/step+1;
    int *r = (int *) calloc(sz,sizeof(int));
    int i,k=beg;
    for (i=0; i<sz; i++,k+=step) r[i]=k; 
    return r;
}
 
int main(void) {
    int *m;
    m=range(20,40,2);
    int len = sizeof(m);
    for (int i=0; i<len; i++) printf("%d ",m[i]);
    free(m);
    return 0;
}
 
20 22 24 26 28 30 32 34
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
03.02.2020, 23:30
Цитата Сообщение от sodda Посмотреть сообщение
Интересно, почему (sizeof m) видит только 8 элементов, а не 11.
Потому, что m - это указатель, а размер указателя в 64-битной системе действительно равен 8 байтам независимо от того, на что он указывает.
2
Заблокирован
04.02.2020, 00:15  [ТС]
Цитата Сообщение от easybudda Посмотреть сообщение
Потому, что m - это указатель
Я, признаться, это сразу понял, но ждал конкретного решения
Я уже не помню ничего.

Добавлено через 21 секунду
Цитата Сообщение от easybudda Посмотреть сообщение
Потому, что m - это указатель
Я, признаться, это сразу понял, но ждал конкретного решения
Я уже не помню ничего.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2020, 00:15
Помогаю со студенческими работами здесь

Дано одновимірний масив, розміром 10 елементів. Заповнити масив значеннями з клавіатури та виведіть масив на екран в прямому та зворотньому порядку.
1.Дано одновимірний масив, розміром 10 елементів. Заповнити масив значеннями з клавіатури та виведіть масив на екран в прямому та...

получит обратни масив исходного масива так, что сохранить и исходноги масив
здравствуите есть масив, хочу сделеть обратни /reverse/ масив из етого масива, но так, что сохранить и первични масив. сделаю так ...

Динамический масив: записать в масив все делители числа n
Нужно записать в масив все делители числа n програма запускается но видает ошибку доступа к памяти... помогите разобраться #include...

З клавіатури ввести масив дійсних чисел.Округлити кожне число до ближчого цілого і записати в новий масив
З клавіатури ввести масив дійсних чисел.Округлити кожне число до ближчого цілого і записати в новий. Надрукувати створений масиі і...

Дано масив из 6 байт. Рассматривая его, как масив с 48 бит, посчитать число 2х единиц, что расположены между нулями.
Ребят, помогите пожалуйста! не получается... Дано массив из 6 байт. Рассматривая его, как массив с 48 бит, посчитать число 2х единиц,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru