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

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

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

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

Mensajepor m0skit0 » 24 Ene 2010, 03:18

<< Anterior Siguiente >>

"¡Se ha pasao usted con mi bambina! ¡Es usted un torpedo del año cuatro!" - Chuiquito de la Calzada :adora:

Funciones

Por fin. Uno de los capítulos más bonitos que existen en programación. Mira que me emociono y toda la pesca... :cry: Bueno, al tema.

Una función en programación es, en una definición informal, como básicamente ha sido este cursillo, un cacho de código que sirve para realizar una determinada función (nunca mejor dicho) sobre 0 o más valores y devuelve 0 o más valores. En realidad ya habéis estado usando funciones durante todo el curso sin daros cuenta, sólo que estas funciones que habéis usado estaban ya hechas. El ejemplo más claro es la función printf(), o también scanf(). main() sin ir más lejos es una función. Ahora aprenderemos a crear nuevas funciones y usarlas en nuestro código. Como es habitual, vamos a ver un ejemplo de una función muy sencilla, que no recibe ni devuelve ningún valor:

Código: Seleccionar todo

#include <stdio.h>

// La función imprime_nombre
void imprime_nombre(void)
{
    char* nombre = "m0skit0";

    printf("%s\n", nombre);
}

int main(int argc, char* argv[])
{
    // Llamo a la función imprime_nombre
    imprime_nombre();
    return 0;
}

Como podéis ver, la función imprime_nombre es muy parecida en forma a main(). Esto es porque ambas son funciones. También podemos observar que imprime_nombre no devuelve ningún valor (el void antes del nombre), ni recibe ningún valor (el void entre paréntesis después del nombre). Tened en cuenta que independientemente del número de funciones que tengamos, main() siempre es la primera en ejecutarse al arrancar nuestro programa. A esto se le llama punto de entrada. Por tanto el punto de entrada en C es la función main()

Veamos ahora otro ejemplo con una función que recibe un valor, pero no devuelve nada:

Código: Seleccionar todo

#include <stdio.h>

// La función imprime_nombre
// Recibe un sólo valor de tipo char*, la variable nombre
void imprime_nombre(char* nombre)
{
    printf("%s\n", nombre);
}

int main(int argc, char* argv[])
{
    // Llamo a la función imprime_nombre
    imprime_nombre("m0skit0");
    return 0;
}

Bien, ahora veréis que entre los paréntesis de la función ya no va void, sino char* nombre. Esto indica que la función necesita que se le indique un valor de tipo char* para que pueda operar correctamente, como printf() por ejemplo. Esto es obligatorio, es decir, que si yo llamo a la función usando por ejemplo imprime_nombre(2);, el compilador me dará un error, porque estoy asignando a la variable nombre de tipo char* un int (2), y esto vimos que no puede ser.

También cabe destacar que dentro de la función imprime_nombre() se usa el identificador nombre como si fuera una variable normal.

Veamos ahora una función que recibe valores y devuelve uno (en C las funciones sólo pueden devolver un valor, a menos que usemos algunos trucos, que veremos más adelante):

Código: Seleccionar todo

#include <stdio.h>

// La función suma
// Recibe 2 valores, devuelve la suma de ambos.
int suma(int sumando1, int sumando2)
{
    int total;
   
    total = sumando1 + sumando2;

    return total;
}

int main(int argc, char* argv[])
{
    int a, b, resultado;

    printf("Introduzca el primer sumando: ");
    scanf("%d", &a);
    printf("\nIntroduzca el segundo sumando: ");
    scanf("%d", &b);

    // Aquí llamo a la función y almaceno el valor de vuelta en la variable "resultado"
    resultado = suma(a, b);
    printf("\nEl resultado de la suma es %d\n", resultado);

    return 0;
}

Nos fijamos que ahora es una nueva función que he llamado suma(). Esta vez recibe 2 valores, ambos de tipo entero (int). Insistir en el hecho de que no podemos declarar la función así: int suma(int sumando1, sumando2). Para cada parámetro hay que indicar explícitamente el tipo.

También resulta interesante fijarse que en las funciones (al igual que en main()) podemos declarar sus propias variables locales. Hablaremos sobre este tema (la localidad y visibilidad de variables) en el siguiente capítulo.

Ahora veréis que existe una nueva orden, return. Hasta ahora la habíamos usado para finalizar main(). Esta orden hace que el valor especificado tras ella sea devuelto como valor de vuelta de la función. Como veréis, la función suma() devuelve un entero (int), de ahí que sea declarada int suma() (al igual que declaramos variables ;)). Si nos fijamos en main(), llamamos a la función usando la línea resultado = suma(a, b);, es decir, asignamos a nuestra variable resultado el valor devuelto por la función suma(). También podríamos haber hecho directamente:

Código: Seleccionar todo

printf("\nEl resultado de la suma es %d\n", suma(a,b));

y ahorrarnos la variable resultado, por ejemplo. Una función que devuelve un valor es considerada una expresión, y como tal puede ir en cualquier lugar donde pueda ir una expresión :o :lol:

Las funciones en realidad no añaden nada al código. Sin embargo, son unas herramientas muy útiles para organizar y reutilizar buena parte de nuestro código. Siempre deben usarse, ya que clarifican el código y nuestra mente al mismo tiempo.

¿Cuándo hacer una función?
Generalmente, debemos crear y usar una función para cada subtarea suficientemente compleja dentro de nuestro programa. Cualquier subtarea cuyo procedimiento sea idéntico y se realice más de una vez en la lógica, es una seria candidata a función.

¿Cuándo no hacer una función? Cuando la función vaya a ser muy pequeña, con escaso número de órdenes, no merece la pena complicar el código añadiendo una función donde en realidad habría nada más que una o dos líneas de código. Los ejemplos de funciones que he dado anteriormente son claros ejemplos de funciones que no son necesarias.

No sobra tampoco recalcar que las funciones deben tener un nombre acorde a la tarea que realizan (al igual que ocurre con las variables). Generalmente suelen llevar verbos en infinitivo o en imperativo.

Ahora como no puede ser de otra manera, ¡a jugar!

  1. Escribir una función que devuelva el factorial de un número.
  2. Escribir una función que devuelva si un número es primo o no.
  3. Escribir una función que devuelva la suma de todos los elementos de un vector de enteros.
  4. Reescribir el reto 4 del capítulo anterior usando funciones donde se considere necesario.

Lo más difícil generalmente de las funciones es saber qué subtarea asignarle y sobre todo qué parámetros va a necesitar para funcionar correctamente. No dudéis en probar diferentes parámetros ;)

Weno saludos y ¡hasta la próxima!

<< Anterior Siguiente >>
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

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

Mensajepor arisma » 01 Feb 2010, 17:31

Ejercicio 1. Factorial.

Spoiler:

Código: Seleccionar todo

#include <stdio.h>

double factorial(int numero)
{
   int i;
   double resfact = 1;
   
   //Como ya hemos inicializado a 1, no lo multiplicamos por él
   for (i = 2; i <= numero; i++) resfact = resfact * i;
   return resfact;
}

int main(int argc, char* argv[])
{
   int num;

   printf("Introduce número del que hallar factorial: ");
   scanf("%d", &num);

   printf("\nEl factorial de %d es: %G\n", num, factorial(num));

   return 0;
}


Ejercicio 2. Número primo con función

Spoiler:

Código: Seleccionar todo

#include <stdio.h>

int esPrimo(int numero)
{
   int i = 2, primo = 1;

   while (i < numero && primo == 1)
   {
      if (numero % i == 0) primo = 0;
      else i++; // i = i + 1;
   }
   return primo;
}

int main(int argc, char* argv[])
{
   int num;

   printf("Introduce número del que saber si es primo o no: ");
   scanf("%d", &num);

   if (esPrimo(num)) printf("El número es primo.\n");
   else printf("El número NO es primo.\n");

   return 0;
}


Ejercicio 3. xD

Spoiler:

Código: Seleccionar todo

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

long sumaEntVector(int numero[], int numElementos)
{
   int i;
   long suma = 0;

   for (i = 0; i < numElementos; i++) suma = suma + numero[i];

   return suma;
}

int main(int argc, char* argv[])
{
   int vectorEnteros[50];

   srand(time(0));

   int i;
   for (i = 0; i < 50;i++) vectorEnteros[i] = rand() %65535;

   for (i = 0; i < 50;i++) printf("%d ", vectorEnteros[i]);   

   printf("\nLa suma de los elementos es: %d.\n", sumaEntVector(vectorEnteros, 50));
   return 0;
}


Ejercicio 4. Ok con un poco de prisa que me tengo que ir a casa xD. Si ves alguna pega lo dices y lo cambio en cuanto pueda

Spoiler:

Código: Seleccionar todo

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

typedef struct entrada
{
   char* nombre[40];
   char* numTel[9];
   int numAccesos;
}Entrada;

Entrada Agenda[20];


//No momento sin detección de errores, por lo que no devuelve valor
//0 corresponde a insertar, 1 a modificar
void insModEntrada(int indice, int operacion)
{
}

//Implementado de forma que reciba y devuelva un valor, que para eso estamos jeje
int insertarEntrada(int i)
{
   printf("Introduce en nombre: ");
   scanf("%s", &Agenda[i].nombre);                      
   printf("Introduce el telefono(9 digitos): ");
   scanf("%s", &Agenda[i].numTel);
   Agenda[i].numAccesos = 0;
   return i;
}

void modificarEntrada(int idMod)
{
   printf("Introduce en nombre: ");
   scanf("%s", &Agenda[idMod].nombre);                      
   printf("Introduce el telefono(9 digitos): ");
   scanf("%s", &Agenda[idMod].numTel);
   Agenda[idMod].numAccesos++;
}

int main(int argc, char* argv[])
{

   int opcMenu;
   int nosalir = 1;
   int libres = 20;

   int i;
   
   for (i = 0; i <20; i++) Agenda[i].numAccesos = -1;   
   
   while(nosalir)
   {
      printf("\n1.- Añadir\n");
      printf("2.- Modificar\n");
      printf("3.- Borrar\n");
      printf("4.- Salir\n");
      printf("Pulsa opción:(%d) ", libres);
      scanf("%d",&opcMenu);
      
      switch(opcMenu)
      {
         case 1: if (libres > 0)
                   {
                      i = 0;
                      while (Agenda[i].numAccesos != -1) i++;
                      printf("Su número de ID es: %d", insertarEntrada(i));
                      libres--;
                   }
                   else printf("No quedan entradas libres, borre alguna...");
                   break;
         case 2: printf("Número de IDs: ");
                   for (i = 0; i < 20; i++) if (Agenda[i].numAccesos != -1) printf("%d ", i);
                   int idMod;//Ojo la variable a pasar no tiene por qué llamarse idMod
                   printf("\nIntroduce ID a modificar: ");
                   scanf("%d", &idMod);
                   if(Agenda[idMod].numAccesos < 0 | idMod > 19 | idMod < 0) printf("ERROR: ID erroneo\n");
                   else modificarEntrada(idMod);
                   break;
         case 3: printf("Número de IDs: ");
                   for (i = 0; i < 20; i++) if (Agenda[i].numAccesos != -1) printf("%d ", i);
                   int idBorrar;
                   printf("\nIntroduce ID a borrar: ");
                   scanf("%d", &idBorrar);
                   if(Agenda[idBorrar].numAccesos < 0 | idBorrar > 19 | idBorrar < 0) printf("ERROR: ID erroneo\n");                  
                   else
                   {
                      //Agenda[idBorrar].nombre = "";
                      //Agenda[idBorrar].numTel = "";
                      //strcpy para borrar datos
                      printf("ID borrado fue accedido %d veces", Agenda[idBorrar].numAccesos);
                      libres++;                      
                      Agenda[idBorrar].numAccesos = -1;
                   }
                   break;
         case 4: printf("4\n");
                   nosalir = 0;
                   break;
         default:
                   break;         
      }
   }


   return 0;
}
Última edición por arisma el 02 Feb 2010, 09:59, editado 4 veces en total.

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3374
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

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

Mensajepor dark_sasuke » 01 Feb 2010, 17:32

arisma escribió:Ejercicio 4. Ok con un poco de prisa que me tengo que ir a casa xD. Si ves alguna pega lo dices y lo cambio en cuanto pueda

Spoiler:

Código: Seleccionar todo

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

typedef struct entrada
{
   char* nombre[40];
   char* numTel[9];
   int numAccesos;
}Entrada;

Entrada Agenda[20];


//No momento sin detección de errores, por lo que no devuelve valor
//0 corresponde a insertar, 1 a modificar
void insModEntrada(int indice, int operacion)
{
}

//Implementado de forma que reciba y devuelva un valor, que para eso estamos jeje
int insertarEntrada(int i)
{
   printf("Introduce en nombre: ");
   scanf("%s", &Agenda[i].nombre);                      
   printf("Introduce el telefono(9 digitos): ");
   scanf("%s", &Agenda[i].numTel);
   Agenda[i].numAccesos = 0;
   return i;
}

void modificarEntrada(int idMod)
{
   printf("Introduce en nombre: ");
   scanf("%s", &Agenda[idMod].nombre);                      
   printf("Introduce el telefono(9 digitos): ");
   scanf("%s", &Agenda[idMod].numTel);
   Agenda[idMod].numAccesos++;
}

int main(int argc, char* argv[])
{

   int opcMenu;
   int nosalir = 1;
   int libres = 20;

   int i;
   
   for (i = 0; i <20; i++) Agenda[i].numAccesos = -1;   
   
   while(nosalir)
   {
      printf("\n1.- Añadir\n");
      printf("2.- Modificar\n");
      printf("3.- Borrar\n");
      printf("4.- Salir\n");
      printf("Pulsa opción:(%d) ", libres);
      scanf("%d",&opcMenu);
      
      switch(opcMenu)
      {
         case 1: if (libres > 0)
                   {
                      i = 0;
                      while (Agenda[i].numAccesos != -1) i++;
                      printf("Su número de ID es: %d", insertarEntrada(i));
                      libres--;
                   }
                   else printf("No quedan entradas libres, borre alguna...");
                   break;
         case 2: printf("Número de IDs: ");
                   for (i = 0; i < 20; i++) if (Agenda[i].numAccesos != -1) printf("%d ", i);
                   int idMod;//Ojo la variable a pasar no tiene por qué llamarse idMod
                   printf("\nIntroduce ID a modificar: ");
                   scanf("%d", &idMod);
                   if(Agenda[idMod].numAccesos < 0 | idMod > 19 | idMod < 0) printf("ERROR: ID erroneo\n");
                   else modificarEntrada(idMod);
                   break;
         case 3: printf("Número de IDs: ");
                   for (i = 0; i < 20; i++) if (Agenda[i].numAccesos != -1) printf("%d ", i);
                   int idBorrar;
                   printf("\nIntroduce ID a borrar: ");
                   scanf("%d", &idBorrar);
                   if(Agenda[idBorrar].numAccesos < 0 | idBorrar > 19 | idBorrar < 0) printf("ERROR: ID erroneo\n");                  
                   else
                   {
                      //Agenda[idBorrar].nombre = "";
                      //Agenda[idBorrar].numTel = "";
                      //strcpy para borrar datos
                      printf("ID borrado fue accedido %d veces", Agenda[idBorrar].numAccesos);
                      libres++;                      
                      Agenda[idBorrar].numAccesos = -1;
                   }
                   break;
         case 4: printf("4\n");
                   nosalir = 0;
                   break;
         default:
                   break;         
      }
   }


   return 0;
}


mierda esto da miedo :S , es muuuuy largo XDDD , tengo que ponerme con el IX, es que ahora el cole no da casi tiempo :evil:
Imagen

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

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

Mensajepor m0skit0 » 02 Feb 2010, 01:38

¿Eso largo? :laughing:
Imagen

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3374
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

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

Mensajepor dark_sasuke » 02 Feb 2010, 03:07

m0skit0 escribió:¿Eso largo? :laughing:


si ya se que es corto, que el gladi me dijo que hizo una cosa pal PSP un info pal PSP y llevaba 3k de lineas peeero vamos me parece bastante xD
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

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

Mensajepor arisma » 02 Feb 2010, 10:01

dark_sasuke escribió:
m0skit0 escribió:¿Eso largo? :laughing:


si ya se que es corto, que el gladi me dijo que hizo una cosa pal PSP un info pal PSP y llevaba 3k de lineas peeero vamos me parece bastante xD


