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ú

Mensajes - S4ms3pi0l__

#11
Tengo un problema con mi programa. Hace un mes más o menos, había programado el siguiente código, lo publiqué aquí porque tenía un pequeño problemita y me ayudaron a resolverlo y funcionaba a la perfección. He cambiado de computadora y todo, pero ahora cuando ejecuto mi programa, crashea luego de ingresar un valor a las "mandarinas".


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
int n, x, i, a=0, b=0, parcela[20][2];
do{
printf("Ingrese la cantidad de parcelas: ");
scanf("%d",&n);
}while(n<=0 || n>=21);
system("cls");
for(i=0;i<=n;i++){
printf("Parcela #%d ",i+1);
do{
printf("\nIngrese la cantidad de naranjas: ");
scanf("%d",&parcela[0][0]);
}while(parcela[0][0]<=0);
do{
printf("Ingrese la cantidad de mandarinas: ");
scanf("%d",&parcela[0][1]);
}while(parcela[0][1]<=0);
a+=parcela[0][0];
b+=parcela[0][1];
parcela[i][x]=parcela[0][0]+parcela[0][1];
system("cls");
}
system("cls");
printf("Total produccion naranjas: %d ",a);
printf("\nTotal produccion mandarinas: %d ",b);
for(i=1;i<=n;i++){
printf("\nProduccion total de Parcela #%d: %d ",i, parcela[i][x]);
}
return 0;
}
#12
Cita de: BloodSharp en 27 Noviembre 2017, 04:40 AM
Primero te recomendaría que elijas solo para ingresar strings scanf+fflush o gets, si mal no recuerdo fflush no era necesario con gets, pero por otra parte estás en el scanf asignando mal la dirección de memoria del string cod, si ya de por sí es un puntero/array/etc... no hace falta asignarle el símbolo ampersand para especificarle dirección de memoria porque de por sí lo toma como dirección de memoria. En todo caso al asignarle ampersand al vector estarías especificandole que dentro de los valores basura que tiene cod dicho valor sea dirección de memoria, por lo tanto estaría guardandose el valor en cualquier lado y no en el vector real...
El hecho que no haya crasheado el programa con eso sería raro habría que depurarlo para ver bién donde quedó guardado realmente el código ingresado...


B#
El problema no está en el registro, el problema está en la búsqueda, porque si corres el programa en tu entorno, podrás observar que, al ingresar un código previamente ingresado y compararlo, el programa además de mostrar el nombre del producto al que le pertenece el código, también imprime otros dos mensajes del else
#13
Tengo este problema al comparar cadenas de caracteres. A la hora de buscar un código previamente ingresado en el arreglo, este imprime el mensaje "No existe" cuando únicamente ingreso uno de los códigos. Ejemplo:
Código ingresado en el segundo arreglo: cp020
Búsqueda: No Existe
'Nombre del producto'
No existe

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

void menu(){
printf("\t*****CONTROL DE INVENTARIO*****\n");
printf("1.-Listado del inventario actual\n2.-Busqueda de productos\n3.-Ingresos totales\n4.-SALIR\n");
printf("--------------------------------\n");
}

void salida(){
printf("Saliendo del programa... Hasta pronto!\n");
}
struct Inventario{
char codigo[10];
char nombre[25];
int cantidad;
float pventa;
};
int Registrar(Inventario x[], int i){
for(i=0;i<=2;i++){
printf("\tRegistrar productos\n");
printf("Producto #%d \n",i);
printf("Ingrese el codigo del producto: ");
gets(x[i].codigo);
fflush(stdin);
printf("\nIngrese el nombre del producto: ");
gets(x[i].nombre);
fflush(stdin);
do{
printf("\nIngrese la cantidad: ");
scanf("%d",&x[i].cantidad);
fflush(stdin);
}while(x[i].cantidad<=0);
do{
printf("\nIngrese el precio de venta: ");
scanf("%f",&x[i].pventa);
fflush(stdin); //Limpieza del buffer
}while(x[i].pventa<=0);
system("cls");
}
}
void Lista(int i, Inventario x[]){
for(int j=0;j<=2;j++){
printf("   %s    %s        %d      %0.2f \n",x[j].codigo, x[j].nombre, x[j].cantidad, x[j].pventa);
}
}
char Busqueda(Inventario x[], int i){
char cod[10];
printf("Ingrese el codigo que desea buscar: ");
scanf("%s",&cod);
fflush(stdin);
for(int j=0;j<=2;j++){
if(strcmp(x[j].codigo, cod)==0){
printf("\nProducto: %s \n",x[j].nombre);
break;
}else{
printf("\nNo Existe\n");
break;
}
}
}
float Venta(Inventario x[], int i){
float total;
for(int j=0;j<=2;j++){
total+=x[j].cantidad*x[j].pventa;  //Primero, multiplica la cantidad por el precio y al final, se suma para el total del inventario vendedido.
}
printf("Ingreso total: %0.2f $ \n",total);
}
int main(){
struct Inventario prod[20];
int i=0, op;
bool salir = true;
Registrar(prod,i); //Llamamos a la funcion "Registrar"
do{
system("cls");
menu(); //Llamamos a la funcion "Menu"
do{
printf("\nSeleccione una opcion: ");
scanf("%d",&op);
}while(op<=0 || op>=5);
system("cls");
switch(op){
case 1:{
printf("\tINVENTARIO ACTUAL\n");
printf("   Codigo    Producto        Cantidad      Precio de Venta\n");
Lista(i,prod);
system("PAUSE");
system("cls");
break;
}
case 2:{
printf("\tBUSQUEDA\n");
Busqueda(prod, i);
fflush(stdin);
system("PAUSE");
system("cls");
break;
}
case 3:{
printf("\tVENTA TOTAL DEL INVENTARIO\n");
Venta(prod, i);
system("PAUSE");
system("cls");
break;
}
case 4:{
salida();
salir = false;
break;
}
}
}while(salir==true);
return 0;
}
#14
El problema que tengo es, que sólo imprime el nombre del primer producto con el código registrado, a la hora de buscar los demás códigos, me envía el mensaje que "No existe" cuando no es así. Aquí les dejo el código:


#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
void menu();
void menu(){
printf("\t*****CONTROL DE INVENTARIO*****\n");
printf("1.-Listado del inventario actual\n2.-Busqueda de productos\n3.-Ingresos totales\n4.-SALIR\n");
printf("--------------------------------\n");
}
void salida();
void salida(){
printf("Saliendo del programa... Hasta pronto!\n");
}
struct Inventario{
char codigo[10];
char nombre[25];
int cantidad;
float pventa;
};
int Registrar(Inventario x[], int i);
int Registrar(Inventario x[], int i){
for(i=0;i<=2;i++){
printf("\tRegistrar productos\n");
printf("Producto #%d \n",i);
printf("Ingrese el codigo del producto: ");
gets(x[i].codigo);
fflush(stdin);
printf("\nIngrese el nombre del producto: ");
gets(x[i].nombre);
fflush(stdin);
do{
printf("\nIngrese la cantidad: ");
scanf("%d",&x[i].cantidad);
}while(x[i].cantidad<=0);
fflush(stdin);
do{
printf("\nIngrese el precio de venta: ");
scanf("%f",&x[i].pventa);
}while(x[i].pventa<=0);
fflush(stdin);
system("cls");
}
}
void Lista(int i, Inventario x[]);
void Lista(int i, Inventario x[]){
for(int j=0;j<=2;j++){
printf("%s \t %s \t %d \t %0.2f \n",x[j].codigo, x[j].nombre, x[j].cantidad, x[j].pventa);
}
}
/*Aqui esta el problema*/
void Busqueda(char cod[10], Inventario x[], int i);
void Busqueda(char cod[10], Inventario x[], int i){
printf("Ingrese el codigo que desea buscar: ");
scanf("%s",&cod);
fflush(stdin);
for(int j=0;j<=2;j++){
if(strcmp(x[j].codigo,cod)==0){
printf("\nProducto: %s \n",x[j].nombre);
                        break;
}else{
printf("\nNo Existe\n");
                        break;
}
}
}
/*                                        */
float Venta(Inventario x[], int i);
float Venta(Inventario x[], int i){
float total;
for(int j=0;j<=2;j++){
total+=x[j].cantidad*x[j].pventa;
}
printf("Ingreso total: %0.2f \n",total);
}
int main(){
struct Inventario prod[20];
int i=0, op;
char cod[10];
bool salir = true;
Registrar(prod,i);
do{
system("cls");
menu();
do{
printf("\nSeleccione una opcion: ");
scanf("%d",&op);
}while(op<=0 || op>=5);
system("cls");
switch(op){
case 1:{
printf("\tINVENTARIO ACTUAL\n");
Lista(i,prod);
system("PAUSE");
system("cls");
break;
}
case 2:{
printf("\tBUSQUEDA\n");
Busqueda(cod, prod, i);
system("PAUSE");
system("cls");
break;
}
case 3:{
printf("\tVENTA TOTAL DEL INVENTARIO\n");
Venta(prod, i);
system("PAUSE");
system("cls");
break;
}
case 4:{
salida();
salir = false;
break;
}
}
}while(salir==true);
return 0;
}
#15
Bien, aquí está el código:


#include <stdlib.h>
#include <stdio.h>
struct Estudiantes{
int cedula;
char nombre[25];
char apellido[25];
int edad;
char profesion[20];
int nacimiento;
char direccion[50];
int telefono;
};
int main(int argc, char const *argv[])
{
struct Estudiantes estud[30];
int i;
printf("\tREGISTRO\n");
for(i=1;i<=30;i++){
printf("Estudiante #%d \n",i);
printf("Ingrese el nombre del estudiante: ");
scanf("%s",&estud[i].nombre);
fflush(stdin);
printf("Ingrese el apellido: ");
scanf("%s",&estud[i].apellido);
fflush(stdin);
printf("Ingrese la cedula: ");
scanf("%d",&estud[i].cedula);
fflush(stdin);
estud[i].nacimiento=estud[i].cedula%10000;
estud[i].edad=2017-estud[i].nacimiento;
printf("Ingrese la profesion: ");
scanf("%s",&estud[i].profesion);
fflush(stdin);
printf("Ingrese la direccion: ");
scanf("%s",&estud[i].direccion);
fflush(stdin);
printf("Ingrese el numero de telefono: ");
scanf("%d",&estud[i].telefono);
system("cls");
}

for(i=1;i<=30;i++){
printf("Nombre y Apellido: %s %s \n",estud[i].nombre, estud[i].apellido);
printf("Cedula: %d\n",estud[i].cedula);
printf("año de nacimiento: %d \n",estud[i].nacimiento);
printf("Edad: %d \n",estud[i].edad);
printf("Profesion: %s \n",estud[i].profesion);
printf("Telefono: %d \n",estud[i].telefono);
printf("\n \n");
}
return 0;
}
#16
Voy a probarlo. Cuando lo termine, mostraré el código.
#17
Necesito su ayuda con este pequeño problemilla que tengo. Tengo que ingresar los datos de una ID, y como los últimos cuatro dígitos contiene el año de nacimiento, no sé como capturar estos 4 dígitos e imprimirlos.

No adjunto código porque no tengo ni la más mínima idea de cómo capturar estos dígitos.
#18
Ese era mí problema; me ha servido de mucha ayuda tu consejo, te lo agradezco mucho. Aquí dejo el código con el problema resuelto:


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
int n, x, i, a=0, b=0, parcela[50][50];
do{
printf("Ingrese la cantidad de parcelas: ");
scanf("%d",&n);
}while(n<=0);
system("cls");
for(i=1;i<=n;i++){
printf("\nParcela #%d ",i);
do{
printf("\nIngrese la cantidad de naranjas: ");
scanf("%d",&parcela[i][1]);
}while(parcela[i][1]<=0);
do{
printf("Ingrese la cantidad de mandarinas: ");
scanf("%d",&parcela[i][2]);
}while(parcela[i][2]<=0);
a+=parcela[i][1];
b+=parcela[i][2];
parcela[i][x]=parcela[i][1]+parcela[i][2];
}
printf("\nTotal produccion naranjas: %d ",a);
printf("\nTotal produccion mandarinas: %d ",b);
for(i=1;i<=n;i++){
printf("\nParcela #%d: %d ",i, parcela[i][x]);
}
return 0;
}
#19
He hecho este programa en C, pero no puedo sumar las parcelas, sólo el total de naranjas y mandarinas. Espero que podaís ayudarme. Lo que quiero es, de 'n' parcelas, imprimir el total de cada una. Aquí mi programa:


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
int n, i, j, a=0, b=0, parcela[50];
do{
printf("Ingrese la cantidad de parcelas: ");
scanf("%d",&n);
}while(n<=0);
system("cls");
for(i=1;i<=n;i++){
printf("\nParcela #%d ",i);
do{
printf("\nIngrese la cantidad de naranjas: ");
scanf("%d",&parcela[i]);
}while(parcela[i]<=0);
do{
printf("Ingrese la cantidad de mandarinas: ");
scanf("%d",&parcela[j]);
}while(parcela[j]<=0);
a=a+parcela[i];
b=b+parcela[j];
parcela[n]=parcela[i]+parcela[j];
}
printf("\nTotal produccion naranjas: %d ",a);
printf("\nTotal produccion mandarinas: %d ",b);
for(i=1;i<=n;i++){
printf("\nParcela #%d: %d ",i, parcela[n]);
}
return 0;
}



· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex
#20
Programación C/C++ / Re: Problema en C
28 Septiembre 2017, 02:09 AM
He solucionado yo mismo el problema. Se los dejo aquí abajo por si alguien no sabía cómo hacerlo:


#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
int i, j, mat[7][50], N, total, mayor=0, x=0;
char value;
bool salir = true;
do{
system("cls");
do{
printf("Cantidad de vacas: ");
scanf("%d",&N);
}while(N<=0);
system("cls");
for(i=1;i<=N;i++){
printf("Vaca #%d \n",i);
for(j=1;j<=7;j++){
do{
printf("Cantidad de leche en el dia #%d \n",j);
scanf("%d",&mat[i][j]);
}while(mat[i][j]<=0);
}
mat[i][8]=mat[i][1]+mat[i][2]+mat[i][3]+mat[i][4]+mat[i][5]+mat[i][6]+mat[i][7];
total=total+mat[i][8];
if(mat[i][8]>mayor){
mayor=mat[i][8];
x=i;
}
system("cls");
}
printf("La vaca que produjo mas leche fue la #%d \n",x);
for(i=1;i<=N;i++){
printf("Vaca #%d = %d lts \n",i, mat[i][8]);
}
printf("\nTotal de produccion: %d lts \n",total);
do{
printf("\n\n Desea continuar? [S/N]: ");
scanf("%s",&value);
}while((value!='S') && (value!='s') && (value!='N') && (value!='n'));
printf("\n");
if(value=='n' || value=='N'){
salir = false;
}
}while(salir==true);
system("PAUSE");

return 0;
}