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

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

Войти
Регистрация
Восстановить пароль
 
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
#1

Обьединение в С. - C++

31.10.2009, 19:10. Просмотров 685. Ответов 8
Метки нет (Все метки)

Данные о продукции, выпускаемой машиностроительным предприятием, оформлены в виде массива объединений. написать программу ,которая вводит данные в память машины в диалоге, выводит данные виде таблицы и выполняет указанное задание
Без использования указателей на объедение
Вот такие поля там
№ Наименование Масса Номер по каталогу Цена Дата выпуска
Задание
Отсортировать данные о единицах выпускаемой продукции дате выпуска в порядке не убыванияю.
Программисты пожалуйста помогите я не могу сделать
Дата выпуска имеет такой формат 12.06.1990
Лабораторная работа по обьеденением я ее уже 2 недели думаю как делать и не получается даже придумать ничего как по дате сортировать помогите пожалуйста заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2009, 19:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обьединение в С. (C++):

Обьединение в с++ - C++
Задание: Определить объединение из 2-х полей. Первое поле -массив из двух байт второе - слово. Ввести целое х в диапазоне 1-1000....

Обьединение двух строк LPCTSTR - C++
LPCTSTR ss1 =L".bmp"; LPCTSTR a3 = L"99"; HANDLE hImage = LoadImage(NULL,L"a3"L"ss1", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); ...

Обьединение двух массивов в одном - C++
#include <iostream> #include <cstdio> #include <time.h> using namespace std; void main(){ srand(time(NULL)); int a; ...

Использовать обьединение одинаковых элементов в один используя STL - C++
мне в функции reduse нужно отсортировать и обьеденить одинаковы элементы, сортировка работает а обьединение нет. #include <iostream> ...

Обьединение двух массивов в третий (с чередованием их елементов). Как сделать задачу? - C++
Дано 2 одинаковых по длине одномерных массива.Нужно обьединить их в 3ий, чередуя елементы 1го и 2го массивов. --- То есть, если у...

Обьединение таблиц - MS Access
Доброго времени суток! Ранее я писала на форуме о том, что мне необходимо объединить две БД с одинаковыми структурами таблиц но разными...

8
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,775
01.11.2009, 01:30 #2
Вот
так
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define STR_LEN 255
#define MAX_PRODUCTS 100
 
typedef struct {
    int day;
    int month;
    int year;
} Date_t;
 
typedef struct {
    int cat_id; /* номер по каталогу */
    char name[STR_LEN]; /* наименование */
    double weight; /* масса */
    double price; /* цена */
    Date_t date; /* дата выпуска */
} Product_t;
 
/* сравнение дат выпуска по возрастанию */
int cmpByDateAsc ( const void *first, const void *second ) {
    Date_t a = (*(Product_t *)first).date;
    Date_t b = (*(Product_t *)second).date;
    if ( a.year == b.year ) {
        if ( a.month == b.month ){
            return (a.day - b.day);
        }
        else {
            return (a.month - b.month);
        }
    }
    else {
        return (a.year - b.year);
    }
}
 
/* сравнение дат выпуска по убыванию */
int cmpByDateDesc ( const void *first, const void *second ) {
    return cmpByDateAsc(second, first);
}
 
/* вывод содержимого структуры Product_t */
void prnProduct(Product_t p){
    printf("Catalog id:\t\t%d\n", p.cat_id);
    printf("Name:\t\t\t%s\n", p.name);
    printf("Weight:\t\t\t%.3f\n", p.weight);
    printf("Price:\t\t\t%.2f\n", p.price);
    printf("Manufactured date:\t%02d.%02d.%4d\n", p.date.day, p.date.month, p.date.year);
}
 
/* ввод значений структуры Product_t с незатейливой проверкой данных */
Product_t getProduct(void){
    Product_t p;
    char *correct = "yes";
    char buf[STR_LEN];
    int good_date = 0;
    do {
        printf("Catalog id: ");
        fgets(buf, STR_LEN, stdin);
        p.cat_id = atoi(buf);
        printf("Name: ");
        fgets(buf, STR_LEN, stdin); /* на случай, если название из двух+ слов */
        buf[strlen(buf) - 1] = '\0'; /* удалить \n */
        strcpy(p.name, buf);
        printf("Weight: ");
        fgets(buf, STR_LEN, stdin);
        p.weight = atof(buf);
        printf("Price: ");
        fgets(buf, STR_LEN, stdin);
        p.price = atof(buf);
        do {
            printf("Date (dd.mm.yyyy): ");
            fgets(buf, STR_LEN, stdin);
            if ( sscanf(buf, "%d.%d.%d", &p.date.day, &p.date.month, &p.date.year) == 3 )
                good_date = ( p.date.day >= 1 && p.date.day <= 31 && p.date.month >= 1 &&
                            p.date.month <= 12 && p.date.year >= 1970 && p.date.year <= 2029 );
            else
                good_date = 0;
        } while ( !good_date );
        printf("\nConfirm values:\n");
        prnProduct(p);
        printf("It is correct? (yes/no): ");
        fgets(buf, STR_LEN, stdin);
        buf[strlen(buf) - 1] = 0;
    } while ( strcmp(buf, correct) );
    return p;
}
        
int main ( void ) {
    Product_t products[MAX_PRODUCTS];
    int i, count;
    char buf[STR_LEN];
    
    count = 0;
    while ( count < MAX_PRODUCTS ) {
        printf("\nProducts left: %d\nEnter a new one:\n", MAX_PRODUCTS - count);
        products[count] = getProduct();
        count++;
        printf("Continue? (yes/no): ");
        fgets(buf, STR_LEN, stdin);
        if ( strcmp(buf, "yes\n") != 0 )
            break;
    }
    
    if ( !count ){
        printf("No products entered!\n");
        exit(1);
    }
    
    printf("Unsorted:\n");
    printf(" #\tCat_id\tWeight\tPrice\tName\tManufactured date\n");
    for ( i = 0; i < count; i++ )
        printf("%3d\t%6d\t%6.3f\t%3.2f\t%s\t%02d.%02d.%4d\n", i, products[i].cat_id, products[i].weight, 
            products[i].price, products[i].name, products[i].date.day, products[i].date.month, products[i].date.year);
    
    qsort(products, count, sizeof(Product_t), cmpByDateAsc);
    printf("By date ascendant:\n");
    printf(" #\tCat_id\tWeight\tPrice\tName\tManufactured date\n");
    for ( i = 0; i < count; i++ )
        printf("%3d\t%6d\t%6.3f\t%3.2f\t%s\t%02d.%02d.%4d\n", i, products[i].cat_id, products[i].weight, 
            products[i].price, products[i].name, products[i].date.day, products[i].date.month, products[i].date.year);
    
    qsort(products, count, sizeof(Product_t), cmpByDateDesc);
    printf("By date descendant:\n");
    printf(" #\tCat_id\tWeight\tPrice\tName\tManufactured date\n");
    for ( i = 0; i < count; i++ )
        printf("%3d\t%6d\t%6.3f\t%3.2f\t%s\t%02d.%02d.%4d\n", i, products[i].cat_id, products[i].weight, 
            products[i].price, products[i].name, products[i].date.day, products[i].date.month, products[i].date.year);
    
    return 0;
}
как-то... К русскому языку сами приучайте
1
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
01.11.2009, 02:16  [ТС] #3
мне не через структурку надо а чеез об'едененіе надо
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,775
01.11.2009, 13:13 #4
Цитата Сообщение от sergeu90 Посмотреть сообщение
мне не через структурку надо а чеез об'едененіе надо
Объединение (union) - это структура, в которой все её элементы используют один и тот же участок памяти. Для данного случая неприменимо.
1
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
01.11.2009, 13:40  [ТС] #5
ну ведь у меня лаба такая надо не через структуру а через объеденение учитель просто скажет что это не через объеденение
0
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,775
01.11.2009, 15:03 #6
Цитата Сообщение от sergeu90 Посмотреть сообщение
ну ведь у меня лаба такая надо не через структуру а через объеденение учитель просто скажет что это не через объеденение
Я думаю - это ошибка в терминологии. Вот Вам пример
объединения
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(){
    int i;
    union {
        int ival;
        char cval[4];
    } un;
    
    un.ival = 0x4b435546;
    for ( i = 0; i < 4; i++ )
        putchar(un.cval[i]);
    putchar('\n');
    
    return 0;
}
... В любом случае, за неимением других вариантов покажите этот - вдруг прокатит? В конце-концов програмка-то работает...

Не по теме:

В одном довольно известном московском издательстве зав. производством и худ. редактор градиентную заливку "растяжкой" называют. За 10+ лет, что я их знаю, так и не удалось объяснить, где растяжки бывают

0
sergeu90
27 / 28 / 3
Регистрация: 17.10.2009
Сообщений: 739
01.11.2009, 15:37  [ТС] #7
не у нас препод сам работате на заводе начальник по отведелу АСУ он в этом смысле жесток нужно написать используя обьеденения помоги плиззз

Добавлено через 25 минут
помогите написать задачу используя объеденения пожалуйста не прибегая к указателям,заранее спасибо всем кто попытается спасти меня
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
02.11.2009, 10:42 #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    union item {
    
        struct {
            int a, b, c;
        } kind1;
 
        struct {
            float a, b, c;
        } kind2;
             
        struct {
            char a;
            double b;
            int c, d;
        } kind3;
    
    } u[10];
Добавлено через 5 минут
№ Наименование Масса Номер по каталогу Цена Дата выпуска
это, по ходу, описать отдельно и как подструктуру вставить в каждую структуру
0
Evg
Эксперт CАвтор FAQ
17934 / 6160 / 408
Регистрация: 30.03.2009
Сообщений: 16,912
Записей в блоге: 27
02.11.2009, 11:04 #9
Чистый union сам по себе бесполезен. Всегда нужна какая-то дополнительная информация, чтобы знать, к какому из элементов union'а надо обращаться
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2009, 11:04
Привет! Вот еще темы с ответами:

Обьединение таблиц - C++ Builder БД
В IBExpert у меня создано 6 таблиц. В билдере эти 6 таблиц создавать геморойно и не красиво, хотелось бы узнать, как можно обьеденить 2...

Обьединение 2 запросов - SQL Server
Мне надо обьединить 2 Select запроса так чтобы выводились только значения больше 5 и меньше 9. Union не помог. declare @1 float ...

Обьединение программ - Turbo Pascal
Есть основная прога(архив паскаль) и 2 программы с массивом и вектором нужно 2 программы встроить в основную в пункт экзамен. Внутри...

Обьединение таблиц - MS Excel
Помогите пожалуйста, по работе нужно очень срочно, иначе будут проблемы( Нужно по одному столбцу обьединить 2 таблицы в 1


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
02.11.2009, 11:04
Ответ Создать тему
Опции темы

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