elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No consigo hacer un listado en Code blocks
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No consigo hacer un listado en Code blocks  (Leído 1,450 veces)
franvitali

Desconectado Desconectado

Mensajes: 2


Ver Perfil
No consigo hacer un listado en Code blocks
« en: 16 Enero 2019, 19:51 pm »

Hola estoy intentando realizar un listado de ingredientes y precios en Code blocks en lo que yo creo que es un arreglo. Si no es asi disculpen mi ignorancia. Les dejo lo que hice hasta ahora que no es mucho.
Lo estoy extrayendo de un txt en el que se carga el nombre del ingrediente y el precio de la siguiente forma "ingredinete""espacio""precio".
Soy muy novato en esto si alguien me ayuda se lo agradezco.

#include<stdio.h>






//Algoritmo principal
// Variables
FILE *Ingredientes;
char NombreI[12];
int precio, precioindividual [400],i;
Ingrediente [400][12];
main(){
    //Carga de productos
NombreI=a;
for (i=0;i<400;i++){
                Ingrediente [12]=NombreI;
                precioindividual =0;
       }
Ingredientes=fopen("Ingredientes.txt","r");
fscanf(Ingredientes,"%s %d ",&NombreI,&precio);
i=0;
    while(!feof(Ingredientes)){
        Ingrediente i [12]=NombreI;
        precioindividual i =precio;

        fscanf(Ingredientes,"%s %d ",&NombreI,&precio);
        i=i+1;
        }//Fin mientras
fclose(Ingredientes);
i=0;
    while(i<400){
        printf( "%d" "%s" " \n ", precioindividual i,Ingrediente i [12]);
        i=i+1;

    }

}


Cualquier duda acerca del mamarracho de arriba comenteme y les explico lo que quice hacer con gusto. Saludos


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: No consigo hacer un listado en Code blocks
« Respuesta #1 en: 16 Enero 2019, 20:18 pm »

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í:
Código
  1. const int TAM_NOMBRE = 20; // maximo numero de letras para el nombre de cada ingrediente
  2. const int MAX_INGREDIENTES = 10; // numero de ingredientes que podemos almacenar
  3.  
  4. struct Ingrediente{
  5.    char nombre[TAM_NOMBRE];
  6.    double precio;
  7. };
  8.  
  9. int main(){
  10.    Ingrediente mis_ingredientes[MAX_INGREDIENTES];
  11.    // el resto del codigo
  12. }
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:
Código
  1. char nombre2[] = mis_ingredientes[2].nombre;
  2. 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:
Código
  1. const int TAM_NOMBRE = 20; // maximo numero de letras para el nombre de cada ingrediente
  2. const int MAX_INGREDIENTES = 10; // numero de ingredientes que podemos almacenar
  3. int main(){
  4.    char nombre[MAX_INGREDIENTES][TAM_NOMBRE];
  5.    double precio[MAX_INGREDIENTES];
  6.    // el resto del codigo
  7. }
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:
Código
  1. char nombre2 = nombre[2];
  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 :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
franvitali

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: No consigo hacer un listado en Code blocks
« Respuesta #2 en: 17 Enero 2019, 02:23 am »

Muchas gracias por la respuesta. No entiendo mucho pero es cuestion de mirar y pensar bien lo que me estas diciendo. Mi idea es que mediante una nota de texto que esta ubicada en la misma direccion que el archivo.c, la lea yde ahi saque el nombre y el precio del ingrediente. Luego debo manipular esa info (suma, resta y demas) para asi sacar el precio de un producto terminado. El objetivo principal de  hacer un listado en la nota de texto y luego cargarlo es: Primero por lo que entiendo la memoria de un programita creado con code blocks de esta forma es volátil y la otra es que cuando modifique el precio en la lista me modifique el del producto terminado que posea dicho ingrediente tambien. No se si me llego a explicar del todo bien. De nuevo gracias por la ayuda.
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: No consigo hacer un listado en Code blocks
« Respuesta #3 en: 17 Enero 2019, 17:31 pm »

A lo que me refería era a qué me comentaras cómo habías planteado tú el ejercicio para usar las variables que habías creado. Es decir algo así como:
  • creo un <char nombre[12]> para guardar el nombre del ingrediente.
  • creo un <int precio_individual[400]> para...
Es decir, que me explicaras cómo quieres usar tus variables ya que algunas de tus variables son un poco raras. Entonces quiero ver cómo lo tenías pensado para decirte qué variables debes usar para lo que quieres hacer.

PD: El código de tu primer mensaje edítalo y pon el programa entre etiquetas de código GeSHi. Tiene que quedar algo así:
Código
  1. // tus funciones
  2. int main(){
  3.    // tu codigo
  4. }
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con CODE BLOCKS 8.02
Programación C/C++
Silvia Alicia 8 4,351 Último mensaje 29 Noviembre 2012, 15:11 pm
por Silvia Alicia
Compilador code blocks
Dudas Generales
~H~ 2 2,468 Último mensaje 19 Abril 2013, 21:27 pm
por OmarHack
Instalación de SDL en Code::Blocks
Programación C/C++
DeMoNcRaZy 4 3,533 Último mensaje 20 Junio 2015, 23:17 pm
por DeMoNcRaZy
Compilar en Code::Blocks
GNU/Linux
DeMoNcRaZy 4 3,182 Último mensaje 30 Junio 2015, 22:09 pm
por DeMoNcRaZy
[C++][?]Code::blocks + wxformbuilder "generate code error"
Programación C/C++
vitoafk 0 1,711 Último mensaje 2 Octubre 2015, 04:06 am
por vitoafk
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines