Página 6 de 7

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

Publicado: 30 Oct 2010, 20:00
por miguelamacias
m0skit0 escribió:También tu agenda tiene un bug, ya que si rellenas toda la agenda y luego borras un contacto que no esté al final, al introducir uno nuevo, simplemente ni aparecerá, ya que lo escribirías fuera de la memoria de tu programa, corrompiendo tu programa, otros o a saber el qué :adora: Esto te lo digo sin haberlo probado, pero puedes probarlo y ver lo que te estoy diciendo.


Lo he probado en Windows y funciona. Relleno todos los huecos, borro uno que no sea el último, añado uno nuevo y funciona. Eso de corromper me llamaba la atención...

Saludos!

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

Publicado: 03 Nov 2010, 02:25
por Dante
Perdón por la inactividad, pero ya tratare de estar mas activo en adelante, voy a revisar la agenda para solucionar el bug, por ahora dejo el ejercicio 1 , el 2° me falta sacar la moda.

Código: Seleccionar todo

[spoiler]#include <stdio.h>

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

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

   for(i=1; i<21; i++)
   {
     if(i % 2 == 0)
     {     
      pares[j++] = i;
      printf("Par: %d\n", i);
     }
   
     else
     {
      impares[k++] = i;
      printf("Impar: %d\n", i);
     }

    }
 
  return 0;
}[/spoiler]

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

Publicado: 03 Nov 2010, 12:39
por m0skit0
Dante escribió:ahora dejo el ejercicio 1

Nada que objetar, su señoría :oki:

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

Publicado: 06 Nov 2010, 02:13
por Dante
Ejercicio 4
Spoiler:

Código: Seleccionar todo

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

typedef struct
{
   char nombre[80];
   int numero;   
} agenda; 

int main (int argc, char* argv[])
{
   agenda datoscont[19];
   int puesto = 0, opcion;   
   int fullcontactos = 1;
   int activo = 1;
   char disponible[5]

   strcpy(disponible, "VACIO");
   printf("Buen dia, ¿que desea hacer?\n");
   printf("Seleccione una opcion.\n");

   do
   {   
    printf("1.-Agregar conctacto nuevo.\n");
    printf("2.-Ver contacto.\n");
    printf("3.-Modificar conctacto.\n");
    printf("4.-Eliminar conctacto.\n");
    printf("5.-Salir\n");
    scanf("%d", &opcion);

    switch(opcion)
    {

     case 1: for(puesto = 0; puesto <= 19; puesto++)
             {   

            if(strcmp (datoscont[puesto].nombre, disponible) == 0)
              {
               printf("Introduce el nombre del conctacto: ");
                    scanf("%s", &datoscont[puesto].nombre);
                    printf("\nIntrodusca numero telefonico: ");
                    scanf("%d", &datoscont[puesto].numero);
                    printf("\nConctacto numero: %d\n", puesto);
                   }

                   if(fullcontactos < 19)
              {
               printf("Introduce el nombre del conctacto: ");
                    scanf("%s", &datoscont[puesto].nombre);
                    printf("\nIntrodusca numero telefonico: ");
                    scanf("%d", &datoscont[puesto].numero);
                    printf("\nConctacto numero: %d\n", puesto);
                    fullcontactos++;
                    puesto++;
              }   

                else
              {
               printf("\nNo hay espacios disponibles, necesitara borrar alguno.");
              }
    }
        break;

      case 2: printf("Introduce el numero de conctaco a cosultar: ");
         scanf("%d", &puesto);
              printf("Nombre de conctacto:%s\nTel.%d\n\n", datoscont[puesto].nombre, datoscont[puesto].numero);
              break;

      case 3: printf("Numero de conctacto que desea editar: ");
         scanf("%d", &puesto);
              printf("\nNuevo nombre de conctacto: ");
              scanf("%s", &datoscont[puesto].nombre);
              printf("\nNuevo numero telefonico: ");
              scanf("%d", &datoscont[puesto].numero);
              break;
   
      case 4: printf("Numero de conctacto que desea eliminar: ");
         scanf("%d", &puesto);
              strcpy(datoscont[puesto].nombre, "VACIO");   
              datoscont[puesto].numero = 0;
              printf("\nNumero borrado.\n");
              fullcontactos--;
              break;
   

      case 5: printf("Aplicacion terminada.\n");
         activo = 0;
         break;

      default: printf("\"ERROR\"opcion no valida.\n");
    }

   }

   while(activo == 1);

   return 0;
}


PD: El formato se me volvió a desacomodar al enviar, no se si eso pase por el tamaño del texto o quien sabe, espero que no le reste demasiada legibilidad.

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

Publicado: 21 Ene 2011, 22:52
por Dark Pallacus
En el primer ejercicio se trataba de hacer esto? Luego leo los otros y me copio ;)
Spoiler:

Código: Seleccionar todo

//Versión del Pallacus. Si i siempre empieza siendo 1 podemos ahorrarno el trabajo de comprobar si cada número es par e ir metiendo todos los números alternativamente en cada vector.
#include <stdio.h>
int main(int argc, char* argv[])
{
  int i = 1, j = 0, k = 0;
  // Dos vectores de 10 enteros cada uno
  int pares[10];
  int impares[10];
  // Recorremos los números desde el 1 hasta el 20 (ambos inclusive)
  while ( i <= 20 )
  {
    impares[k++] = i;
    i++;
    pares[j++] = i;
    i++;
  }
  // Imprimimos el vector de pares
  for (i=0; i<10; i++)
    printf("%d ", pares[i]);
  printf("\n");
  // Imprimimos el vector de impares
  for (i=0; i<10; i++)
    printf("%d ", impares[i]);
  printf("\n");
  return 0;
}

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

Publicado: 22 Ene 2011, 12:18
por m0skit0
Perfecto Pallacus, pero usa llaves para los for ;)

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

Publicado: 22 Ene 2011, 21:02
por Dark Pallacus
OK, Llaves puestas.

Te dejo el segundo, tengo que confesar que he copiado algo :tongue:
Lo he estado optimizando y no se si se puede optimizar todavía mas...
Spoiler:

Código: Seleccionar todo

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

int main(int argc, char* argv[])
{
  //Definimos los vectores y las variables.
  int vectores[50];
  int modas[100]={0};
  int mayor = 0, menor = 0, moda = 0, total = 0, posicion_media = -1;
  int media, i;
 
  //Inicializamos el generador de numeros "aleatorios".
  srand(time(NULL));
 
  //Llenamos vectores de números al azar. A medida que se generan los números los comparamos y guardamos la posición de mayor y del menor. También vamos calculando el total para calcular la media y vamos contando cuantas veces se repite cada número.
  for(i = 0; i < 50; i++)
  {
    vectores[i] = (rand() % 100);
    if (vectores[i] > vectores[mayor])
    {
      mayor = i;
    }
    if (vectores[i] < vectores[menor])
    {
      menor = i;
    }
    total = total + vectores[i];
    modas[vectores[i]]++;
  }
 
  //Calculamos la media.
  media = (total / 50);
  for(i = 0; i < 50; i++)
  {
    if (vectores[i] == media)
    {
      posicion_media = i;
    }
  }
 
  //Calculamos la moda.
  for(i = 0; i < 100; i++)
  {
    if (modas[i] > modas[moda])
    {
      moda = i;
    }
  }
 
  //Imprimimos un montón de cosas.
 
  printf("\n Los valores del vector son: ");
 
  for(i = 0; i < 50; i++)
  {
    if ((i % 10) == 0)
      printf("\n ");
    printf("%2.d, ", vectores[i]);
  }
 
  printf("\n ");
  printf("\n El mayor de ellos es el %dº: %d.", (mayor +1), vectores[mayor]);
  printf("\n El menor de ellos es el %dº: %d.", (menor +1), vectores[menor]);
  printf("\n La media de los elementos del vector es: %d. ", media);
  //Si algún vector coincide con la media lo imprimimos.
  if (posicion_media >= 0)
  {
    printf("Y la podemos encontrar en la posicion %d", (posicion_media +1));
  }
  printf("\n El número que está de moda es el: %d. Y se repite en las posiciones: ", moda);
  //Buscamos los vectores con el valor de moda y los imprimimos.
  for(i = 0; i < 50; i++)
  {
    if (moda == vectores[i])
    {
      printf("%d, ", (i + 1));
    }
  }
  printf("\n\n ");
 
  return 0;
}


Dejo también el tercero:
Vale, vale, voy a ordenarlos también de mayor a menor sin hacer trampa XD
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 vectoreses y las variables.
  int vectores[50] = {99};
  int i, j, k, numero;
 
  //Inicializo el generador de numeros "aleatorios".
  srand(time(NULL));
 
  //Lleno el 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 ");
 
  //Y ahora lo imprimimos al reves :D
  printf("\n Y de mayor a menor: \n ");
 
  for(i = 49; i >= 0; i--)
  {
    printf("%2.d, ", vectores[i]);
    if ((i % 10) == 0)
    {
      printf("\n ");
    }
  }
  printf("\n\n ");
 
 
  return 0;
}

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

Publicado: 22 Ene 2011, 21:56
por m0skit0
Cuando los hagas sin trampa, me vuelves a avisar :lol: :oki:

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

Publicado: 22 Ene 2011, 22:09
por Dark Pallacus
Estoy en ello XD

Por cierto, me había olvidado de que tengo algo para ti:

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

Publicado: 22 Ene 2011, 23:00
por m0skit0
:oki: