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

Односвязный линейный список: Для трёх товаров с максимальной ценой уменьшить цену в два раза - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Рекурсия: определение количества цифр в числе http://www.cyberforum.ru/cpp-beginners/thread130715.html
Помогите написать программу! Дано длинное целое число. Определить в нём количество десятичных цифр. В программе должна быть и итеративная, и рекурсивная функции, и программа не должна иметь...
C++ Двоичный код Подскажите пожалуйста как возможно работать на С++ с двоичным кодом (b). И возможно ли это в вообще в С и нужно использовать только десятеричную систему счисления. Проблема заключается в... http://www.cyberforum.ru/cpp-beginners/thread130702.html
Вывести на экран последнее слово строки C++
Вводится строка произвольного текста. Вывести на экран последнее слово (слова разделены пробелами).
C++ структуры и файлы
Создать файл <files>, который содержит парамтры для 10 файлов текущего каталога.Параметры каждого файла являються:имя файла,атрибут,дата создания,размер файла в байтах.Данные должны вводится с...
C++ Определить сумму положительных и сумму отрицательных элементов матрицы http://www.cyberforum.ru/cpp-beginners/thread130690.html
1. Определить сумму положительных и сумму отрицательных элементов матрицы размерами N*M (N и M не больше 10). Матрицу сформировать из случайных чисел в диапазоне от –100 до 100. 2. Дана...
C++ массивы 1. В массиве X из N элементов (N не больше 30) определить максимальный элемент и его номер. Число N и значения элементов массива задаются вводом. 2. В массиве A из N элементов поменять местами... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
16.05.2010, 23:26
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct GOODS {
    char * name;
    double price;
    struct GOODS *next;
} goods_t;
 
goods_t * new_goods(const char * name, double price, goods_t * last){
    goods_t *g;
    if ( ( g = (goods_t*)malloc(sizeof(goods_t)) ) == NULL )
        return NULL;
    if ( ( g->name = strdup(name) ) == NULL ){
        free(g);
        return NULL;
    }
    g->price = price;
    g->next = NULL;
    if ( last )
        last->next = g;
    return g;
}
 
goods_t * max_price(const goods_t * g){
    double maxPrice;
    const goods_t * maxGoods;
 
    maxPrice = g->price;
    maxGoods = g;
    while ( g = g->next ){
        if ( g->price > maxPrice ){
            maxPrice = g->price;
            maxGoods = g;
        }
    }
    return (goods_t*)maxGoods;
}
 
void print_goods(const goods_t * g){
    printf("Name                Price\n----------------------------------------\n");
    while ( g ){
        printf("%-20s%-6.2f\n", g->name, g->price);
        g = g->next;
    }
    printf("----------------------------------------\n");
}
 
void delete_goods(goods_t * g){
    goods_t *t;
    while ( g ){
        t = g->next;
        free(g->name);
        free(g);
        g = t;
    }
}
 
#define NEED_DISCOUNT 3
 
int main(void){
    char buf[BUFSIZ];
    double price;
    int num;
    goods_t * gHead, * gTail, * gFound;
 
    printf("Number of goods: ");
    if ( scanf("%d%*c", &num) != 1 || num < NEED_DISCOUNT )
        exit(1);
 
    printf("Enter values for %d goods:\n", num);
    gHead = gTail = NULL;
    while ( num-- ){
        printf("\nName: ");
        if ( scanf("%[^\n]", buf) != 1 ){
            delete_goods(gHead);
            exit(1);
        }
        printf("Price: ");
        if ( scanf("%lf%*c", &price) != 1 ){
            delete_goods(gHead);
            exit(1);
        }
        if ( ( gTail = new_goods(buf, price, gTail) ) == NULL ){
            delete_goods(gHead);
            exit(1);
        }
        if ( ! gHead )
            gHead = gTail;
    }
 
    if ( ! gHead )
        exit(1);
 
    printf("\nBefore discount:\n");
    print_goods(gHead);
 
    for ( num = 0; num < NEED_DISCOUNT; ++num ){
        gFound = max_price(gHead);
        gFound->price /= 2.0;
    }
 
    printf("\nAfter discount:\n");
    print_goods(gHead);
 
    delete_goods(gHead);
    exit(0);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru