Structuri C++

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
serbug
Junior
Junior
Posts: 3
Joined: 16 Mar 2016, 00:52
Judet: Iaşi

Structuri C++

Post by serbug » 16 Mar 2016, 00:59

Conditia:

De alcătuit un articol cu N înscrieri, care conţine informaţia despre meniul într-un restaurant.
a) De aflat preţul celor trei bucate alese de client.
b) De aranjat înscrierile în ordine descrescătoare după preţul bucatelor.

Intrebarea mea:

Cum as putea in menu sa introduc denumirea bucatelor ca un sir Ex. zeama de pui ?

Mai jos este Codul Programului !

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <windows.h>

using namespace std;

HANDLE f;

void eticheta();

typedef struct menu
{
char bucate[50];
int pret;
}menu;

int main(void)
{
f = GetStdHandle(STD_OUTPUT_HANDLE);

menu a[50], aux;
int i,j,n;

char cauta[20],cauta2[20],cauta3[20];

system("COLOR 0A");
cout << "\t\t\t *** MENU ***";
cout << "\n\n Introduceti numarul bucatelor: "; cin >> n;

for (i = 0; i < n; i++)
{
cout << "\n\n Introduceti numele " << i + 1 << " bucate: "; cin >>(a.bucate); --> aici este problema mea ( pot introduce un singur cuvant pentru fiecare denumire si atat, altfel imi da eroare )
strupr(a.bucate);
cout << "\n\n Introduceti pretul " << i + 1 << " bucate: "; cin >> a.pret;
}
system("cls");

eticheta();

for (i = 0; i < n; i++)
{
SetConsoleTextAttribute(f, 15);
printf("\n\t\t\t| %10s | --- lei |", a.bucate);
cout << "\n\t\t\t|-----------------------------------|";
}
getch();


SetConsoleTextAttribute(f, 12);
cout << "\n\n\t\t\t *** Alegeti 3 bucate *** ";


SetConsoleTextAttribute(f, 15);
cout << "\n\n Introduceti 1 nume din MENU: "; cin >> cauta;
strupr(cauta);
cout << "\n\n Introduceti 2 nume din MENU: "; cin >> cauta2;
strupr(cauta2);
cout << "\n\n Introduceti 3 nume din MENU: "; cin >> cauta3;
strupr(cauta3);

system("cls");

SetConsoleTextAttribute(f, 10);
cout << "\n\n\n\t\t\t\t *** Pretul bucatelor alese *** ";

eticheta();

for (i = 0; i < n; i++)
{
if (strcmp(a.bucate, cauta) == 0)
{

SetConsoleTextAttribute(f, 15);
printf("\n\t\t\t| %10s |%6d lei |", a.bucate, a.pret);
cout << "\n\t\t\t|-----------------------------------|";

}
}
for (i = 0; i < n; i++)
{
if (strcmp(a.bucate, cauta2) == 0)
{

SetConsoleTextAttribute(f, 15);
printf("\n\t\t\t| %10s |%6d lei |", a.bucate, a.pret);
cout << "\n\t\t\t|-----------------------------------|";

}
}
for (i = 0; i < n; i++)
{
if (strcmp(a[i].bucate, cauta3) == 0)
{

SetConsoleTextAttribute(f, 15);
printf("\n\t\t\t| %10s |%6d lei |", a[i].bucate, a[i].pret);
cout << "\n\t\t\t|-----------------------------------|";

}
}


getch();

system("cls");

cout << "\n\n\t\t *** Aranjarea in ordine descrescatoare dupa pret ***";
for (i = 0; i < n; i++)
{
for (j = i + 1; j <= n; j++)
{
if (a[i].pret < a[j].pret)
{
aux = a[i]; a[i] = a[j]; a[j] = aux;
}

}

}

eticheta();

for (i = 0; i < n; i++)
{
SetConsoleTextAttribute(f, 15);
printf("\n\t\t\t| %10s |%6d lei |", a[i].bucate, a[i].pret);
cout << "\n\t\t\t|-----------------------------------|";
}

getch();
return 0;
}


void eticheta()
{
SetConsoleTextAttribute(f, 12);
cout << "\n\n\t\t\t|-----------------------------------|";
cout << "\n\t\t\t| CANTINA GRILL |";
SetConsoleTextAttribute(f, 10);
cout << "\n\t\t\t|-----------------------------------|";
cout << "\n\t\t\t| MENU |";
cout << "\n\t\t\t|-----------------------------------|";
SetConsoleTextAttribute(f, 14);
cout << "\n\t\t\t| BUCATE | PRET |";
cout << "\n\t\t\t|-----------------------------------|";
}



Viorel
Microsoft MVP
Microsoft MVP
Posts: 292
Joined: 13 Jul 2007, 12:26

Re: Structuri C++

Post by Viorel » 16 Mar 2016, 09:23

Încearcă un alt mod de a citi bucatele:

Code: Select all


  cin.ignore( 100, '\n' );
  cin.getline( a[i].bucate, 50 );


serbug
Junior
Junior
Posts: 3
Joined: 16 Mar 2016, 00:52
Judet: Iaşi

Re: Structuri C++

Post by serbug » 16 Mar 2016, 12:19

Multumesc Viorel.
Acuma merge perfect !

Post Reply