[Curso] Introducción a la programación en C (X)

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
Dark Pallacus
ViP Hordes
ViP Hordes
Mensajes: 1509
Registrado: 03 Sep 2009, 00:35
PSN ID: Pallacus
Ubicación: Barcelona
Contactar:

Re: [Curso] Introducción a la programación en C (X)

Mensaje por Dark Pallacus »

Tercero sin trampa: 8-)
Spoiler:

Código: Seleccionar todo

//Ordenar los valores de un vector
#include <stdio.h>
#include <time.h>

int main(int argc, char* argv[])
{
  //Definimos los vectores y las variables.
  int vectores[50] = {99}, buffer[50] = {0};
  int i, j, k, numero;
 
  //Inicializo el generador de numeros "aleatorios".
  srand(time(NULL));
 
  //Lleno vectores de números al azar. A medida que se generan los números los comparamos y guardamos ordenadamente.
  for(i = 0; i < 50; i++)
  {
    numero = (rand() % 100);
    j = 0;
    while(numero > vectores[j])
    {
      j++;
    }
    for(k = i; k >= j; k--)
    {
      vectores[k+1] = vectores[k];
    }
    vectores[j] = numero;
  }
 
  //imprimimos el vector entero de menor a mayor.
  printf("\n Los valores del vector, de menor a mayor son: ");
 
  for(i = 0; i < 50; i++)
  {
    if ((i % 10) == 0)
    {
      printf("\n ");
    }
    printf("%2.d, ", vectores[i]);
  }
  printf("\n ");
 
  //Ahora toca ordenarlos de mayor a menor
   
  for(i = 0; i < 50; i++)
  {
    numero = vectores[i];
    j = 0;
    while(vectores[i] < buffer[j])
    {
      j++;
    }
    for(k = i; k >= j; k--)
    {
      buffer[k+1] = buffer[k];
    }
    buffer[j] = vectores[i];
  }
  //imprimimos el vector entero de mayor a menor.
  printf("\n Los valores del vector, de mayor a menor son: ");
 
  for(i = 0; i < 50; i++)
  {
    if ((i % 10) == 0)
    {
      printf("\n ");
    }
    printf("%2.d, ", buffer[i]);
  }
  printf("\n ");
 
 
  return 0;
}

Ahora me meto con el cuarto, a ver que tal...
No me sale. "Numero 5 necesita datos. DAAAATOS!!!!"

EDITO.

Hola M0ski, verás, estoy intentando poner todos los registros a cero antes de empezar el programa. Pero no he sido capaz.
Spoiler:

Código: Seleccionar todo

//Agenda telefónica.
#include<stdio.h>
#include<string.h>

//Definimos una estructurade tipo tContacto
struct tContacto
{
  char nombre[20];
  int numero;
  int accesos;
};

int main(int argc, char* argv[])
{
  //Declramos 20s variable de tipo tContacto
  struct tContacto a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r , s, t;
  //struct tContacto b;
  //struct tContacto c;
  //struct tContacto d;
  //struct tContacto e;
  //struct tContacto f;
  //struct tContacto g;
  //struct tContacto h;
  //struct tContacto i;
  //struct tContacto j;
  //struct tContacto k;
  //struct tContacto l;
  //struct tContacto m;
  //struct tContacto n;
  //struct tContacto o;
  //struct tContacto p;
  //struct tContacto q;
  //struct tContacto r;
  //struct tContacto s;
  //struct tContacto t;
  char* pos;
  int x;
 
  //Inicializamos la agenda.
 
  //a.nombre = "Pallacus";
  a.numero = 655089999;
  a.accesos = 1;
 
  //pos = "b";
  //for(x=0;x<20;x++)
  //{
  //pos.nombre = "--------------------";
  //pos.numero = 000000000;
  //pos.accesos = 0;
  //pos++;
  //}
 
  printf("\n # Nombre               Número    Accesos\n");
 
  printf("\n a %20.s %d %d", a.nombre, a.numero, a.accesos);
  printf("\n b %20.s %d %d", b.nombre, b.numero, a.accesos);
  printf("\n c %20.s %d %d", c.nombre, c.numero, a.accesos);
  printf("\n d %20.s %d %d", d.nombre, d.numero, a.accesos);
  printf("\n e %20.s %d %d", e.nombre, e.numero, a.accesos);
  printf("\n f %20.s %d %d", f.nombre, f.numero, a.accesos);
  printf("\n g %20.s %d %d", g.nombre, g.numero, a.accesos);
  printf("\n h %20.s %d %d", h.nombre, h.numero, a.accesos);
  printf("\n i %20.s %d %d", i.nombre, i.numero, a.accesos);
  printf("\n j %20.s %d %d", j.nombre, j.numero, a.accesos);
  printf("\n k %20.s %d %d", k.nombre, k.numero, a.accesos);
  printf("\n l %20.s %d %d", l.nombre, l.numero, a.accesos);
  printf("\n m %20.s %d %d", m.nombre, m.numero, a.accesos);
  printf("\n n %20.s %d %d", n.nombre, n.numero, a.accesos);
  printf("\n o %20.s %d %d", o.nombre, o.numero, a.accesos);
  printf("\n p %20.s %d %d", p.nombre, p.numero, a.accesos);
  printf("\n q %20.s %d %d", q.nombre, q.numero, a.accesos);
  printf("\n r %20.s %d %d", r.nombre, r.numero, a.accesos);
  printf("\n s %20.s %d %d", s.nombre, s.numero, a.accesos);
  printf("\n t %20.s %d %d", t.nombre, t.numero, a.accesos);
 
  printf("\n\n ");
 
  return 0;
}
PS3 - PSP 2000

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (X)

Mensaje por m0skit0 »

Primero:

Código: Seleccionar todo

typedef struct
{
  char nombre[20];
  int numero;
  int accesos;
} tContacto;

Así evitas tener que poner struct delante siempre.

Código: Seleccionar todo

struct tContacto a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r , s, t;

¿Para qué hemos visto vectores :roll: ?

Código: Seleccionar todo

tContacto contactos[20];
Imagen

Avatar de Usuario
Dark Pallacus
ViP Hordes
ViP Hordes
Mensajes: 1509
Registrado: 03 Sep 2009, 00:35
PSN ID: Pallacus
Ubicación: Barcelona
Contactar:

Re: [Curso] Introducción a la programación en C (X)

Mensaje por Dark Pallacus »

Gracias M0skit0. Igualmente me he quedado bloqueado un montón de tiempo. Pero ahora ya he hecho lo básico y creo que podré agregar lo demás ;)
Spoiler:
Mi hello world en structs XD, ahora iré agregando las funciones ;)

Código: Seleccionar todo

//Agenda telefónica.
#include<stdio.h>
#include<string.h>

//Definimos una estructura de tipo tContacto
typedef struct
{
  char nombre[20];
  int numero;
  int accesos;
} tContacto;

int main(int argc, char* argv[])
{
  //Declramos una variable de tipo tContacto de 20 elementos.
  tContacto contactos[20];
  int i = 0;
 
  //Relleno la primera entrada.
  strcpy(contactos[0].nombre, "Pallacus");
  contactos[0].numero = 655089999;
  contactos[0].accesos = 1;
 
  //Y pongo a 0 el resto.
  for(i=1;i<20;i++)
  {
    strcpy(contactos[i].nombre, " ");
    contactos[i].numero = 0;
    contactos[i].accesos = 0;
  }
 
  //Imprimo toda la agenda.
  printf("\n  #               Nombre Número    Accesos\n");
  for(i=0;i<20;i++)
  printf("\n %2.d %*s %9.d %d", i+1, 20, contactos[i].nombre, contactos[i].numero, contactos[i].accesos);
 
  printf("\n\n ");
 
  return 0;
}
PS3 - PSP 2000

Avatar de Usuario
flood
Enteradillo
Enteradillo
Mensajes: 53
Registrado: 10 Ene 2011, 01:41

Re: [Curso] Introducción a la programación en C (X)

Mensaje por flood »

Se va poniendo mas difícil :muerte: , pero sin desertar :lol: . Bueno como en el capitulo anterior no me dijiste nada del ejercicio 2 y 3 supongo que estan bien :mrgreen: .
El primer ejercicio no tuve problema, pero con el segundo ya no. No encuentro la manera de sacar la moda, alguna pista o consejo?

Spoiler:
Ejercicio 1.

Código: Seleccionar todo

#include <stdio.h>

int main(int argc, char* argv[])
{
   int i, j = 0, k = 0;


   int pares[10];   
   int impares[10];


   for (i=1; i<=20; i++)
   {
      if(i % 2 == 0)
      {
         pares[j++] = i;
         printf("El %d es un numero par.\n", i);
      }

      else
      {
         impares[k++] = i;
         printf("El %d es un numero impar.\n", i);
      }
   }

   return 0;
}


Solo me falta la moda.
Ejercicio 2.

Código: Seleccionar todo

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

int main(int argc, char* argv[])
{
   int num[50];
   int i;
   int mayor = 0, menor = 50, cmoda, moda;
   float media = 0.0;
   int PosMayor = 0, PosMenor = 0;

   srand(time(NULL));

   for(i = 0 ; i<= 49; i++)
   {
      num[i] = (rand() % 50);

      printf("%d.- %d.\n", i+1, num[i]);      

      if(mayor < num[i])
      {
         mayor = num[i];
         PosMayor = i;
      }
      
      if(menor > num[i])
      {
         menor = num[i];
         PosMenor = i;
      }
      
      media = media + num[i];
   
   }

   media = media / 50;   

   printf("\nEl numero mayor es %d y se encuentra en la posicion numero %d.\n", mayor, PosMayor + 1);

   printf("El numero menor es %d y se encuentra en la posicion numero %d.\n", menor, PosMenor + 1);

   printf("La media o promedio de todos los numero es %.3f.\n", media);
   

   return 0;
}

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (X)

Mensaje por m0skit0 »

@Dark Pallacus:

Código: Seleccionar todo

strcpy(contactos[i].nombre, " ");

Un espacio no es vacío. "" es vacío. Otra opción es rellenar con ceros (ya que cero indica final de cadena de caracteres en C).

flood escribió:Bueno como en el capitulo anterior no me dijiste nada del ejercicio 2 y 3 supongo que estan bien :mrgreen: .

Sólo he tenido tiempo de echarles un vistazo por encima. Tienes algunos errores mínimos si no recuerdo mal, pero es que ando pillado de tiempo y no puedo mirarlos tan detenidamente, lo siento.

flood escribió:No encuentro la manera de sacar la moda, alguna pista o consejo?

Hay tantas formas de hacerlo que no sé ni por dónde empezar :lol: Obviamente tienes que ser capaz de contar las repeticiones de cada elemento, y luego ver cuál tiene la repetición máxima. Intenta dividir el problema en varios más sencillos. En programación, siempre: divide y vencerás.
Imagen

Avatar de Usuario
CARDIHO
Enteradillo
Enteradillo
Mensajes: 67
Registrado: 02 Feb 2011, 17:15

Re: [Curso] Introducción a la programación en C (X)

Mensaje por CARDIHO »

Espero que el profe siga por estos rumbos XD.

Ejercicio 1:
Spoiler:

Código: Seleccionar todo

#include <stdio.h>
#define TALLA 10



int main()
{
   
   int i, j = 0, k = 0;
   int pares[TALLA];   
   int impares[TALLA];

   for(i=0; 19 >= i; i++)
   {
     
     if(i%2 == 0)
      {
    
         pares[j++] = i;
      
     }
    
      else
      {
         
       impares[k++] = i;
      
     }
   
   } 

   printf("Pares ==> ");

   for (i=0; TALLA > i; i++)
   {
   
      printf("%d ", pares[i]);
    
   }

   printf("\n");
   printf("Impares ==> ");

   for (i=0; TALLA > i; i++)
   {
   
      printf("%d ", impares[i]);
   
   }


   
   return 0;

}


Ejercicio 3:
Spoiler:

Código: Seleccionar todo

#include <stdio.h>

#define TALLA 50



int main()
{
 
  int vector_numeros[TALLA];
  int i, j;
  int almacenar;
 
  for(i=0; TALLA > i; i++)
  {
   
   printf("Introduce el elemento %d: ", i+1);
   scanf("%d", &vector_numeros[i]);
   
  }
 
  //metodo de la burbuja para ordenar los numeros   
  for (i=0; TALLA>i; i++)

  {
     for (j=i+1; TALLA>j; j++)

     {
        if (vector_numeros[j] < vector_numeros[i])

      {

         almacenar = vector_numeros[j];

         vector_numeros[j] = vector_numeros[i];

         vector_numeros[i] = almacenar;      

      }
    }
  }
 
 
  printf("De menor a mayor: ");
 
  for(i=0; TALLA > i; i++)
  {
   
   printf("%d,", vector_numeros[i]);
   
  }
 
  printf("\n");
  printf("De mayor a menor: ");
 
  for(j=TALLA-1; 0 <= j; j--)
  {
   
   printf("%d,", vector_numeros[j]);
   
  }
 
 
  return 0;
 
}

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (X)

Mensaje por m0skit0 »

:oki: :adora:
Imagen

Avatar de Usuario
Catalinski
Novato
Novato
Mensajes: 8
Registrado: 14 Dic 2015, 15:01

Re: [Curso] Introducción a la programación en C (X)

Mensaje por Catalinski »

JOlin, voy a ver si me pongo y lo hago también!

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (X)

Mensaje por m0skit0 »

¿Y bien? ¡Ya pasó más de un mes! ¡Anímate hombre! ;)
Imagen

Responder