i den nächsten Code haben ausführen, aber wenn man von cmd Kompilieren mit mingw Fehler angezeigt.Fehler von cmd durch mingw kompilieren, können Codeblöcke zusammenstellen und
ultimo->siguiente = producto
for(producto=primer; producto != NULL ;producto = producto->siguiente)
siguiente = este->siguiente;
Warn Zuordnung von unverträglichen pointer In diesen drei Linien zeigt die Warnung.
, was das Problem ist ?, ich das Code-Bibliotheken, string.h enthalten, stdlib.h
typedef struct Producto
{
int codigo_producto;
char descripcion[20];
float precio_unitario;
struct producto *siguiente;
} t_producto;
float aplicar_iva(float precio_base);
void eliminar_todo(t_producto*);
void emitir_saludo(void);
void imprimir_producto(t_producto);
t_producto* leer_producto(void);
int main()
{
t_producto *primer, *ultimo, *producto;
primer = NULL;
ultimo = NULL;
char decision;
int i, cantidad;
float total;
cantidad =0;
total = 0.0;
emitir_saludo();
while(1) //while infinito
{
do
{
printf("\nHay %d productos en el carrito. ¿Quiere pasar otro producto? [s/n]: ",cantidad);
decision = getchar();
while(getchar()==EOF);
}while(decision != 's' && decision != 'S' && decision != 'n' && decision != 'N');
if(decision=='n' || decision == 'N')
{
break;
}
producto = leer_producto();
if(primer == NULL) //si no hay ningun elemento
{
primer= producto;
}
if(ultimo != NULL) //si hay elemntos se le dice al ultimo que ya no es el ultimo
{
ultimo->siguiente = producto;
}
ultimo = producto;
cantidad++;
}
puts("\nPRODUCTOS:\n");
for(producto=primer; producto != NULL ;producto = producto->siguiente)
{
imprimir_producto(*producto);
total += producto ->precio_unitario;
}
printf("\nTotal deproductos: %d\n\n",cantidad);
printf("Precio total sin IVA: %.2f\n",total);
printf("Precio total con IVA: %.2f\n",aplicar_iva(total));
printf("\nBuenos dias.\n");
eliminar_todo(primer);
return 0;
}
float aplicar_iva(float precio_base)
{
return precio_base * 1.21;
}
void emitir_saludo(void)
{
printf("\n* * * * * * * * * * * * * * * * * *");
printf("\n* * PROGRAMA SUPERMERCADO * *\n");
printf("* * La calidad es lo primero * *\n");
printf("* * * * * * * * * * * * * * * * * *\n");
}
void imprimir_producto(t_producto t)
{
printf("%d %s %f\n",t.codigo_producto,t.descripcion,t.precio_unitario);
}
t_producto* leer_producto(void)
{
t_producto *p;
p = (t_producto*)malloc(sizeof(t_producto));
char entrada[80];
printf("\nCodigo producto: ");
fgets(entrada,10,stdin);
if(entrada[strlen(entrada)-1] == '\n')
{
entrada[strlen(entrada)-1] = '\0';
}
p->codigo_producto = (int) strtol(entrada,NULL,10);
printf("Descripcion: ");
fgets(p->descripcion,20,stdin);
if(p->descripcion[strlen(p->descripcion)-1] == '\n')
{
p->descripcion[strlen(p->descripcion)-1] = '\0';
}
printf("Precio: ");
fgets(entrada,10,stdin);
if(entrada[strlen(entrada)-1] == '\n')
{
entrada[strlen(entrada)-1] = '\0';
}
p->precio_unitario = strtof(entrada,NULL);
p->siguiente = NULL;
return p;
}
void eliminar_todo(t_producto* producto)
{
t_producto *este, *siguiente;
este =producto;
while(este!=NULL)
{
siguiente = este->siguiente;
este->siguiente = NULL;
free(este);
este=siguiente;
}
}
Vielen Dank im Voraus!
Sie haben nicht 182 Zeilen Code in diesem Code-Snippet! – Sush
'Entscheidung' sollte übrigens ein' int' sein. – paxdiablo
Sieht für mich wie ein einfacher Tippfehler aus: struct Producto und struct producto sind verschiedene Typen, weil C die Groß-/Kleinschreibung unterscheidet. – Irisshpunk