elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 3 4 [5]
41  Programación / Programación C/C++ / funciòn en C en: 4 Julio 2018, 00:09 am
Buenas, ando necesitando ayuda para entender una función en c que imprimir un triangulo rectángulo de asteriscos de la siguiente manera:
      *
    **
  ***
****
el codigo ya esta resuelto pero no lo entiendo,es el siguiente:

void ImprimirCaracter(char caracter);
void ImprimirCaracteres(char caracteres,int veces);
void ImprimirFila(char caracter, int vecesespacio,int vecescaracter);

int main()
{
int f,esp;
char c;
printf("Ingrese el numero de filas:");
scanf("%d",&f);
fflush(stdin);
printf("Ingrese el caracter: ");
scanf("%c",&c);
fflush(stdin);
esp=f-1;
ImprimirFila(c,esp,f);
}
void ImprimirCaracter(char caracter)
{
printf("%c",caracter);
}

void ImprimirCaracteres(char caracteres,int veces)
{
int i;
for(i=0;i<veces;i++)
{
    ImprimirCaracter(caracteres);
}
}

void ImprimirFila(char caracteress, int vecesespacio,int vecescaracter)
{
    int h=1,j;

    for(j=0;j<vecescaracter;j++)
    {
        ImprimirCaracteres(' ',vecesespacio);
        ImprimirCaracteres(caracteress,h);
        h++;
        vecesespacio--;
        printf("\n");
    }
}
Para empezar la variable veces, no la ingresa en ningún momento..., eso significa que la esta pasando como parámetro?,  tampoco entiendo porque usa la variable esp... esp=f-1, si ingreso por teclado 4 esp=4-1=3 eso significa 3 espacios en blanco?,lo mismo ocurre con veces caracter y vecesespacio... las usa pero no las ingresa en ningún momento
42  Programación / Programación C/C++ / Re: problema de cadenas en c en: 13 Mayo 2018, 01:25 am
si pero dejar así el programa es muy poco elegante ya que la longitud del estring cad2 se ve reducida por 80-(n_vocales) alterando su tamaño original paa esto te propongo 2 soluciones, la primero usar un carácter que se use poco o no se use en una oración como por ejemplo un '*' de modo que
Código
  1. int main(){
  2.    int i=0,j,k,l=0;
  3.    char cad1[80];
  4.    char cad2[80];
  5.    gets(cad1);
  6.    while(cad1!='\0'){
  7.        i++;
  8.    }
  9.  
  10.        for(j=0;j<i;j++){
  11.            if(cad1[j]=='a'||cad1[j]=='e'||cad1[j]=='i'||cad1[j]=='o'||cad1[j]=='u'||cad1[j]=='A'||cad1[j]=='E'||cad1[j]=='O'||cad1[j]=='U'||cad1[j]=='I'){
  12.                cad1[j]='*';//-> a qui haces que cad1[j] sea igual a '*'
  13.            }
  14.        }
  15.        for(k=0;cad1[k];k++){
  16.            if(cad1[k] != '*'){
  17.                cad2[l]=cad1[k];
  18.                l++;
  19.                cad2[l]='\0';
  20.            }
  21.        }
  22.  
  23.        puts(cad2);
  24.  
  25.  
  26.  
  27. return 0;
  28. }
  29.  

la segundo consiste en cambiar un poco la filosofía del programa

quita_vocales.c
Código
  1. #include <stdio.h>
  2.  
  3. int main(int arv, char* argc[]){
  4. int i = 0, j = 0;
  5. char cad1[80], cad2[80];
  6.  
  7. gets(cad1);
  8.  
  9. while(cad1[i] != '\0'){
  10. if(cad1[i] == 'a' || cad1[i] == 'A' ||
  11.   cad1[i] == 'e' || cad1[i] == 'E' ||
  12.   cad1[i] == 'i' || cad1[i] == 'I' ||
  13.   cad1[i] == 'o' || cad1[i] == 'O' ||
  14.   cad1[i] == 'u' || cad1[i] == 'U'){
  15. i++;
  16. continue;
  17. /*mientras sea una vocal pasamos de ella*/
  18. }
  19. else{
  20. cad2[j] = cad1[i];
  21. j++;
  22. cad2[j] = '\0';
  23. /*si no es una vocal la almacenamos en cad2*/
  24. }
  25. i++;
  26. }
  27.  
  28. puts(cad2);
  29.  
  30. return 0;
  31. }
  32.  

aquí como veras envés de sacar la longitud del estring cad1 sacamos las vocales minetras escaneamos el string cad1

la sentencia continue
hola muy buena la segunda solución, no sabía de la sentencia continue, en la facu en el primer modulo no se dan funciones, es todo con diagrama de flujo punteros, arreglos y cadenas. En el segundo si damos todo lo que es memoria dinámica, funciones y demas...
pero creo que voy a tener que rendir de nuevo la primer parte  :( gracias igual seguramente en el futuro postee mas dudas
43  Programación / Programación C/C++ / Re: problema de cadenas en c en: 12 Mayo 2018, 10:18 am
hola no lo decidí dejar asi como está, porque si pongo el if con cad[j}!=' ' ocurre que si el usuario me digita una frase con espacios por ejemplo "hola que tal", el programa me devuelve hlqtl, y no entendería que es lo que hace, en cambio si directamente copio el contenido de cad1 en cad2 me devuelve hl q tl, quedaria más claro así
44  Programación / Programación C/C++ / Re: problema de cadenas en c en: 12 Mayo 2018, 07:55 am
int main()
{
    int i=0,j,k,l=0;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<i;j++)
        {
            if(cad1[j]=='a'||cad1[j]=='e'||cad1[j]=='i'||cad1[j]=='o'||cad1[j]=='u'||cad1[j]=='A'||cad1[j]=='E'||cad1[j]=='O'||cad1[j]=='U'||cad1[j]=='I')
            {
                cad1[j]=' ';
            }
        }
        for(k=0;cad1[k];k++)
        {
            cad2[l]=cad1[k];
            l++;
            cad2[l]='\0';

        }

        puts(cad2);



return 0;
}
hola kenji gracias por la ayuda ya lo pude resolver, te hago una última pregunta el hecho de poner cad2[l]='\0'; implica que eso se va a agregar al final de la copia de cad1 en cad 2?
45  Programación / Programación C/C++ / Re: problema de cadenas en c en: 11 Mayo 2018, 21:17 pm
he encontrado 2 problemas aqui
Código
  1. for(j=0;j<=i;j++){/*-> a qui en j<=i, hola tiene 4 caracteres y es lo que vale i despues de salir del while, y cad1 tine 4 indices empezando desde 0
  2. por lo tano cad1[0], cad1[1], cad1[2], cad1[3] son cuatro pero si le decimos que sea igual a cuatro nos incrementa en uno el indice cad1[4] que nos da un total de 5*/
  3.            if(cad1[j]=='a'){
  4.                cad1[j]=' ';
  5.            }
  6.        }
  7. for(j=0;j<=i;j++){//> lo mismo aqui
  8.           if(cad1[j]!=' '){
  9.            cad2[j]=cad1[j];
  10. /*aqui el string cad2[j] es sustituido por cad1[j], pero nunca pone el '\0'*/
  11.           }
  12.        }
  13.  
entendí las 2 primeras correciones pero la del '\0' no la entendí,  no se supone que cuando recorro desde j=0 hasta j<i estaría recorriendo hasta el final de la cadena?, o el '\0' sirve también como un break? perdon por mi lentitud estoy hecho percha necesito una siesta
46  Programación / Programación C/C++ / Re: problema de cadenas en c en: 11 Mayo 2018, 20:45 pm
int main()
{
    int i=0,j;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<=i;j++)
        {
            if(cad1[j]=='a')
            {
                cad1[j]=' ';
            }
        }

        for(j=0;j<=i;j++)
        {
           if(cad1[j]!=' ')
          {
            cad2[j]=cad1[j];
           }
        }

        puts(cad2);



return 0;
}

tenes razón pero ahora pasa lo siguiente: cuando pongo por ejemplo hola me imprime hol, hasta ahi va todo bien si pongo armario me pone prm ?¿, si pongo grande me devuelve gr4nde es como si evaluara la vocal pero de mala manera, que opinas de la lógica de mi código es buena o es mala? tal vez el problema esta ahí gracias de nuevo, estoy editando el comentario pero sigue sin aparecer el
47  Programación / Programación C/C++ / Re: problema de cadenas en c en: 11 Mayo 2018, 20:30 pm
int main()
{
    int i=0,j;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<=i;j++)
        {
            if(cad1[j]=='a')
            {
                cad1[j]=' ';
            }
        }

        for(j=0;j<=i;j++)
        {
           if(cad1[j]!=' ')
          {
            cad2[j]=cad1[j];
           }
        }

        puts(cad2);



return 0;
}
hola kenji gracias por responder, pero lo acabo de modificar y me sigue sin funcar en el codeblocks, es decir cuando  meto la palabra la muestra en pantalla y no ocurre nada el el programa queda estatico.

pd:hoy rendí y creo queme rompieron el traste :(

48  Programación / Programación C/C++ / problema de cadenas en c en: 11 Mayo 2018, 06:10 am
hola que tal? tengo un problema en c que dice lo siguiente: cree dos cadenas cad1 y cad2 que puedan alamacenar hasta 80 caracteres, y cad1 se pueda inicializar por teclado, copie el contenido den cad1 en cad2 sin que copie el contenido de las vocales, aclaración: no se pueden usar funciones,no c porque mo código no funciona, yo hice lo siguiente:
int main()
{
    int i,j;
    char cad1[80];
    char cad2[80];
    gets(cad1);
    while(cad1!='\0')
    {
        i++;
    }

        for(j=0;j<=i;j++)
        {
            if(cad1[j]=='a') (estoy probando con una sola vocal,ya se que van las otras)
            {
                cad1[j]=' ';
            }
        }
        for(j=0;j<=i;j++)
        {
           if(cad1[j]!=' ')
          {
            cad2[j]=cad1[j];
           }
        }

        puts(cad2);



return 0;
}

pd: no entiendo porque un estudiante de ingeneiría industrial tiene que estudiar c  :-[




Páginas: 1 2 3 4 [5]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines