Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 18.01.2020
Сообщений: 13

Написать функцию, которая принимает массив 32-ых битных целых чисел и возвращает 16-ые битные целые числа

18.01.2020, 21:57. Показов 4788. Ответов 25

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Знаю, тема возможно избитая и есть на форуме.
У меня в условиях задачи дан массив (32 битных чисел) arrsp(unsigned* a, int len) {0,5,65541}, функция должна вернуть массив с 16 битными числами.
Все бы ничего , преобразовать к типу short просто , но есть уже ответ в задаче {0, 0, 5, 0, 5, 1}. Помогите разобраться , что откуда получается . При преобразовании к short -у выходит {0, 5, 5} Ход мыслей :
C
1
2
3
4
5
6
7
8
9
10
unsigned short arrsp(unsigned a)
{
    return a;
}
 
int main()
{
    printf("%d",arrsp(65541)); 
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2020, 21:57
Ответы с готовыми решениями:

Написать функцию,которая принимает массив целых чисел
ющий: 104 561 223 451 234 222 234 565 673 456 Добавлено через 17 минут #include <iostream> #include <stdlib.h> #include...

Написать функцию,которая принимает массив целых чисел
Написать функцию,которая принимает массив целых чисел расположенныъ в динамической памяти(массив заполнен числами от(10,10000)),и создает...

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

25
0 / 0 / 0
Регистрация: 18.01.2020
Сообщений: 13
19.01.2020, 00:02  [ТС]
Студворк — интернет-сервис помощи студентам
Да я новичок то, что с меня взять...
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
19.01.2020, 00:06
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Огромное спасибо за ваш код, за разъяснение - да за всё!!!!!
На здоровье. С интересующимся человеком приятно поговорить и не жалко потратить немного своего времени. В отличие от всяких халявщиков, которым "надосдатьатоотчислют".

Вот вариант без копирования:
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>
#include <stdint.h>
 
void arrout16(uint32_t* src, unsigned count)
{
  uint16_t* temp = (uint16_t*)src;
  unsigned size = count * sizeof(uint32_t); 
  count = size / sizeof(uint16_t);
  while (count--) printf(" %d", *temp++);
  printf(" \n");  
}
 
int main()
{
  uint32_t src[] = {0, 5, 65541};
  uint32_t count = sizeof(src) / sizeof(src[0]);
  printf(" size: %lu bytes\n", sizeof(src));
  
  for (int idx = 0; idx != count; idx++) printf(" %d", src[idx]);
  printf(" \n");
 
  arrout16(src, count);
  return 0;
}
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Я стану ПРОФИ!!!!!!!!!!!
3
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
19.01.2020, 00:39
Verevkin, Второй ваш код даже по круче первого будет - реальное пособие по работе с указателями и памятью. Просто - нет слов , одни эмоции.

указателю на uint16_t* temp присвоить адрес массива с типом uint32_t. А дальше в цикле пройтись (по сути по старому) массиву и вывести разыменнованные значения. Я бы до такого точно не догадался бы.
Еще раз спасибо
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
19.01.2020, 00:51
Цитата Сообщение от Recrut_rf Посмотреть сообщение
Я бы до такого точно не догадался бы.
Достаточно прошарить, как работает память и указатели. После этого от программирования начинаешь получать удовольствие. Почему я болтаюсь на этом форуме и решаю простенькие задачки? Вот поэтому!
Особенно это помогает расслабиться после рабочей смены, в течение которой не вылезаешь из отладчика, создавая очередную прогу управления какой-нибудь военной вундервафли. Причом, например, на delphi.
1
0 / 0 / 0
Регистрация: 18.01.2020
Сообщений: 13
19.01.2020, 01:06  [ТС]
Вы погодите сразу кидаться помидорами, я все таки молод и глуп , но я добился решения таким способом...
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
#include <stdio.h>
 
//[0, 1, 2, 3, 4, 65541, 65542, 65543, 65544, 65545
// [0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1]
unsigned int arr[]={0, 1, 2, 3, 4, 65541, 65542, 65543, 65544, 65545};
unsigned int New_arr[]={};
void asShortPrint(unsigned *a)
{
    unsigned short p;
    int j=0;
    int i=0;
    while(j<20)
    {
        p=*(a+i);
        New_arr[j]=p;
        j++;
        p=*(a+i)>>16;
        New_arr[j]=p;
        j++;
        i++;
    }
    
}
 
 
int main()
{  
    int i;
    for(i=0;i<10;i++)
      printf("%d ",arr[i]);
    printf("\n%s\n","New_arr: ");
    i=0;
    asShortPrint(arr);
    for(i=0;i<20;i++)
      printf("%d ",New_arr[i]);
 
    return 0;
}
Миниатюры
Написать функцию, которая принимает массив 32-ых битных целых чисел  и возвращает 16-ые битные целые числа  
0
0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 1
13.12.2020, 10:55
Мой вариант значительно проще, мне кажется:

C
1
2
3
4
5
6
7
    unsigned int a=65541;
    unsigned short int b=0;
    unsigned short int b1=0;
    printf("%d, %d, %d",a,b,b1);
    b^=a;
    b1=a>>16;
    printf("%d, %d, %d",a,b,b1);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2020, 10:55

Напишите функцию, которая принимает два целых числа n и k и возвращает число, содержащее k первых цифр числа n
Помогите решить задание. Вот условие: Напишите функцию, которая принимает два целых числа n и k и возвращает число, содержащее k первых...

Напишите функцию, которая принимает два целых числа n и k и возвращает число, содержащее k первых цифр числа n.
Напишите функцию, которая принимает два целых числа n и k и возвращает число, содержащее k первых цифр числа n. Пример: Введите...

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

Написать функцию, которая принимает два числа и возвращает
Решите пожалуйста!!!!!!!!!!! 4 ) число, которое получается, если к первому числу приписать справа второе (например, ...

Написать функцию, которая принимает два числа и возвращает
Режить все !!!Буду благодарин!!Заранее спасибо!!


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru