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

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

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


http://www.cyberforum.ru/cpp-beginners/thread449113.html
0
Миниатюры
Применение указателей, структур и объединений  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2009, 01:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Применение указателей, структур и объединений (C++):

Программирование с использованием перечислений, структур, объединений и полей бит
Необходимо разработать программу, в которой выполняется ввод списка записей...

Объявить объединение из двух структур и структуру из двух объединений
Объявить объединение из двух структур и структуру из двух объединений....

Применение указателей
Доброй ночи. Встретил вот такое выражение в книге и не могу понять что к чему:...

Применение и удаление указателей
Здравствуйте. Я не могу понять сути,когда нам нужно удалить указатель для...

Применение структур в прикладном программировании
расскажите мне про структуры и их применение в прикладном программировании,...

19
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
19.10.2009, 02:54 #2
тут таблица неполная

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

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

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

должно получится что вроде сруктуры, в которой юнион, в котором несколько структур...
0
Search..
Заказ софта
340 / 185 / 21
Регистрация: 26.05.2009
Сообщений: 863
19.10.2009, 04:28 #4
Цитата Сообщение от Girl-On Посмотреть сообщение
Помогите разобраться студентке!!
Ну и что, что ты студентКА ? Почему 99% девушек пытаются подчеркнуть то, что они девушки ?
Могу написать программу в обмен на пламенный поцелую...
------------------------------------------------------------------------------------------------
P.S. Программа на столько легка, что я в шоке. На каком ты курсе ?
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
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;
};
1
Girl-On
0 / 0 / 1
Регистрация: 25.05.2009
Сообщений: 12
19.10.2009, 22:20  [ТС] #6
(* ^)3(*^^*)
вау, пасибки, accept

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

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

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

Не по теме:

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

0
Girl-On
0 / 0 / 1
Регистрация: 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 минуты
Изрыла весь "Гугл" и "Яндекс" ничего понятного не нашла. Есть куча книг по этим темам, но, НЕ ПОНЯТНО !!
Жду вашей помощи
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
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;
    /* ... */
};
0
Girl-On
0 / 0 / 1
Регистрация: 25.05.2009
Сообщений: 12
21.10.2009, 03:43  [ТС] #13
спс,
а как преобразовать программно??
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
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 минуты
с вики, если происходит перенос из одного полубайта в другой, то там переносится число шестнадцать, и, так как система подразумевает только десять, число шесть надо оставить в полубайте, поэтому нужно к нему прибавить шесть после всей операции (это для каждого такого полубайта)
0
Girl-On
0 / 0 / 1
Регистрация: 25.05.2009
Сообщений: 12
21.10.2009, 03:54  [ТС] #15
что-то вроде запрещенного кода??

Добавлено через 1 минуту
а для произведения же надо функцию написать,
т.е. передавать в нее уже преобразованные числа??
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
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 секунд
они маленькие - можно без указателей
0
Girl-On
0 / 0 / 1
Регистрация: 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);
  
  //Как для указателей выводить адрес и значение указателя, 
  //а также содержимое области памяти, на которую указывает указатель
  
}
помогите исправить, очень прошу
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
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;
  }
чтобы результат помещался

по ходу надо реализовать что-то вроде умножения в столбик, если функцию сложения не писать внутри
0
Nike775
3 / 2 / 1
Регистрация: 01.04.2010
Сообщений: 30
03.04.2010, 12:01 #19
обьясние мне как составлять из структур деревья
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
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 - левый сын левого сына корня
0
04.04.2010, 06:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2010, 06:29
Привет! Вот еще темы с решениями:

Разбор указателей и структур - каковы их суть и назначение
Доброго времени суток форумчане. В университете мы изучаем C++ по учебнику...

Связка массива структур с классом без применения указателей
У меня такая задача по учебе: Написать программу с использованием...

Сортировка массива структур через сортировку массива указателей
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто...

Алгоритмы и программы по использованию указателей и динамических структур данных
Здравствуйте! Прошу Вас помочь мне в написании задачи на С++. Вот текст: Дан...


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

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

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