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

#21
Programación C/C++ / cadenas y funciones
6 Agosto 2012, 18:06 PM
Hola he hecho este programa a base de dos funciones ( suprimir espacios , e invertir cadena) y finalmente copiando una cadena en otra y comparándolas trato de determinar si espalindromo, pero la última parte no me funciona; me podeis ayudar por favor?

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

char  matriz[30];
char matriz_alreves[30];

void suprimir_espacios (char m[]);
void invertir_cadena (char c[]);
void palindromo (char c[], char m[]);
main()
{

suprimir_espacios (matriz);
strcpy (matriz_alreves, matriz);
invertir_cadena (matriz_alreves);
palindromo (matriz_alreves, matriz);
   
   
getch();
}

void suprimir_espacios (char m[])
{
     int i, j;
     printf("Dime un texto conespacios por favor:");
     gets (m);
     
     for (i=0; i<strlen (m);i++)
     {
         m[i]= (tolower(m[i]));
         
         if (m[i]==' ')
         {
           for (j=i+1; m[j]!='\0'; j++)
           {
               m[j-1]=m[j];
           }
           m[j-1]='\0';
         }
         
      }
      printf("%s",m);
}
void invertir_cadena (char c[])
{
     int i, j;
     char aux[30];
     while (i>0)
     aux[j++]=c[--i];
}       
void palindromo (char c[], char m[])
{
if (strcmp(c,m)==0)

    printf("Es palindromo\n");
    else
    printf("No es palindromo\n");
     
}
#22
Programación C/C++ / Re: ¿ como se lee esto?
5 Agosto 2012, 17:14 PM
Muchas gracias
#23
Programación C/C++ / Re: ¿ como se lee esto?
5 Agosto 2012, 10:54 AM
Como se leeria la condición de dentro del bucle
si i igual a espacio, entonces .... (Es decir cual es el razonamiento)

gracias
#24
Programación C/C++ / ¿ como se lee esto?
5 Agosto 2012, 09:13 AM
   
for (i=0;i<strlen (c);i++)
  {
       if (c[i]==' ')
       {
       
          for ( j=i+1; c[j]!='\0';j++)
          {
              c[ j-1]=c[j];
             
          }

          c[j-1]='\0';
     }


Este codigo ¿ que significaría exactamente?
Para i=0 hasta el tamaño de la cadena, i, avanza
si hay un espacio
para j =i+1 hasta el final de la cadena j.....¿ Que quiere decir? ( se lo que hace que es eliminar espacios; pero como se recita)

muchas gracias
#25
Programación C/C++ / Re: separar funciones
1 Agosto 2012, 10:00 AM
Muchas gracias por tu ayuda y tu consejo
#26
Programación C/C++ / Re: separar funciones
27 Julio 2012, 23:16 PM
¿Así? (no funciona)

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

int matriz_aleatoria (int m[]);
int suma(int sum);

int main()
    {
    int matriz[3];
    int sum;
    srand (time(NULL));
    matriz_aleatoria (matriz);
    suma (sum);
    getch();
   
    }

int matriz_aleatoria (int m[])
{
int i;
    for (i=0;i<2;i++)
    {
    m[i]=(rand()%16);
    printf("%d",m[i]);
    }   
   
}

int suma (int s)
{
s= s + m[i];
printf("%d",s);   
}
#27
Programación C/C++ / Re: separar funciones
27 Julio 2012, 19:51 PM
 :o :o??
#28
Programación C/C++ / separar funciones
27 Julio 2012, 16:41 PM
Hola,

He redactado el siguiente codigo:
hago una función que  crea una matriz aleatoria, la suma, haya la media y dice cual es el mayor y cual el menor.
Mi duda es ¿ como podría separarla en 4 funciones distintas: crea matriz, suma, media, mayor menor
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

int matriz_aleatoria (int m[] );


    int main()
    {
       int matriz[3];
       srand (time(NULL));
       matriz_aleatoria(matriz);
       
        getch();
    }
   
   
int matriz_aleatoria (int m[])
{
    int  i, s=0;
    float n;
   
   for (i=0; i<3;i++)
    {
    m[i]= (rand()%16);
    printf("%d\t",m[i]);
    s=s+m[i];
    }   
    printf("%d\t",s);
   
    n = (float) s/3;
        printf("%f\t",n);
       
    if (m[0]>m[1])
          if (m[0]>m[2])
          {
             if (m[1]>m[2])
             printf("el mayor es%d y el menor es%d", m[0],  m[2]);
             else
             printf("el mayor es%d y el menor es%d", m[0],  m[1]);
          }
         else
         
           printf("el mayor es%d y el menor es%d", m[2],  m[1]);
     else
     
         if(m[1]>m[2])
          {
                   if (m[0]>m[2])     
                    printf("el mayor es%d y el menor es%d", m[1],  m[2]);
                    else
                     printf("el mayor es%d y el menor es%d", m[1],  m[0]);
          }
}


muchas gracias
   
#29
Programación C/C++ / Re: funciones duda
27 Julio 2012, 14:05 PM
Cita de: rir3760 en 26 Julio 2012, 23:01 PM
El error principal se encuentra en la funcion "main", ahi llamas a la funcion pasandole un entero:
matriz_aleatoria(matriz[contador]);

Lo correcto es usar solo el nombre del array:
matriz_aleatoria(matriz);

Y ya que la funcion no retorna un valor debes indicar este como void:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void matriz_aleatoria(int m[]);

int main(void)
{
   int matriz[3];
   
   srand((unsigned) time(NULL));
   matriz_aleatoria(matriz);
   
   return 0;
}

void matriz_aleatoria(int m[])
{
   int  i;
   
   for (i = 0; i < 3; i++){
      m[i] = rand() % 16;
      printf("%d\n", m[i]);
   }
}


Un saludo

Perdona por la pregunta que seguro que es una tontería, pero por que dices que la función no devuelve ningun valor. ¿ No devuelve tres entreros aleatorios?

gracias
#30
Programación C/C++ / Re: funciones duda
27 Julio 2012, 13:23 PM
Muchisimas gracias