Hello All ,This is me again :icon_mrgreen:

I'm Making a programme which tell the user to input the name
of the product he wants to show its Price and Amount ,but i have a problem:

Here's The Code

#include <iostream>
#include <conio.h>
using namespace std;

struct Shop
{
	int Price;
	int Amount;
};

void PrintPrice (Shop Product);
void PrintAmount (Shop Product);

int main()
{
//For Input:
	Shop FI;

//Products:
	Shop Apple;
	Shop Banana;
	Shop Orange;

//Prices:
	Apple.Price = 3;
	Banana.Price = 5;
	Orange.Price = 7;

//Amounts:
	Apple.Amount = 5;
	Banana.Amount = 10;
	Orange.Amount = 15;

//Programme:
	cout << "Enter The Product's Name: ";
	cin >> FI;

	PrintPrice(FI);
	PrintAmount(FI);

//End Of Programme:
	getch();
	return 0;
}

void PrintPrice (Shop Product)
{
	cout << "The Price Is: " << Product.Price <<endl;
}

void PrintAmount (Shop Product)
{
	cout << "The Amount Is: " << Product.Amount;
}

I Know This Is Wrong:

cin >> FI;

so what can it be replaced by?
Hope you got it...

Recommended Answers

All 2 Replies

The names of your variables go away after compilation, so you can't query them at runtime. Instead of trying to do something magical, why not store a name in your structure and use that? Of course, your program is missing a lot of required logic to make this work. Here's an example of what I think you want to do:

#include <cstddef>
#include <iostream>
#include <string>

using namespace std;

struct Shop
{
  string Name;
  int Price;
  int Amount;
};

void PrintPrice (string name, Shop products[], size_t n );
void PrintAmount ( string name, Shop products[], size_t n );

int main()
{
  Shop products[] = {
    { "Apple", 3, 5 },
    { "Banana", 5, 10 },
    { "Orange", 7, 15 }
  };
  string name;

  cout<<"Enter The Product's Name: ";
  cin>> name;

  PrintPrice ( name, products, 3 );
  PrintAmount ( name, products, 3 );
}

void PrintPrice ( string name, Shop products[], size_t n )
{
  for ( std::size_t i = 0; i < n; i++ ) {
    if ( products[i].Name == name )
      cout<< "The Price Is: "<< products[i].Price <<'\n';
  }
}

void PrintAmount ( string name, Shop products[], size_t n )
{
  for ( std::size_t i = 0; i < n; i++ ) {
    if ( products[i].Name == name )
      cout<< "The Amount Is: "<< products[i].Amount <<'\n';
  }
}

A couple of asides:

>using namespace std;
I strongly recommend you either not use this and qualify namespaces manually, or take care to avoid using directives in the global scope.

>#include <conio.h>
Don't use conio.h unless you have a very good reason to do so, because it kills your code's portability. Pausing the program at the end with getch is not a good reason, by the way.

Worked Fine!,Thx

Reading it right now to understand what happened

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.