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 - Kenji-chan

#21
En la creacion de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos que serian muy dificil de describir en los tipos de datos primitivos, esta es la situacion en la que debemos aprovecharnos de las caracteristicas que hacen al lenguaje C especial, o sea el uso de estructuras y punteros.

Una estructura contiene varios datos. La forma de definir una estructura es haciendo uso de la palabra clave struct. Aqui hay ejemplo de la declaracion de una estructura:


struct mystruct{
     int int_member;
     double double_member;
     char string_member[25];
} variable;


esto es algo que podemos utilizar para mejorar el codigo


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

#define p printf
#define cls system("cls");

const int max = 3;

typedef struct{
char nombre[20];
char fecha[20];
char numero[20];
float saldo;
}_persona;

void agregar(_persona* personas);
void mostrar(const _persona* personas);


int main(int argc, char* argv[]){
int op, opc=0;
_persona personas[max];
do{
cls;
p("1.Agregar saldos\n");
p("2.-Ver saldos\n");
p("3.-Buscar Saldos\n");
p("4.-Modificar saldos\n");
p("5.-Salir\n");
p("Que opcion desea ejecutar?\n ");
scanf("%d",&op);

switch(op){
case 1:
agregar(personas);
break;
case 2:
mostrar(personas);
break;
case 3:
p("Ha elegido Modificar saldos...\n");
p("Digite el numero de cuenta sobre el cual desea modificar los datos");
break;
}
}while(opc != 5);
}

void agregar(_persona* personas){
cls;
int i;
for(i=0; i<max; i++){
p("Digite su nombre: ");
fflush(stdin);
scanf("%s", personas[i].nombre);
p("Digite su num. de cuenta: ");
fflush(stdin);
scanf("%s", personas[i].numero);
p("Digite la fecha(dd-mm-aaaa)");
fflush(stdin);
scanf("%s", personas[i].fecha);
p("Digite el primer saldo:%c",36);
fflush(stdin);
scanf("%f",&personas[i].saldo);
p("Su primer saldo es de: %c%.2f\n",36,personas[i].saldo);
}
}

void mostrar(const _persona* personas){
cls;
int i;
p("Ha elegido ver los saldos...\n");
for(i=0; i<max; i++){
p("Nombre: %s \n",personas[i].nombre);
p("Numero de cuenta %s \n:",personas[i].numero);
p("Su saldo es de: %c%.2f\n",36,personas[i].saldo);
}
}



explicacion del codigo:

en la linea 7 defino una constante que determinara la longitud de mi array
const int max = 3;

de la linea 9 a la 14 definimos la estructura de datos que utilizaremos como un nuevo tipo de variable

typedef struct{
char nombre[20];
char fecha[20];
char numero[20];
float saldo;
}_persona;


en la linea 22 usamos nuestra nueva variable y la hacemos un array

_persona personas[max];// variable de tipo _persona


en las funciones agregar y mostrar es algo que ya sabes como se hace creo...
#22
en la implementacion de la función te dejas la apertura del bloque de código

int cuentav(char *s)


cuando debería ser ha si


int cuentav(char *s){
#23
en cada caso te falto poner al final los break,
el caso es que hay que mejorar el código ya que de la forma en que esta implementado es fácil equivocarse
#24
primero tenemos que arreglar el código trata de explicarme que es lo que intentas hacer con lo que ya tienes echo
#25
pon tu código y tus dudas para que podamos ayudarte
#26
linea 24 falta mandar la variable por referencia


scanf("%f",emp[e].salario);
#27
solo tienes que utilizar la funcion void *malloc(size_t size) para reservar la memoria y void free(void *ptr) para liberarla

ejemplo


int* filas = (int*)malloc(sizeof(int)*num);// reservamos memoria
  int i;
  for(i=0; i<num; i++){
    filas[i] = i+1;
  }
  free(filas);//liberamos memoria


#28
en realidad para pasar a mayúsculas usando el código ascii hay que restarle 32 ya que esa es la la separación que tiene la 'A'(65) de la 'a'(67)

puedes hacer una función que se que se llame upper(char* str) que reciba un string y le reste 32  a cada carácter luego puedes tratar los casos especiales como son los acentos y la ñ en la misma función claro
#29
tu método de ordenamiento esta mal implementado


void ordenar(){
    for(j = 0; j <4; j++){
        for(i = 0; i < 4-j; i++){
    if(v[i] > v[i+1]){
        aux = v[i+1];
v[i+1] = v[i];
v[i] = aux;
    }
        }
    }
}
#30
este es el método que yo he utilizado


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

int eleva10(int expo);

int main(int argc, char *argv[]) {
int num, aux, digitos, i;
int* inverso = NULL;

aux = 1;
digitos = 1;

fprintf(stdout, "introduzca un numero: ");
fscanf(stdin, "%d", &num);

while((aux*=10) < num) digitos++;
inverso = (int*) malloc(digitos*sizeof(int));

aux = num;
for(i=digitos; i>0; i--){
inverso[i-1] = aux/eleva10(i);
aux %= eleva10(i);
}

for(i=0; i<digitos; i++){
fprintf(stdout, "%d", inverso[i]);
}

return 0;
}

int eleva10(int expo){
int ret = 1;
if(expo == ret) return ret;
for(int i=0; i<expo-1; i++) ret *= 10;
return ret;
}


he creado la función int eleva10(int expo)porque la pow no me funciona bien XD