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

#1
Programación C/C++ / Re: [DUDA] Punteros
24 Marzo 2014, 19:08 PM
Muchísimas gracias a todos por el esfuerzo que habéis hecho con mi problema.

¡Jo! cómo me gustaría a mi tener esa habilidad que tenéis vosotros de resolver problemas cómo si se tratase de abrir un frasco de garbanzos xDD

Le pongo todas las ganas que puedo pero es que no hay manera de que me entre, debo de ser tonto o no se... U.u''

Nuevamente, daros las gracias a todos y cada  uno de vosotros por ser mejor que mi profe (espero que no llegue a leer esto) xDD

Un saludo :D
#2
Programación C/C++ / Re: [DUDA] Punteros
24 Marzo 2014, 13:55 PM
Cita de: eferion en 24 Marzo 2014, 13:46 PM
PD.: si alguien se apiada de mí, acepto donaciones encantado XDDDD

No iría nada mal y menos en los tiempos que corren xDD

Bueno, regresando a mi cruda realidad, me gustaría que me echaras un cable para ayudarme a detectar el/los problema/s que pueda tener mi programa.

Buscando por éste fantástico foro, encontré éste ejemplo que es la mar de simple (lo entiendo perfectamente): http://foro.elhacker.net/programacion_cc/duda_contador_de_vocales_mediosolucionado_xd-t312146.0.html;msg1551059#msg1551059

Pero veo mi ejercicio y la declaración de variables que hay que hacer por narices y no se cómo continuar :(

Un saludo y muchas gracias :D
#3
Programación C/C++ / Re: [DUDA] Punteros
24 Marzo 2014, 13:34 PM
Hola eferion,

Gracias por tu explicación. El ejercicio anterior di que me funciona correctamente, el problema es que había echo un copy paste de una versión antigua. Faltaba inicializar el vector vocales:


int vocales[5]={0};


Respecto el tema de los punteros más o menos entiendo que es lo que hago mal, pero no consigo arreglar el problema que tengo :( Soy un negado para la programación y me cuesta bastante entender las cosas.

Se que no eres un profesor (al menos en el foro) y no recibes un salario por ello, pero me gustaría que me ayudases otro poco, sí es posible, para acabar de comprender el ejercicio.

Un saludo y muchas gracias :D
#4
Programación C/C++ / [DUDA] Punteros
24 Marzo 2014, 12:25 PM
Hola buenos días,

Llevo todo el fin de semana dándole vueltas a un ejercicio de punteros que no hay forma humana de que me funcione correctamente, el caso es que en el tema de punteros ando un poco pez, por lo que me debería de poner las pilas.

El ejercicio en cuestión, dice lo siguiente: Dada una frase, se contará el numero de as, es, is, os y us que tiene. La cantidad de cada vocal se almacenará en un vector de 5 enteros. Se
mostrará una estadística de vocales.

La manipulación de la frase y del vector se hará con punteros.
La declaración de variables será así:
(···)
char frase[256], *pf=frase;
int vocales[5];
int * pv;
pv = &vocales[0];
(···)

Ahora bien, os comento que haciendo el ejercicio sin punteros, me funciona perfectamente, dejo el código para que sirva de ejemplo:


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

//Prototipo
void cuentavocales(char v[]);

int main()
{
 char frase[256];
 cuentavocales(frase);
 
 system("PAUSE");
 return 0;
}

//Función que cuenta les vocales de la frase
void cuentavocales(char frase[])
{
    int i=0,vocales[5]={0};
   
    printf("Introduce una frase: \n");
    gets(frase);
    for(i=0;i<strlen(frase);i++)
{
          if(frase[i]=='a'|| frase[i]=='A') vocales[0]++;
          else if(frase[i]=='e' || frase[i]=='E') vocales[1]++;
          else if(frase[i]=='i' || frase[i]=='I') vocales[2]++;
          else if(frase[i]=='o' || frase[i]=='O') vocales[3]++;
          else if(frase[i]=='u' || frase[i]=='U') vocales[4]++;
   }
//Mostramos los resultados por pantalla
printf("Estadística \n");
printf("as: %d \n",vocales[0]);    
printf("es: %d \n",vocales[1]);
printf("is: %d \n",vocales[2]);
printf("os: %d \n",vocales[3]);    
printf("us: %d \n",vocales[4]);
printf("\n TOTAL: %d\n",vocales[0]+vocales[1]+vocales[2]+vocales[3]+vocales[4]);
}


Ahora bien, pasamos al apartado de los punteros... No se si lo que he hecho está bien o es una barbaridad...


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

//Prototipo
void cuentavocales(char v[5]);

int main()
{
 char frase[256],*pf=frase;
 cuentavocales(frase);
 
 system("PAUSE");
 return 0;
}

//Función que cuenta las vocales de la frase
void cuentavocales(char frase[5])
{
    int i=0,vocales[5]={0};
    int * pv;
    pv = &vocales[0];
   
    printf("Introduce una frase: \n");
    gets(frase);
    for(i=0;i<strlen(frase);i++)
{
  if(frase[i]=='a'|| frase[i]=='A') {
  pv++;
  }
         
  else if(frase[i]=='e' || frase[i]=='E') {
  pv=pv+1;
  pv++;
  }
         
  else if(frase[i]=='i' || frase[i]=='I') {
  pv=pv+2;
  pv++;
  }
 
  else if(frase[i]=='o' || frase[i]=='O') {
  pv=pv+3;
  pv++;
  }
         
  else if(frase[i]=='u' || frase[i]=='U'){
  pv=pv+4;
  pv++;
  }
   }

//Mostramos los resultados por pantalla
printf("Estadística \n");
printf("as: %d \n",*pv);    
printf("es: %d \n",*(pv+1));
printf("is: %d \n",*(pv+2));
printf("os: %d \n",*(pv+3));  
printf("us: %d \n",*(pv+4));
printf("\n TOTAL: %d\n",*pv+*(pv+1)+*(pv+2)+*(pv+3)+*(pv+4));
}


Compilar, compila pero da unos resultados que no son nada correctos xD

Espero que me podáis echar un cable.

Un saludo :D
#5
Programación C/C++ / Re: [DUDA] Matrices
13 Marzo 2014, 12:23 PM
Nuevamente, muchas gracias eferion.

Un saludo :D
#6
Programación C/C++ / Re: [DUDA] Matrices
13 Marzo 2014, 12:14 PM
Hola amchacon y eferion,

¡Muchas gracias por vuestra ayuda!

Ya me funciona el programa perfectamente, visto así, es mucho más fácil resolverlo con una matriz de chars que no con un switch jajaja

Una ultima cosilla, para que quede "mas lógico/normal", ¿no hay alguna forma que el 1 corresponda al lunes y no al 0 y así sucesivamente?

Un saludo :D  
#7
Programación C/C++ / [DUDA] Matrices
13 Marzo 2014, 11:11 AM
Hola buenos días, tengo un ejercicio que hacer en dos partes, una usando if/switch y otra sin ellos, es decir, usando una matriz de chars.

El ejercicio dice tal que así (segunda parte):
Haz un programa que muestre el nombre del día de la semana a partir de su código numérico ( 1=lunes, 2=martes....7=domingo), pero sin usar ningún if/switch!

De buenas a primeras, se que habría que hacer algo tal que así:

char frases[4][15] = {
"Primera frase",
"Segunda frase",
"Hola mundo",
"Y para acabar"
};


¿Pero luego cómo hago para que el usuario escoja un numero y se muestre el día de la semana que corresponde?

Usando un switch sería la mar de fácil:

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

int main() {
int dia;

printf("¿Que numero de la semana quieres? \n");
scanf("%d",&dia);

switch(dia) {
case 1 :
printf("lunes \n");
break;
case 2 :
printf("martes \n");
break;
case 3 :
printf("miércoles \n");
break;
case 4 :
printf("jueves \n");
break;
case 5 :
printf("viernes \n");
break;
case 6 :
printf("sábado \n");
break;
case 7 :
printf("domingo \n");
break;
default :
printf("No existe \n");
}
system("PAUSE");
return 0;
}


Espero que me podáis echar un cable.

Un saludo :D
#8
Muchas gracias por tu ayuda aguml

¡Un saludo!
#9
Primero de todo pedir disculpas por mi ausencia, no quisiera dar a entender que he perdido interés y mucho menos abandonar el tema, simplemente he estado en una semana de exámenes y como buen estudiante me puse a hincar los codos jajaja

En su día sí que me urgía que me hacheáis un cable para poder ayudarme a resolver el problema, básicamente el problema que tengo con ese ejercicio es que al no usar un typedef en las estructuras no sé si como lo tengo planteado iba bien y menos aún el uso de registros dentro de otros (en clase no hicimos ningún ejercicio de esas características).

Como aclaración decirte que el ejercicio, según al tema que pertenecía no se debía de  resolver mediante la utilización de ficheros, por lo que lo suyo sería mediante el uso de vectores.

En cuanto al idioma, tal como habrás de deducido, soy catalán, sí que es verdad que parte del ejercicio lo traduje pero de la otra parte no me di cuenta, pido perdón por el despiste.

Con mucho gusto veré el link que me pasaste para que me sirva de ayuda, muchas gracias por tu tiempo y ganas.

¡Un saludo!
#10
Programación C/C++ / Necesito ayuda urgente
11 Junio 2013, 10:14 AM
Tengo este ejercicio y no se por donde cojerlo, tengo muy poco hecho, espero que me puedan ayudar:

Ejercicio:

STRUCTS:
1. Dados los siguientes registros:
struct departament{
char nom[30];
char capd[20];
int codi;
};

struct empleat{
char nom[30];
struct departament dept;
float sou;
int codi;
};

Escribe les funciones y el programa principal que servirán para introducir valores a cada campo de los registros y mostrar todos los campos.
Hacer un programa que permita hacer un mantenimiento de los datos de una empresa del estilo struct empleat empresa[MAXT]; Las operaciones serán las típicas de: dar de alta un empleado, dar de baja, listar, modificar los datos, consultar per código.

Lo que llevo hecho:


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

struct departament{
char nom[30];
char capd[20];
int codi;
};

struct empleat{
char nom[30];
struct departament;
float sou;
int codi;
};dept;

Departament omplir();
void mostrar(Departament dep);
int menu();

departament d;
empleat e;

int res=0,num=0,codi=0,codi_mostra,num_baixa=0;

do{
res=menu();

switch(res){
        case 1:
             codi=alta_client(&c);
             break;
        case 2:
             num=valida_codi(codi);
             break;
        case 3:
             codi_mostra=mostra_client(c);
             break;
        case 4:
             num_baixa=baixa_client(&c);
             
             break;
        case 5:
             
             break;
        case 6:
             
             return 0;
             break;      
        }


 }while(res != 6);
 system("PAUSE");
 return 0;
}


Departament omplir(){
       Departament d;
       printf("Introdueix el nom del departament");
       scanf("%d",&d.nom);
       fflush(stdin);
       printf("Introdueix el cap del departament");
       gets(d.capd);
       fflush(stdin);
       printf("Introdueix el codi");
       scanf("%lf",&d.codi);
       fflush(stdin);
       return d;
       }

int menu(){
   int num;
   do{
   printf("1-Donar d'alta\n2-Donar de baixa\n3-Llistar\n4-Modificar dades\n5-Consultar per codi");
   scanf("%d",&num);
   }while(num<0 || num>5);
   return num;
   
   }


Muchas gracias por la ayuda :)