Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Miguelito

#1
Hola buenas gente, tengo un problema con esta tarea de estructuras, consiste en un programa que almacene el inventario de muebles y luego los liste dependiendo de su tipo, material o código, el problema es cuando uso la opción 5 que es buscar un mueble por su nombre, si ustedes ingresan un mueble y luego buscan con esa opción el mueble, este aparecerá por un segundo y luego desaparece, no se si deje mal puesto algún system("cls") por ahí o algo escribí mal, la idea es que quede fijo el listado hasta que elija otra opción.

Y lo otro si alguien me puede decir como poner una "ñ" en el printf porfa.

Adjunto mi código para que puedan probarlo.

De antemano gracias.

Código (csharp) [Seleccionar]
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<dos.h>

#define MAXLINEA 30
#define MAXTIPO 15
#define MAXCOLOR 15
#define MAXMATERIAL 20
#define MAXMUEBLE 1000

enum { Anadir=1, Listartodo, Listartipo, Listarmaterial, Buscarmueble, Eliminarmueble, Salir};

struct fecha {
int dia;
int mes;
int ano;
};

struct mueble {
int codigo;
char tipo[MAXTIPO];
char color[MAXCOLOR];
char material[MAXMATERIAL];
struct fecha creacion;
int precio;
};

struct bodega {
struct mueble bod[MAXMUEBLE];
int cant;
};

int main (void) {

struct bodega mis_muebles;
int opc, i, j;
char tipo[MAXTIPO];
char material[MAXMATERIAL];
char linea[MAXLINEA];
int codigo;

mis_muebles.cant = 0;

do{
do{
printf ("---------------------\n");
printf ("Inventario Muebletex\n");
printf ("---------------------\n");
printf ("1) Anadir mueble\n");
printf ("2) Listar muebles\n");
printf ("3) Listar por tipo de mueble\n");
printf ("4) Listar por tipo de material\n");
printf ("5) Buscar mueble\n");
printf ("6) Eliminar mueble\n");
printf ("7) Salir\n\n");
printf ("Opcion: ");

gets(linea); sscanf (linea, "%d", &opc);

if (opc < 1 || opc > 7){
printf ("Opcion inexistente. Debe estar entre 1 y 5\n");
}

} while(opc < 1 || opc > 7);

switch (opc) {

case Anadir:
sleep(1);
system("cls");
if (mis_muebles.cant == MAXMUEBLE){
printf("Lo sentimos, La memoria esta llena.\n");
} else{
printf("Codigo:  ");
gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].codigo);

printf("\nFecha:\n\n");

do{
printf("Dia:  ");
gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].creacion.dia);
if (mis_muebles.bod[mis_muebles.cant].creacion.dia < 1 || mis_muebles.bod[mis_muebles.cant].creacion.dia > 31){
printf ("Opcion inexistente. Debe estar entre 1 y 31\n");
}
} while (mis_muebles.bod[mis_muebles.cant].creacion.dia < 1 || mis_muebles.bod[mis_muebles.cant].creacion.dia > 31);

do{
printf("Mes:  ");
gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].creacion.mes);
if (mis_muebles.bod[mis_muebles.cant].creacion.mes < 1 || mis_muebles.bod[mis_muebles.cant].creacion.mes > 12){
printf ("Opcion inexistente. Debe estar entre 1 y 12\n");
}
} while (mis_muebles.bod[mis_muebles.cant].creacion.mes < 1 || mis_muebles.bod[mis_muebles.cant].creacion.mes > 12);

do{
printf("Ano:  ");
gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].creacion.ano);
if (mis_muebles.bod[mis_muebles.cant].creacion.ano < 1000 || mis_muebles.bod[mis_muebles.cant].creacion.ano > 3000){
printf ("Opcion inexistente. Debe estar entre 1000 y 3000\n");
}
} while (mis_muebles.bod[mis_muebles.cant].creacion.ano < 1000 || mis_muebles.bod[mis_muebles.cant].creacion.ano > 3000);

printf("\nTipo de mueble:  ");
gets(mis_muebles.bod[mis_muebles.cant].tipo);

printf("Material:  ");
gets(mis_muebles.bod[mis_muebles.cant].material);

printf("Color:  ");
gets(mis_muebles.bod[mis_muebles.cant].color);

printf("Precio:  ");
gets(linea); sscanf (linea, "%d", &mis_muebles.bod[mis_muebles.cant].precio);

mis_muebles.cant++;
}
sleep(1);
system("cls");
break;

case Listartodo:
sleep(1);
system("cls");
for(i = 0; i < mis_muebles.cant; i++){
printf("--------------------------------------\n");
printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
mis_muebles.bod[i].creacion.dia,
mis_muebles.bod[i].creacion.mes,
mis_muebles.bod[i].creacion.ano);
printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
printf("Material: %s\n", mis_muebles.bod[i].material);
printf("Color: %s\n", mis_muebles.bod[i].color);
printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
printf ("\n");
}
break;

case Listartipo:
sleep(1);
system("cls");
printf("Tipo de mueble a buscar:  "); gets(tipo);
for(i = 0; i < mis_muebles.cant; i++){
if (strcmp(tipo, mis_muebles.bod[i].tipo) == 0){
printf("--------------------------------------\n");
printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
mis_muebles.bod[i].creacion.dia,
mis_muebles.bod[i].creacion.mes,
mis_muebles.bod[i].creacion.ano);
printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
printf("Material: %s\n", mis_muebles.bod[i].material);
printf("Color: %s\n", mis_muebles.bod[i].color);
printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
}
}
break;

case Listarmaterial:
sleep(1);
system("cls");
printf("Tipo de material a buscar:  "); gets(material);
for(i = 0; i < mis_muebles.cant; i++){
if (strcmp(material, mis_muebles.bod[i].material) == 0){
printf("--------------------------------------\n");
printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
mis_muebles.bod[i].creacion.dia,
mis_muebles.bod[i].creacion.mes,
mis_muebles.bod[i].creacion.ano);
printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
printf("Material: %s\n", mis_muebles.bod[i].material);
printf("Color: %s\n", mis_muebles.bod[i].color);
printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
}
}
break;

case Buscarmueble:
sleep(1);
system("cls");
printf("Ingrese el codigo del producto a buscar:  "); scanf("%d", &codigo);
for(i = 0; i < mis_muebles.cant; i++){
if(codigo == mis_muebles.bod[i].codigo){
printf("Codigo: %d                                         Fecha: %d/%d/%d\n", mis_muebles.bod[i].codigo,
mis_muebles.bod[i].creacion.dia,
mis_muebles.bod[i].creacion.mes,
mis_muebles.bod[i].creacion.ano);
printf("Tipo de mueble: %s\n", mis_muebles.bod[i].tipo);
printf("Material: %s\n", mis_muebles.bod[i].material);
printf("Color: %s\n", mis_muebles.bod[i].color);
printf("Precio: $%d pesos\n", mis_muebles.bod[i].precio);
}
}
break;

case Eliminarmueble:
sleep(1);
system("cls");
printf("Ingrese el codigo del producto para eliminar:  "); scanf("%d", &codigo);
for(i = 0; i < mis_muebles.cant; i++){
if(codigo == mis_muebles.bod[i].codigo){
break;
}
}
if(i < mis_muebles.cant){
for(j = i+1; j < mis_muebles.cant; j++){
mis_muebles.bod[j-1] = mis_muebles.bod[j];
mis_muebles.cant--;
}
}
sleep(1);
system("cls");
break;
}
} while(opc != Salir);
}





Solucionado jajajajaj
#2
Programación C/C++ / Rendondeo superior
16 Mayo 2019, 07:14 AM
Hola buenas, que funcion es la que se usa para redondeo superior de un numero, por ejemplo 1.5=2 , 1.3=2, 3.1=4, si se usa una funcion cual seria? o es necesario hacer un codigo para eso?
#3
Buenas a todos, tengo un dilema con una tarea en la cual me piden ingresar un numero que puede estar entre 13 y 16 digitos el cual tengo que separar sus digitos e ingresarlos a una matriz, luego tengo que multiplicar por 2 los digitos separados empezando desde el penultimo digito y saltandome de a dos.

ej: 1234567891234567
    1  2  3  4  5  6  7  8  9  1  2  3  4  5  6  7
    2  2  6  4 10 6 14 8 18 1   4  3  8  5 12 7

y luego sumarlos.
Mi duda es que si ingreso un numero menor a 16 digitos los ultimos digitos quedaran en 0 y no se como ubicarme en el penultimo digito.

ej: 1234567891234
    1  2  3  4  5  6  7  8  9  1  2  3  4  0  0  0
    2  2  6  4 10 6 14 8 18  1  4  3  8  0  0  0
en este caso empieza a multiplicar desde el ultimo termino, como hago para que omita los primeros 0?


#include<stdio.h>
int main () {
char digit[16];
int i, j;
for(i=0; i<=15; i++){
digit[i]=0;
}
printf("Ingrese el numero de tarjeta: ");
scanf("%s", digit);

for(i=0; i<=15; i++){
                printf("%c\n", digit[i]);
}
return 0;
}