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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать функцию чтобы случайным образом забивался массив http://www.cyberforum.ru/cpp-beginners/thread60260.html
Доброе время суток. Хочу на С++ написать функцию чтобы случайным образом забивался массив числами от 5 до 10, но что то не выходит. Подскажите что нужно изменить: #include <iostream> using...
C++ Что обозначает этот инкремент ? znaiu chto zasmeete novichka za etot vopros no chto oznachaet podobnii increment? : int x = 5; x+=x; // eto znaiu chto oznachaet : x=x+x x=+x; // <------- A VOT ETO CHTO ?!? http://www.cyberforum.ru/cpp-beginners/thread60255.html
C++ Считывание строки из файла
Что то не врублю, как считать полностью всё содержимое файла и занести его в строку. НАпример если там будет такое: ф ыы ввв а мне надо что бы в строку занеслось ф'\n'ыы'\n'ввв
C++ подмножества
Задано натуральное число n, определить и вывести на экран (по одному разу) все подмножества множества 1 .. n с заданной суммой S (числа в каждом подмножеству повторяться не могут) Народ подскажите...
C++ С++ не понимаю http://www.cyberforum.ru/cpp-beginners/thread60218.html
1. сумму элементов массива с нечетными номерами; 2. сумму элементов массива, расположенных между первым и последним отрицательными элементами; 3. Сжать массив, удалив из него все элементы,...
C++ Как можно пройти через бесконечный цикл ??? У меня случилось что-то вроде парадокса. Прогал я в Eclipse (у него компилятор MinGW, отладчик GDB), напрогал выложенную ниже программу. Компилирую ее, кладу рядом с бинарником файл test.txt с... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9677 / 5627 / 953
Регистрация: 25.07.2009
Сообщений: 10,801
01.11.2009, 01:30
Вот
так
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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru