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 - Rhythmical

#1
Programación C/C++ / Problema con mostrar listado
16 Noviembre 2017, 06:49 AM
Hola a todos, bueno mi problema es el siguiente y es que al ingresar N variables al mostrar el listado me sale infinitas veces como si al valor N lo tomase como otro numero y no se  a que se debe el problema si ya aplique el rewind y el fread.

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

typedef char cadena [50];


struct registro

{
int numcount;
cadena type;
float saldo;
};

void charge(int n, registro reg, FILE*archi)
{
int com1, com2, com3, com4, com5, com6, com7, com8;

cadena cad1 = "c";
cadena cad2 = "C";
cadena cad3 = "a";
cadena cad4 = "A";
cadena cad5 = "t";
cadena cad6 = "T";
cadena cad7 = "s";
cadena cad8 = "S";

for(int i=0; i<n ;i++)
{
printf("\n**REGISTRO NRO: %d**",i+1);
printf("\nIngrese NRO de cuenta: "); scanf("%d",&reg.numcount);
printf("\nIngrese TIPO de cuenta: "); _flushall();gets(reg.type);
printf("\nIngrese saldo previo: "); scanf("%f",&reg.saldo);

com1 = strcmp(reg.type,cad1);
com2 = strcmp(reg.type,cad2);
com3 = strcmp(reg.type,cad3);
com4 = strcmp(reg.type,cad4);
com5 = strcmp(reg.type,cad5);
com6 = strcmp(reg.type,cad6);
com7 = strcmp(reg.type,cad7);
com8 = strcmp(reg.type,cad8);

if (com1 == 0 || com2 == 0)
{
printf("\nCUENTA CORRIENTE");
}
if (com3 == 0 || com4 == 0)
{
printf("\nCAJA DE AHORRO");
}
if (com5 == 0 || com6 == 0)
{
printf("\nPLAZO FIJO 30 DIAS");
}
if (com7 == 0 || com8 == 0)
{
printf("\nPLAZO FIJO 60 DIAS");
}
fwrite(&reg,sizeof(reg),1,archi);
}//for
}

void show(int n, registro reg, FILE *archi, float &ns)
{
int com1, com2, com3, com4, com5, com6, com7, com8;
cadena cad1 = "c";
cadena cad2 = "C";
cadena cad3 = "a";
cadena cad4 = "A";
cadena cad5 = "t";
cadena cad6 = "T";
cadena cad7 = "s";
cadena cad8 = "S";

system ("cls");
printf("\nSE MOSTRARA LA LISTA DE LOS DATOS\n");
system ("pause");

rewind(archi);
fread(&reg, sizeof(reg),1,archi);

while (!feof(archi))
{
printf("\nNRO DE CUENTA: %d", reg.numcount);
printf("\nTIPO: ");puts(reg.type);

com1 = strcmp(reg.type,cad1);
com2 = strcmp(reg.type,cad2);
com3 = strcmp(reg.type,cad3);
com4 = strcmp(reg.type,cad4);
com5 = strcmp(reg.type,cad5);
com6 = strcmp(reg.type,cad6);
com7 = strcmp(reg.type,cad7);
com8 = strcmp(reg.type,cad8);

if (com1 == 0 || com2 == 0)
{
ns = reg.saldo;
printf("\nSaldo actual: %.2f", ns);
}
else
{
if (com3 == 0 || com4 == 0)
{
ns = reg.saldo + (reg.saldo*0.03);
printf("\nSaldo actual: %.2f", ns);
}
else
{
if (com5 == 0 || com6 == 0)
{
ns = reg.saldo + (reg.saldo*0.05);
printf("\nSaldo actual: %.2f", ns);
}
else
{
if (com7 == 0 || com8 == 0)
{
ns = reg.saldo + (reg.saldo*0.09);
printf("\nSaldo actual: %.2f", ns);
}
}
    }
    }
    fread(&reg,sizeof(reg),1,archi);
}
}

main()
{
FILE *archi;
int n;
registro reg;
float ns = 0.0;

archi = fopen("account.dat", "w+b");

if(archi = NULL)
{
printf("\nLo sentimos, el archivo no existe");
system ("PAUSE");
exit(1);
}
printf ("\nIngrese la N cantidad de archivos ");scanf("%d", &n);

charge(n,reg,archi);
show(n,reg,archi,ns);

fclose(archi);

}


como siempre espero su ayuda, Saludos!.
#2
Programación C/C++ / Ayuda con esto.
2 Noviembre 2017, 23:57 PM
Buenas a todos! Pues mi problema con el C es el tema de archivos, en el ejercicio que tengo me piden que halle la media de los numeros ingresados pero al compilar me da el resultado 0.
Este es el código.

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


void ValoryProm (FILE *Archivo)
{
int N=0 , ent=0, suma = 0;
int promed =0, other = 0;
float promedio = 0.0;

printf("Ingrese la cantidad de valores que desea ingresar: \n");scanf("%d", &N);

for(int i=0; i<N;i++)
{

printf("Ingrese valores enteros entre 10-130: \n");
scanf("%d", &ent);
fwrite(&ent, sizeof(int), 1, Archivo);

if(ent >= 12 && ent <= 15 || ent >=50 && ent<=111)
{
promed ++;
}
else
{
other++;
}
suma+=ent;
}
promedio = promed*100/N;
printf("El promedio es: %.2f\n", promedio);
}

float Media(FILE* Archivo, int N)
{
float media = 0.0;int suma;

media = (float)suma/N;

return media;
}

main()
{
FILE *Archivo;
float media;
float Promedio = 0.0;
int N = 0;
 

Archivo = fopen("numeros.DAT","w+b");

 if (Archivo == NULL)
 {
   printf("Error. \n");
   exit(1);          
 }
     
 ValoryProm(Archivo);
 
 media = Media(Archivo, N);
 printf("La media de los resultados es: %.2f", media);
 fclose(Archivo);
 printf("\n\n");
 system("pause");      

}


Espero su ayuda, saludos.
#3
Programación C/C++ / No me compila el for en C
30 Septiembre 2017, 06:43 AM
Holas a todos, espero que esten bien, mi siguiente problema es que al compilar el programa solamente me muestra lo primero pero lo que son los for lo omite finalizando el programa.



este es el código

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

typedef char cadena[50];

struct RegistroFecha
{
int day;
int month;
int year;

};

struct RegistroEmpleado
{
int   legajo;
cadena apynom;
cadena cargo;
float sueldo;
RegistroFecha ingreso;
RegistroFecha born;
};

const int employer = 10;

main()
{
int N=0;
RegistroEmpleado vec[employer];
printf("\nIngrese la cantidad de empleados: ");scanf("%d",&N);

for(int i=0;N<=i;i++)
{
system("cls");
printf("\nEmpleado Nro %d", i+1);
printf("\nLegajo: ");scanf("%d",&vec[i].legajo);
printf("\nApellido y nombre: "); _flushall();gets(vec[i].apynom);
printf("\nCargo: "); _flushall();gets(vec[i].cargo);
printf("\nSueldo: ");scanf("%f",&vec[i].sueldo);
printf("\n**Fecha de ingreso**: ");
printf("\nDia: ");scanf("%d",&vec[i]. ingreso.day);printf(" Mes: ");scanf("%d",&vec[i].ingreso.month);printf(" A%co");scanf("%d",&vec[i].ingreso.year);
printf("\n**Fecha de nacimiento**: ");
printf("\nDia: ");scanf("%d",&vec[i]. born.day);printf(" Mes: ");scanf("%d",&vec[i].born.month);printf(" A%co");scanf("%d",&vec[i].born.year);
}

for(int i=0;N<=i;i++)
{
printf("\nEmpleado Nro %d", i+1);
printf("\nLegajo: ",vec[i].legajo);
printf("\nApellido y nombre:" ,vec[i].apynom);
printf("\nCargo: ",vec[i].cargo);
printf("\nSueldo: ",vec[i].sueldo);
printf("\n**Fecha de ingreso**: ");
printf("\n%d/%d/%d" ,vec[i]. ingreso.day,vec[i].ingreso.month,vec[i].ingreso.year);
printf("\n**Fecha de nacimiento**: ");
printf("\n%d/%d/%d" ,vec[i]. born.day,vec[i].born.month,vec[i].born.year);
}
printf("\n\n");
system("pause"); 
}


Espero su ayuda, saludos cordiales.
#4
Buenos días a todos/as, soy nuevo en este foro y tambien en el mundo de la programación C. Pues tengo un problema con mostrar la matriz en una funcion void, ya que al compilar solamente me muestra la primera función pero la segunda solo el printf del comienzo y lo demás no aparece, quisiera saber cual es el problema. Este
Como veran este el código, por lo cual nose a que se debe esto.


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

void charge(int matrix[50][50], int M, int N);
void show(int matrix[50][50], int M, int N);
main(void)
{
int matriz[50][50], M, N;

charge(matriz,M,N);
show(matriz, M, N);
}
void charge(int matrix[50][50], int M, int N)
{
   int i, j;
   printf("\n**INGRESE NRO DE FILAS **:\n");scanf("%d",&M);
   printf("\n**INGRESE NRO DE COLUMNAS**:\n");scanf("%d",&N);
   for(j=0;j<M;j++)
   {
    for(i=0;i<N;i++)
    {
    printf("\n**INGRESE UN VALOR SUPERIOR A CERO [%d][%d]**:\n",i,j);scanf("%d",&matrix[j][i]);   
}//for(i)
   }//for(J)
}//void

void show(int matrix[50][50], int M, int N)

{
   int i, j;
   
   printf("\n***MATRIZ MXN***\n");
   for(j=0;j<M;j++)
   {
    for(i=0;i<N;i++)
    {
    printf("|%d|", matrix[j][i]);
}//for(i)
printf("\n");
   }//for(J)
}//void


Espero su ayuda! Saludos cordiales!