Lo primero te recomiendo que pongas tu código entre etiquetas de código GeSHi, las puedes seleccionar encima del cuadro de texto que sale cuando escribes/modificas un mensaje. Sin ellas el código se hace ilegible.
Ahora respecto a lo que se puede sacar de ese código:
Las variables es preferible que las declares dentro del <main> para hacerlas locales, ya que tal y como lo has declarado tú son variables globales y no es muy seguro ni recomendable usarlas, excepto para algunos casos particulares.
Ahora me gustaría que me explicaras un poco que has querido crear con cada variable, es decir; qué uso le quieres dar a cada variable. Y ahora te doy una idea de cómo guardar los datos.
Tenemos unos ingredientes que son cadenas de caracteres <char*> con un precio <int> o <double> (mejor <double>). Entonces rápidamente se me ocurren dos formas de hacerlo, una usando un <struct> y otra sin hacer uso de <struct>:
Forma 1: Creamos un <struct> llamado <Ingrediente> que tenga nombre y precio. Algo así:
const int TAM_NOMBRE = 20; // maximo numero de letras para el nombre de cada ingrediente
const int MAX_INGREDIENTES = 10; // numero de ingredientes que podemos almacenar
struct Ingrediente{
char nombre[TAM_NOMBRE];
double precio;
};
int main(){
Ingrediente mis_ingredientes[MAX_INGREDIENTES];
// el resto del codigo
}
Con esta opción creamos un nuevo tipo de dato llamado <Ingrediente> (como si fuera un <int>) que dentro de cada variable de tipo ingrediente tenemos guardado su nombre y su precio. Para acceder al ingrediente 2 (contando el 0), accederíamos mediante:
char nombre2[] = mis_ingredientes[2].nombre;
double precio2 = mis_ingredientes[2].precio;
Te recomiendo esta opción ya que deja la información más estructurada y es sencillo de ver.
Forma 2: Creamos dos arrays (arreglos), uno para el nombre del ingrediente y otro para el precio:
const int TAM_NOMBRE = 20; // maximo numero de letras para el nombre de cada ingrediente
const int MAX_INGREDIENTES = 10; // numero de ingredientes que podemos almacenar
int main(){
char nombre[MAX_INGREDIENTES][TAM_NOMBRE];
double precio[MAX_INGREDIENTES];
// el resto del codigo
}
Con esta segunda opción evitamos usar <struct>. Esta opción sólo te la recomendaría si tienes que evitar la opción anterior. Ya que aquí la información queda más "suelta". Para acceder al ingrediente 2 (empezando en 0), haríamos:
char nombre2 = nombre[2];
double precio2 = precio[2];
Parece más sencillo de acceder a cada elemento pero lo tienes guardado en sitios distintos entonces está peor estructurado.
Espero que esto te sirva para pensar y estructurar bien el programa ya que creo que tienes un lío con las variables. De todas formas espero tu respuesta para ver cómo lo tenías pensado tú, porque puede que no lo hayas implementado bien pero que estuviese bien pensado. Suerte