Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
#1

применение указателей, структур и объединений - C++

19.10.2009, 01:53. Просмотров 1374. Ответов 19
Метки нет (Все метки)

Здравствуйте, люди добрые!!
(^_^)/

Очень нуждаюсь в вашей помощи...
Помогите разобраться студентке!!
(Y_Y)(^o^)/

Задание примерно следующее:
Составить программу на языке Си, в которой согласно таблице

выполнить:
1. объявить тип данных для хранения информации о заданном объекте;
2. описать, с помощью объявленного типа, заданные переменные и присвоить им заданные значения;
3. объявить тип данных для хранения целых чисел в двоично-десятичном формате;
4. описать, с помощью объявленного типа, переменные с заданными именами и указатели на них;
5. описать указатель на заданный указатель;
6. написать функцию, выполняющую заданные действия над двоично-десятичными числами;
7. объявить указатель на функцию;
8. задать начальные значения переменных с использованием:
1) имени переменной,
2) указателя на нее,
3) указателя на указатель;
9. выполнить заданные действия:
1) с использованием вызова функций,
2) с использованием указателя на функцию.

Результаты выполнение п.п.1-2 и 8-9 вывести на экран в виде таблицы. Для структур вывести адреса и значения каждого поля. Для указателей выводить адрес и значение указателя, а также содержимое области памяти, на которую указывает указатель.


Подскажите, пожалуйста, с чего следует начинать??
Миниатюры
применение указателей, структур и объединений  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2009, 01:53     применение указателей, структур и объединений
Посмотрите здесь:

Применение структур в прикладном программировании C++
Вопрос о разумном использовании структур\перечислений\объединений C++
Написать программу удаления заданного числового значения из массива объединений C++
C++ Применение указателей
C++ Объясните что такое массив объединений и с чем его едят
Применение и удаление указателей C++
Объявить объединение из двух структур и структуру из двух объединений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.10.2009, 02:54     применение указателей, структур и объединений #2
тут таблица неполная

5. описать указатель на заданный указатель;
какой именно ?

во втором пункте должны быть какие-то значения, которых нет
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
19.10.2009, 03:09  [ТС]     применение указателей, структур и объединений #3
указатели на указатели:e, f

компьютерные комплектующие с параметрами:дата изготовления, цена, вид (видеоплата (макс. разрешающая способность, макс. частота, объем видеопамяти), звуковая плата (разрядность, частотный диапазон, амплитуда входного сигнала), сетевая плата (скорость обмена, вид интерфейса))

должно получится что вроде сруктуры, в которой юнион, в котором несколько структур...
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
19.10.2009, 04:28     применение указателей, структур и объединений #4
Цитата Сообщение от Girl-On Посмотреть сообщение
Помогите разобраться студентке!!
Ну и что, что ты студентКА ? Почему 99% девушек пытаются подчеркнуть то, что они девушки ?
Могу написать программу в обмен на пламенный поцелую...
------------------------------------------------------------------------------------------------
P.S. Программа на столько легка, что я в шоке. На каком ты курсе ?
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
19.10.2009, 05:54     применение указателей, структур и объединений #5
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
struct video {
      int x, y;
      unsigned long frequency;
      unsigned long volume;
};
 
struct audio {
    int bits;
    unsigned long freqmin, freqmax;
    unsigned long amplitude;
};
 
struct network {
    unsigned long bitsPerSecond;
    char interface[100];
};
 
struct item {
    char date[10], cost[10];
    union {
        struct video u;
        struct audio v;
        struct network w;
    } type;
};
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
19.10.2009, 22:20  [ТС]     применение указателей, структур и объединений #6
(* ^)3(*^^*)
вау, пасибки, accept

а как написать функцию, выполняющую произведение над двоично-десятичными числами??
Rififi
2336 / 1051 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
19.10.2009, 22:37     применение указателей, структур и объединений #7
Search..,
Ну и что, что ты студентКА ? Почему 99% девушек пытаются подчеркнуть то, что они девушки ?
Природный инстинкт подманивания самцов :rotate:

как написать функцию, выполняющую произведение над двоично-десятичными числами??
воспользоваться устройством пользовательского ввода, в простонародье именуемым клавиатурой. там есть такие кнопочки, по ним надо давить пальчиками, тогда выскакивают буковки.
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
19.10.2009, 23:15  [ТС]     применение указателей, структур и объединений #8
хм, а какие именно кнопочки с буквочки нужно нажимать?? и в каком кол-ве??

Добавлено через 20 минут
а какие именно кнопочки с буквочками нажимать?? и в какой последовательности??
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.10.2009, 06:57     применение указателей, структур и объединений #9
3. объявить тип данных для хранения целых чисел в двоично-десятичном формате;
где-то должно быть определение "двоично-десятичном формате"
Search..
20.10.2009, 07:43
  #10

Не по теме:

Эх... Как говорил мой дед: "Не всегда лучше сделать, чем не сделать, но порой нужно что-то сделать, не смотря на то, что это не следовало бы делать.".

Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
21.10.2009, 02:53  [ТС]     применение указателей, структур и объединений #11
Людям все же помогать нужно, это зачтется - вам тоже кто-то обязательно поможет. А указывая людям на их незнание в чем-либо хуже становится не только им, но и себе. Унижая других самомнение, конечно, может и увеличится, но стоит ли его поднимать таким способом??

Если бы я знала, как написать программу врят ли бы просиживала свое время за экраном и читала разные унижения...

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

Добавлено через 10 минут
В двоично-десятичной СС числа образуются заменой 10-ного разряда 4-битовым представлением, т.е. можно 10 представить в виде степеней 2-ек. Запись числа в BCD как-то разделится на пол байта...

Умножаются числа в ДДК, как и в 10-ной СС, значит, главное - это написать преобразование 10-ных чисел, а потом их умножить, так??
Но как это записать на языке Си??

Добавлено через 2 минуты
3. объявить тип данных для хранения целых чисел в двоично-десятичном формате;
4. описать, с помощью объявленного типа, переменные с заданными именами и указатели на них;
5. описать указатель на заданный указатель;
это будет что-то так:
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
  struct BCD {
    unsigned int /*какое имя элемента нужно указать?*/: 10;
  } x,y,z,a,*b,*c,*d,**e,**f;[/CODE][SIZE=1][COLOR=grey][I]Добавлено через 24 минуты[/I][/COLOR][/SIZE]
Попытка полной программы:[CODE]#include<stdio.h>
#include<conio.h>
 
void print (video u, audio v, network w)  {
  printf("+---------------+---------------+---------------+----------------+\n");
  printf("|   peremenaya  |     razmer    |     adres     |    znachenie   |\n");
  printf("|---------------|---------------|---------------|----------------|\n");
  printf("|       u       |       %d       |     %x      |      %-4d      |\n",sizeof(k),&k,k);
  printf("|       v       |       %d       |     %x      |      %-4d      |\n",sizeof(l),&l,l);
  printf("|       w       |       %d       |     %x      |      %-4d      |\n",sizeof(m),&m,m);
  printf("+---------------+---------------+---------------+----------------+\n");
}
 
void product (/**/) {
  //
}
 
void main() {
  
  struct video {
    unsigned long allowing_ability;
    unsigned long frequency;
    unsigned long volume;
  };
 
  struct audio {
    int bits;
    unsigned long frequency_range;
    unsigned long amplitude;
  };
 
  struct network {
    unsigned long speed_of_exchange;
    char interface[100];
  };
 
  struct comp_compl {
    char date[10], cost[10];
    union {
        struct video u;
        struct audio v;
        struct network w;
    } type;
  };
  
  struct BCD {
    unsigned int /*какое имя элемента нужно указать?*/: 10;
  } x,y,z,a,*b,*c,*d,**e,**f;
  
  print(/*печатаем п.1-2*/);
  
  //задаем начальные значения 
  
  //с использованием имени переменной
  x=//а чему это равно??
  y=//мне стыдно, но я условие 
  z=//плохо поняла...
  a=//может можно произвольное задать??
  
  //а как можно задать значение с использованием указателя
  
  //и указателя на указатель??
  
  product(/*что точно надо умножать??*/);
  print(/*петаем п.8-9*/);
  
  //Как для указателей выводить адрес и значение указателя, 
  //а также содержимое области памяти, на которую указывает указатель
  
}
Добавлено через 2 минуты
Изрыла весь "Гугл" и "Яндекс" ничего понятного не нашла. Есть куча книг по этим темам, но, НЕ ПОНЯТНО !!
Жду вашей помощи
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.10.2009, 03:39     применение указателей, структур и объединений #12
http://ru.wikipedia.org/wiki/%D0%94%...BA%D0%BE%D0%B4

Добавлено через 7 минут
3. объявить тип данных для хранения целых чисел в двоично-десятичном формате;
четырёхзначное десятичное число
C
1
2
3
4
5
6
7
struct bcd {
    unsigned long r1 : 4;
    unsigned long r2 : 4;
    unsigned long r3 : 4;
    unsigned long r4 : 4;
    /* ... */
};
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
21.10.2009, 03:43  [ТС]     применение указателей, структур и объединений #13
спс,
а как преобразовать программно??
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.10.2009, 03:50     применение указателей, структур и объединений #14
число 1234 в десятичной системе
r1 = 4;
r2 = 3;
r3 = 2;
r4 = 1;

C
1
2
3
    struct bcd n = { 0x01, 0x02, 0x03, 0x04 };
 
    n.r1 = 0x09; /* превращает число n из 1234 в 1239 */
Добавлено через 1 минуту
6. написать функцию, выполняющую заданные действия над двоично-десятичными числами;
там стоит произведение

Добавлено через 3 минуты
с вики, если происходит перенос из одного полубайта в другой, то там переносится число шестнадцать, и, так как система подразумевает только десять, число шесть надо оставить в полубайте, поэтому нужно к нему прибавить шесть после всей операции (это для каждого такого полубайта)
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
21.10.2009, 03:54  [ТС]     применение указателей, структур и объединений #15
что-то вроде запрещенного кода??

Добавлено через 1 минуту
а для произведения же надо функцию написать,
т.е. передавать в нее уже преобразованные числа??
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.10.2009, 04:24     применение указателей, структур и объединений #16
запрещёнными там считаются все после девятки
Код
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F

1010
1011
1100
1101
1110
1111
функция принимает такую структуру (для каждого числа), она же должна получить результат и записать его так же

C
1
struct bcd Multiplicate(struct bcd a, struct bcd b);
Добавлено через 15 секунд
они маленькие - можно без указателей
Girl-On
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 12
21.10.2009, 20:00  [ТС]     применение указателей, структур и объединений #17
вот я что-то попыталась опять дописать:
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
#include<stdio.h>
#include<conio.h>
 
void print (video u, audio v, network w)  {
  printf("+---------------+---------------+---------------+----------------+\n");
  printf("|   peremenaya  |     razmer    |     adres     |    znachenie   |\n");
  printf("|---------------|---------------|---------------|----------------|\n");
  printf("|       u       |       %d       |     %x      |      %-4d      |\n",sizeof(u),&u,u);
  printf("|       v       |       %d       |     %x      |      %-4d      |\n",sizeof(v),&v,v);
  printf("|       w       |       %d       |     %x      |      %-4d      |\n",sizeof(w),&w,w);
  printf("+---------------+---------------+---------------+----------------+\n");
}
 
struct bcd multiplication (struct bcd x, struct bcd y, struct bcd z, struct bcd a) {
  pr=x*y*z*a;//не так, да??
  return pr;
}
 
void main() {
  
  struct video {
    unsigned long allowing_ability;
    unsigned long frequency;
    unsigned long volume;
  };
 
  struct audio {
    int bits;
    unsigned long frequency_range;
    unsigned long amplitude;
  };
 
  struct network {
    unsigned long speed_of_exchange;
    char interface[100];
  };
 
  struct comp_compl {
    char date[10], cost[10];
    union {
        struct video u;
        struct audio v;
        struct network w;
    } type;
  };
  
  struct bcd {
    unsigned long r1 : 4;
    unsigned long r2 : 4;
    unsigned long r3 : 4;
    unsigned long r4 : 4;
  } x,y,z,a,*b,*c,*d,**e,**f;
    
  print(u,v,w);
  
  //задаем начальные значения 
  
  //с использованием имени переменной
  struct bcd x = { 0x01, 0x02, 0x03, 0x04 };
  struct bcd y = { 0x02, 0x05, 0x01, 0x02 }; 
  struct bcd z = { 0x01, 0x01, 0x02, 0x03 };
  struct bcd a = { 0x04, 0x01, 0x05, 0x01 };
  
  //а как можно задать значение с использованием указателя
  b=&x;
  c=&y;
  d=&z;
  //и указателя на указатель??
  e=&b;
  f=&c; 
  
  pr=multiplication(x,y,z,a);
  print(b,c,d);
  
  //Как для указателей выводить адрес и значение указателя, 
  //а также содержимое области памяти, на которую указывает указатель
  
}
помогите исправить, очень прошу
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.10.2009, 05:33     применение указателей, структур и объединений #18
функция для двух чисел, остальные перемножаются ею же

C
1
2
3
4
5
6
7
8
9
10
11
12
struct bcd {
    unsigned long r1 : 4;
    unsigned long r2 : 4;
    unsigned long r3 : 4;
    unsigned long r4 : 4;
    unsigned long r5 : 4;
    unsigned long r6 : 4;
    unsigned long r7 : 4;
    unsigned long r8 : 4;
    unsigned long r9 : 4;
    unsigned long r10 : 4;
  }
чтобы результат помещался

по ходу надо реализовать что-то вроде умножения в столбик, если функцию сложения не писать внутри
Nike775
3 / 2 / 1
Регистрация: 01.04.2010
Сообщений: 30
03.04.2010, 12:01     применение указателей, структур и объединений #19
обьясние мне как составлять из структур деревья
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2010, 06:29     применение указателей, структур и объединений
Еще ссылки по теме:

C++ Программирование с использованием перечислений, структур, объединений и полей бит
C++ Создать массив объединений, содержащих поля unsigned int и float
Переписать программу ввода информации по книге с помощью объединений (Union) C++
C++ Разбор указателей и структур - каковы их суть и назначение
C++ Как сделать сортировку по дате в массивве объединений

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

Или воспользуйтесь поиском по форуму:
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.04.2010, 06:29     применение указателей, структур и объединений #20
структура может хранить указатели
указатель может быть указателем на структуру
таким образом структура может хранить указатель на такую же структуру

C
1
2
3
4
5
6
struct tnode {
    int data;
    struct tnode *left;
    struct tnode *right;
    struct tnode *middle;
};
указатель не хранит ничего, кроме адреса

C
1
2
3
4
5
    struct tnode n;
 
    n.left = &n;
    n.right = &n;
    n.middle = &n;
если обратиться к n.left->data, мы получим то же самое, что и через n.data
узел дерева замкнулся на себя

C
1
2
3
4
5
    struct tnode n, lson, rson, mson;
 
    n.left = &lson;
    n.right = &rson;
    n.middle = &mson;
n.left->data будет тем же самым, чем будет lson.data
здесь дерево имеет корень n, а lson - это левый сын этого корня

C
1
2
3
4
5
6
    struct tnode n, lson, rson, mson, llson;
 
    n.left = &lson;
    n.right = &rson;
    n.middle = &mson;
    n.left->left = &llson;
n.left->left->left.data будет тем же, чем будут llson.data и lson.left->data
n - корень, lson - левый сын корня, llson - левый сын левого сына корня
Yandex
Объявления
04.04.2010, 06:29     применение указателей, структур и объединений
Ответ Создать тему
Опции темы

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