Ayuda con tarea de programa en lenguaje C

Iniciado por dominicanvictor, 5 Agosto 2019, 18:04 PM

0 Miembros y 1 Visitante están viendo este tema.

dominicanvictor

Saludos, que tal todo? Espero que bien, les escribo con fines de obtener ayuda con un trabajo muy importante de programación en el lenguaje C. No tengo un dominio excelente de dicho lenguaje, y debo entregar una practica final la cual no tengo ni idea de como realizarla. Me gustaría saber si puedo obtener ayuda de ustedes para realizar ese programa, o de alguien más. a mas tardar la practica debo entregarla este próximo jueves 8 de agosto a las 12 a.m.

Sería de mucha ayuda que puedan ayudarme a realizar dicha practica, se que es una falta de etica pedir que tu tarea sea realizada, pero es que no tengo opción, ya intenté realizarla y no pude, simplemente no tengo idea de como hacerlo.

Muchas gracias y bendiciones.
Un saludo nuevamente.

Machacador

Si no sabes por lo menos como empezar está difícil el asunto, porque aquí a los que saben de eso les gusta que pongan aunque sea algo de código para luego dar orientaciones... pero tal vez alguien te ayude...

:rolleyes: :o :rolleyes:

Suerte.
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

@XSStringManolo

Tienes tiempo de sobra para aprender a hacerlo. Descargate 4 o 5 libros de C en pdfdrive.com y mira el que mejor entiendas de ellos.

Intenta hacer el programa, y lo que no sepas hacer lo metes en pseudocódigo en un comentario para que te ayudemos.

dominicanvictor

Cita de: string Manolo en  5 Agosto 2019, 21:50 PM
Tienes tiempo de sobra para aprender a hacerlo. Descargate 4 o 5 libros de C en pdfdrive.com y mira el que mejor entiendas de ellos.

Intenta hacer el programa, y lo que no sepas hacer lo metes en pseudocódigo en un comentario para que te ayudemos.


Así voy ahora, pero tengo ciertos errores con el modulo 1
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>



#define L_CLAVE 7
#define L_DESCRIPCION 20
#define L_BUFFER 100


struct producto {
char clave[L_CLAVE];
char descripcion[L_DESCRIPCION];
float precio;
};


void captura_producto(){

producto prod;
char buffer[L_BUFFER];

clrscr();
printf("Captura de producto\n\n");


/* captura de clave de producto */
printf("Clave: ");
gets(buffer);
if (strlen(buffer)<=L_CLAVE){
strcpy(prod.clave, buffer);
}
else{
printf("Error en captura de clave");
}

/* captura de descripcion */
printf("Descripcion: ");
gets(buffer);
if (strlen(buffer)<=L_DESCRIPCION){
strcpy(prod.descripcion, buffer);
}
else{
printf("Error en captura de descripcion");
}

/* captura de precio */
printf("Precio: ");
gets(buffer);
prod.precio = atof(buffer);

printf("\n\n\n");

printf("datos capturados\n");
printf("Clave: %s -- Decripcion: %s  Precio: %f ", prod.clave, prod.descripcion, prod.precio);

}


int main(){

captura_producto();
return 0;

}

K-YreX

Cita de: dominicanvictor en  8 Agosto 2019, 19:04 PM
Así voy ahora, pero tengo ciertos errores con el modulo 1
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>



#define L_CLAVE 7
#define L_DESCRIPCION 20
#define L_BUFFER 100


struct producto {
char clave[L_CLAVE];
char descripcion[L_DESCRIPCION];
float precio;
};


void captura_producto(){

producto prod;
char buffer[L_BUFFER];

clrscr();
printf("Captura de producto\n\n");


/* captura de clave de producto */
printf("Clave: ");
gets(buffer);
if (strlen(buffer)<=L_CLAVE){
strcpy(prod.clave, buffer);
}
else{
printf("Error en captura de clave");
}

/* captura de descripcion */
printf("Descripcion: ");
gets(buffer);
if (strlen(buffer)<=L_DESCRIPCION){
strcpy(prod.descripcion, buffer);
}
else{
printf("Error en captura de descripcion");
}

/* captura de precio */
printf("Precio: ");
gets(buffer);
prod.precio = atof(buffer);

printf("\n\n\n");

printf("datos capturados\n");
printf("Clave: %s -- Decripcion: %s  Precio: %f ", prod.clave, prod.descripcion, prod.precio);

}


int main(){

captura_producto();
return 0;

}


Primero, te recomiendo no usar funciones no estándar ni librerías no estándar, en tu caso: <clrcsr()> y <conio.h> ya que según el compilador que se use no va a funcionar. Y segundo el único error que tiene ese código es que en C:

struct Producto{
    //...
};

Producto mi_producto; // ERROR!!
struct Producto mi_producto; // Correcto!!

Para no escribir siempre <struct> cuando te refieras al tipo <Producto> puedes usar <typedef>:

typedef struct Producto{
    // ...
} Producto;

Producto mi_producto; // Correcto!!

Dejar claro que así lo que haces es permitirte usar el nombre <Producto> como sustituto de <struct Producto> pero NO estás creando ninguna variable llamada <Producto> de tipo <Producto>. En cambio si quitas <typedef> y haces:

struct Producto{
    // ...
} mi_producto;

Sí estás creando ya una variable de tipo <Producto>. No te recomiendo hacer esto aunque lo verás en muchos sitios ya que entonces la variable es global y no es una buena práctica.

Otros consejos:
  • Usar <fgets()> en lugar de <gets()>
  • Usar <strncpy()> en lugar de <strcpy()>
    Las alternativas que te he puesto permiten un parámetro donde especificar la longitud. Esto hace que las funciones sean más seguras para evitar desbordamientos.
  • Si vas a comprobar si un nombre/clave/etc es demasiado larga, lo suyo sería después de avisar del error, permitir al usuario introducirlo de nuevo.

    Pero vamos que estás cosas son recomendaciones que te digo. Si lo que quieres es acabarlo cuanto antes para entregarlo y ya pues como dicen muchos "Mientras compile..."
Código (cpp) [Seleccionar]

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