/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C/C++.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct flavor
{
char name[ 20 ] ;
double small_price;
double medium_price;
double large_price;
struct flavor * next;
struct flavor * prev;
} ;
typedef struct flavor f;
f * head = NULL ;
f * tail = NULL ;
void add_flavor( char name[ ] , double small_price, double medium_price, double large_price)
{
f * new_flavor = ( f* ) malloc ( sizeof ( f) ) ;
strcpy ( new_flavor- > name, name) ;
new_flavor- > small_price = small_price;
new_flavor- > medium_price = medium_price;
new_flavor- > large_price = large_price;
new_flavor- > next = NULL ;
new_flavor- > prev = tail;
if ( tail ! = NULL )
{
tail- > next = new_flavor;
}
tail = new_flavor;
if ( head == NULL )
{
head = new_flavor;
}
}
void display_flavors( )
{
f * current = head;
while ( current ! = NULL )
{
printf ( "%s:\n " , current- > name) ;
printf ( "Small - %.2f INR\n " , current- > small_price) ;
printf ( "Medium - %.2f INR\n " , current- > medium_price) ;
printf ( "Large - %.2f INR\n " , current- > large_price) ;
current = current- > next;
}
}
void purchase_flavor( char name[ ] , char size[ ] )
{
f * current = head;
while ( current ! = NULL )
{
if ( strcmp ( current- > name, name) == 0 )
{
double price;
if ( strcmp ( size, "Small" ) == 0 )
{
price = current- > small_price;
}
else if ( strcmp ( size, "Medium" ) == 0 )
{
price = current- > medium_price;
}
else if ( strcmp ( size, "Large" ) == 0 )
{
price = current- > large_price;
}
else
{
printf ( "Invalid size.\n " ) ;
return ;
}
printf ( "You have purchased a %s ice cream, size %s, for %.2f INR.\n " , current- > name, size, price) ;
return ;
}
current = current- > next;
}
printf ( "Sorry, we don't have %s flavor.\n " , name) ;
}
int main( )
{
add_flavor( "Vanilla" , 20.0 , 30.0 , 40.0 ) ;
add_flavor( "Chocolate" , 25.0 , 35.0 , 45.0 ) ;
add_flavor( "Strawberry" , 30.0 , 40.0 , 50.0 ) ;
add_flavor( "Mango" , 35.0 , 45.0 , 55.0 ) ;
add_flavor( "Butterscotch" , 40.0 , 50.0 , 60.0 ) ;
printf ( "Welcome to the ice cream vending machine!\n " ) ;
printf ( "Please select a flavor and size:\n " ) ;
display_flavors( ) ;
char selected_flavor[ 20 ] ;
char selected_size[ 10 ] ;
scanf ( "%s %s" , selected_flavor, selected_size) ;
purchase_flavor( selected_flavor, selected_size) ;
return 0 ;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKV2VsY29tZSB0byBHREIgT25saW5lLgpHREIgb25saW5lIGlzIGFuIG9ubGluZSBjb21waWxlciBhbmQgZGVidWdnZXIgdG9vbCBmb3IgQy9DKysuCkNvZGUsIENvbXBpbGUsIFJ1biBhbmQgRGVidWcgb25saW5lIGZyb20gYW55d2hlcmUgaW4gd29ybGQuCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CgpzdHJ1Y3QgZmxhdm9yCnsKICAgIGNoYXIgbmFtZVsyMF07CiAgICBkb3VibGUgc21hbGxfcHJpY2U7CiAgICBkb3VibGUgbWVkaXVtX3ByaWNlOwogICAgZG91YmxlIGxhcmdlX3ByaWNlOwogICAgc3RydWN0IGZsYXZvciAqbmV4dDsKICAgIHN0cnVjdCBmbGF2b3IgKnByZXY7Cn07CnR5cGVkZWYgc3RydWN0IGZsYXZvciBmOwpmICpoZWFkID0gTlVMTDsKZiAqdGFpbCA9IE5VTEw7Cgp2b2lkIGFkZF9mbGF2b3IoY2hhciBuYW1lW10sIGRvdWJsZSBzbWFsbF9wcmljZSwgZG91YmxlIG1lZGl1bV9wcmljZSwgZG91YmxlIGxhcmdlX3ByaWNlKQp7CiAgICBmICpuZXdfZmxhdm9yID0gKGYqKSBtYWxsb2Moc2l6ZW9mKGYpKTsKICAgIHN0cmNweShuZXdfZmxhdm9yLT5uYW1lLCBuYW1lKTsKICAgIG5ld19mbGF2b3ItPnNtYWxsX3ByaWNlID0gc21hbGxfcHJpY2U7CiAgICBuZXdfZmxhdm9yLT5tZWRpdW1fcHJpY2UgPSBtZWRpdW1fcHJpY2U7CiAgICBuZXdfZmxhdm9yLT5sYXJnZV9wcmljZSA9IGxhcmdlX3ByaWNlOwogICAgbmV3X2ZsYXZvci0+bmV4dCA9IE5VTEw7CiAgICBuZXdfZmxhdm9yLT5wcmV2ID0gdGFpbDsKICAgIGlmICh0YWlsICE9IE5VTEwpCiAgICB7CiAgICAgICAgdGFpbC0+bmV4dCA9IG5ld19mbGF2b3I7CiAgICB9CiAgICB0YWlsID0gbmV3X2ZsYXZvcjsKICAgIGlmIChoZWFkID09IE5VTEwpCiAgICB7CiAgICAgICAgaGVhZCA9IG5ld19mbGF2b3I7CiAgICB9Cn0KCnZvaWQgZGlzcGxheV9mbGF2b3JzKCkgCnsKICAgIGYgKmN1cnJlbnQgPSBoZWFkOwogICAgd2hpbGUgKGN1cnJlbnQgIT0gTlVMTCkKICAgIHsKICAgICAgICBwcmludGYoIiVzOlxuIiwgY3VycmVudC0+bmFtZSk7CiAgICAgICAgcHJpbnRmKCJTbWFsbCAtICUuMmYgSU5SXG4iLCBjdXJyZW50LT5zbWFsbF9wcmljZSk7CiAgICAgICAgcHJpbnRmKCJNZWRpdW0gLSAlLjJmIElOUlxuIiwgY3VycmVudC0+bWVkaXVtX3ByaWNlKTsKICAgICAgICBwcmludGYoIkxhcmdlIC0gJS4yZiBJTlJcbiIsIGN1cnJlbnQtPmxhcmdlX3ByaWNlKTsKICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+bmV4dDsKICAgIH0KfQoKdm9pZCBwdXJjaGFzZV9mbGF2b3IoY2hhciBuYW1lW10sIGNoYXIgc2l6ZVtdKSAKewogICAgZiAqY3VycmVudCA9IGhlYWQ7CiAgICB3aGlsZSAoY3VycmVudCAhPSBOVUxMKQogICAgewogICAgICAgIGlmIChzdHJjbXAoY3VycmVudC0+bmFtZSwgbmFtZSkgPT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGRvdWJsZSBwcmljZTsKICAgICAgICAgICAgaWYgKHN0cmNtcChzaXplLCAiU21hbGwiKSA9PSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmljZSA9IGN1cnJlbnQtPnNtYWxsX3ByaWNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChzaXplLCAiTWVkaXVtIikgPT0gMCkgCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHByaWNlID0gY3VycmVudC0+bWVkaXVtX3ByaWNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChzaXplLCAiTGFyZ2UiKSA9PSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmljZSA9IGN1cnJlbnQtPmxhcmdlX3ByaWNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJJbnZhbGlkIHNpemUuXG4iKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludGYoIllvdSBoYXZlIHB1cmNoYXNlZCBhICVzIGljZSBjcmVhbSwgc2l6ZSAlcywgZm9yICUuMmYgSU5SLlxuIiwgY3VycmVudC0+bmFtZSwgc2l6ZSwgcHJpY2UpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwogICAgfQogICAgcHJpbnRmKCJTb3JyeSwgd2UgZG9uJ3QgaGF2ZSAlcyBmbGF2b3IuXG4iLCBuYW1lKTsKfQoKaW50IG1haW4oKQp7CiAgICBhZGRfZmxhdm9yKCJWYW5pbGxhIiwgMjAuMCwgMzAuMCwgNDAuMCk7CiAgICBhZGRfZmxhdm9yKCJDaG9jb2xhdGUiLCAyNS4wLCAzNS4wLCA0NS4wKTsKICAgIGFkZF9mbGF2b3IoIlN0cmF3YmVycnkiLCAzMC4wLCA0MC4wLCA1MC4wKTsKICAgIGFkZF9mbGF2b3IoIk1hbmdvIiwgMzUuMCwgNDUuMCwgNTUuMCk7CiAgICBhZGRfZmxhdm9yKCJCdXR0ZXJzY290Y2giLCA0MC4wLCA1MC4wLCA2MC4wKTsKICAgIHByaW50ZigiV2VsY29tZSB0byB0aGUgaWNlIGNyZWFtIHZlbmRpbmcgbWFjaGluZSFcbiIpOwogICAgcHJpbnRmKCJQbGVhc2Ugc2VsZWN0IGEgZmxhdm9yIGFuZCBzaXplOlxuIik7CiAgICBkaXNwbGF5X2ZsYXZvcnMoKTsKICAgIGNoYXIgc2VsZWN0ZWRfZmxhdm9yWzIwXTsKICAgIGNoYXIgc2VsZWN0ZWRfc2l6ZVsxMF07CiAgICBzY2FuZigiJXMgJXMiLCBzZWxlY3RlZF9mbGF2b3IsIHNlbGVjdGVkX3NpemUpOwogICAgcHVyY2hhc2VfZmxhdm9yKHNlbGVjdGVkX2ZsYXZvciwgc2VsZWN0ZWRfc2l6ZSk7CiAgICByZXR1cm4gMDsKfQ==