Vale que se excede un poco en el número de lineas respecto a lo que se hacía hasta ahora, pero no te preocupes los otros ejercicios son cortos.

Además se pide que no se abandone el curso, no que se tenga el ejercicio en 5 minutos desde que se postea el capitulo.

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3374
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

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

Mensajepor dark_sasuke » 02 Feb 2010, 14:07

arisma escribió:
dark_sasuke escribió:
m0skit0 escribió:¿Eso largo? :laughing:


si ya se que es corto, que el gladi me dijo que hizo una cosa pal PSP un info pal PSP y llevaba 3k de lineas peeero vamos me parece bastante xD


Vale que se excede un poco en el número de lineas respecto a lo que se hacía hasta ahora, pero no te preocupes los otros ejercicios son cortos.

Además se pide que no se abandone el curso, no que se tenga el ejercicio en 5 minutos desde que se postea el capitulo.


nah yo lo no lo abandono :mrgreen: si yo me paso e intento ayudarlo con lo que se :D :D
Imagen

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

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

Mensajepor m0skit0 » 27 Ago 2010, 17:38

dark_sasuke escribió:nah yo lo no lo abandono :mrgreen:

:juasjuas: :adora:
Imagen

Avatar de Usuario
~Rdavid~
Experto
Experto
Mensajes: 965
Registrado: 12 Nov 2009, 17:29
Ubicación: Costa Rica

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

Mensajepor ~Rdavid~ » 18 Oct 2010, 06:08

Bueno ya hice los de este capitulo :oki: , no es tan difícil usar funciones cuando uno se va acostumbrando :)

Primero.

Spoiler:

Código: Seleccionar todo

#include <stdio.h>

//Funcion factorial
double factorial(int num)
{
  int i;
  double fact=1;
 
  //Guarda en fact el producto hasta el número que escojamos
  for(i=2;i<=num;i++)
  {
    fact=fact*i;
  }
  return(fact);
}

//función principal
int main(int argc, char *argv[])
{
  int a;
 
  printf("Escribe un número a calcular su factorial\n\n");
  printf("Número: \n");
  scanf("%d", &a);
 
  printf("El factorial de %d es: %G\n", a, factorial(a));
  return 0;
}


Segundo.

Spoiler:

Código: Seleccionar todo

#include <stdio.h>

//función para encontrar un número primo
void primo(int num)
{
  if(((num-1)%2 == 0)&&(num%3 != 0)&&(num%5 != 0))
  {
    printf("El número %d es primo\n", num);
  }
  else if(num==1 || num ==5 || num==2 || num==3)
  {
    printf("El número %d es primo\n", num);
  }
  else
  {
    printf("El número no es primo\n", num);
  }
}

//Función principal
int main(int argc, char *argv[])
{
  int n;
 
  printf("Escribe un número para saber si es primo o no\n");
  printf("Número: ");
  scanf("%d", &n);
  primo(n);
 
  return 0;
}
 


Tercero.

Spoiler:

Código: Seleccionar todo

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

//Función para sumar el vector, regresa el resultado de la suma
double suma_vector(int vec[], int num)
{
  int i;
  double sumado;
 
  for(i=0;i<num;i++)
  {
    sumado= sumado+vec[i];
  }
  return(sumado);
}
   
//función principal
int main(int argc, char *argv[])
{
  int vec[50];
  int i;
  srand(time(NULL));
  for(i=0;i<50;i++)
  {
    vec[i]=rand()%50;
    printf("%d\n", vec[i]);
  }
  printf("La suma del vector es %G\n", suma_vector(vec,50));
 
  return 0;
}


Cuarto.

Spoiler:

Código: Seleccionar todo

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

//Struct de la agenda
typedef struct entrada
{
  char nombre[50];
  int numero[8];
  int veces;
}Entrada;

//Variables globales
Entrada agenda[20];
int entlibres=20;

//Función menú, regresa el número que escojamos
int menu(void)
{
  int opmenu;
  system("clear");
  printf("         Menu\n\n");
  printf("Escoge una de las siguientes opciones\n\n");
  printf("Presiona 1 si quieres añadir una entrada, libres[%d]\n", entlibres);
  printf("Presiona 2 si quieres editar una entrada\n");
  printf("Presiona 3 si quieres borrar una entrada\n");
  printf("Presiona 4 si quieres salir\n");
  scanf("%d", &opmenu);
 
  return opmenu;
}

//Función insertar entrada, regresa el id
int inser_entrada(int id)
{
  printf("Escribe el nombre: ");
  scanf("%s", &agenda[id].nombre);
  printf("Escribe el número de telefono de 8 dígitos: ");
  scanf("%d", &agenda[id].numero);
  agenda[id].veces =0;
  return id;
}

//Función para modificar entradas
void modificar_entrada(int id2)
{
  printf("Escriba el nombre nuevo: ");
  scanf("%s", &agenda[id2].nombre);
  printf("Escribe el número de telefono nuevo de 8 dígitos: ");
  scanf("%d", &agenda[id2].numero);
  agenda[id2].veces++;
}

//Función principal
int main(int argc, char *argv[])
{
  int salir=1, opc, id, id2, id3, entlibres=20;
 
  for(id=0;id<20;id++)
  {
    agenda[id].veces =-1;
  }
 
  do
  {
   opc= menu();
   while(opc!=1 && opc!=2 && opc!=3 && opc!=4)
    {
      printf("No escogiste ninguna de la opciones, vuleve a escoger,\n");
      scanf("%d", &opc);
    }
   
   switch(opc)
    {
      //Si hay espacios libres modifica las variables y resta un espacio libre
      case 1:
          if(entlibres==0)
          {
            printf("No quedan espacion libres.\n");
            printf("Presiona enter para regresar al menú\n");
            system("read foo");
          }
          else
          {
            id=0;
            while (agenda[id].veces != -1)
            id++;
            printf("ID: %d registrado\n",inser_entrada(id));
            entlibres--;
            printf("Presiona enter para regresar el menú\n");
            system("read foo");
          }
          break;
      //modifica las variables si puso bien el id
      case 2:
          printf("Escoge una de las siguientes ID's a editar:\n");
          for(id=0;id<20;id++)
          {
            if(agenda[id].veces != -1)
            printf("%d ", id);
          }
          printf("ID a escoger: ");
          scanf("%d", &id2);
          while(id2<0 || id2>19 || agenda[id2].veces<0)
          {
            printf("ID incorrecta\n");
            printf("Vulve a escirbir la ID: ");
            scanf("%d", &id2);
          }
         
          modificar_entrada(id2);
          entlibres++;
          printf("Presiona enter para regresar el menu\n");
          system("read foo");
          break;
      //Borra un id y suma una entrada más
      case 3:
          printf("Escoge una de las siguientes ID's a borrar:\n");
          for(id=0;id<20;id++)
          {
            if(agenda[id].veces != -1)
            printf("%d ", id);
          }
          printf("ID a escoger: ");
          scanf("%d", &id3);
          while(id3<0 || id3>19 || agenda[id3].veces<0)
          {
            printf("ID incorrecta\n");
            printf("Vulve a escirbir la ID: ");
            scanf("%d", &id3);
          }
          printf("ID borrado\n");
          printf("Fue accedido %d veces\n", agenda[id3].veces);
          entlibres++;
          agenda[id3].veces = -1;
          printf("Presiona enter para regresar el menu\n");
          system("read foo");
          break;
       case 4:
           salir=0;
           break;
      default:
          break;
    }
  } 
  while(salir==1);
  printf("Agenda terminada\n");
  return 0;
}



Bueno ya termine el curso, soy graduado en el curso de C de Moskito :lol: :canuto:

Voy a terminar de aprender las demás cosas como punteros, etc y seguir tal vez con ensamblador o C++ :oki: y desde luego psp :D

Saludos :oki:
Imagen

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

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

Mensajepor m0skit0 » 18 Oct 2010, 08:15

~Rdavid~ escribió:Bueno ya termine el curso, soy graduado en el curso de C de Moskito :lol: :canuto:

Bueno, bueno, el curso sólo llega hasta aquí porque me dio pereza el seguirlo cuando no le interesa a nadie. Pero si te ves en condiciones, yo sigo :mrgreen: Y otro consejo: no seas ansioso en terminarlo por terminarlo, la práctica es lo que cuenta.

Ahora le echo un vistazo a tus ejercicios.
Imagen


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados