comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Tutorial De Introduccion A La Programacion Estructurada En C

  • 14 Respuestas
  • 6182 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« en: Junio 11, 2010, 02:25:11 am »
Ok. He decidido ir creando de a poco un tutorial sobre C que comenzará desde 0.
Si no saben absolutamente nada sobre C entonces este es el momento perfecto para comenzar a aprender siguiendo este tutorial.
Antes que nada voy a aclarar que lo estoy haciendo exclusivamente para las webs a las que pertenzco asi que si alguien lo toma, menciona el autor y la fuente. No es muy dificil.
Ok. Les dire mas o menos como va el plan. Dividire este tutorial en 6 partes. Publicare una parte por semana. Si puedo publicar mas seguiro pues asi sera (probablemente pueda adelantar bastante fines de semana).
Las 6 partes del tutorial iran colocadas como respuesta a este hilo que acabo de crear.
Aquella persona que tenga dudas, por favor no responda aqui sino que cree un tema nuevo. Una vez que termine las 6 partes cerrare el tema.
Le pido a algun moderador global o administrador que ahiera este tema ya que podra ayudar mucho a los interesados en aprender a adentrarse en lo que es C ya que como no modero este area yo no puedo hacerlo  ::).
Ok. Les dire como seran los titulos de los temas:

1. Teoria Del Lenguaje C/C++
2. Cadenas De Caracteres
3. Funciones
4. Punteros
5. Arreglos
6. Caracteres
Y por ultimo cuando ya terminemos todo les dejare una serie de ejercisios. Los ejercicios que les dejare seran ejemplos de parciales y finales tomados de mi universidad asi que tendran cierto nivel (supongo).

Para todo lo que hagamos YO PERSONALMENTE trabajo con el compilador Dev C++. Aqui se los dejo para que lo descarguen si quieren:
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Ok... Esta es la presentacion, intentare dejar listo para esta noche el primer tema asi pueden ir comenzando a leer los interesados.
Ante cualquier consulta repito crean un tema nuevo o pueden agregarme a mi msn xa0sph@gmail.com o escribirme.

Suerte!
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #1 en: Junio 11, 2010, 02:25:43 am »
PARTE 1: TEORIA DEL LENGUAJE C/C++

Como es algo muy largo no pondre todo en 1 solo post. Lo hare en varios.

a) El Clásico "Hola Mundo"

Para comenzar vamos a decir que C es un lenguaje que facilita un metodo estructurado para el diseño de aplicaciones.
Al comenzar este tutorial voy a suponer que ya tienen el compilador a mano y ganas de aprender.
No vamos a perder el tiempo hablando de toda la historia de C. Vamos a comenzar por lo que nos interesa. Y como en todo lenguaje lo primero que haremos es un "Hola Mundo"

Código: C
  1. /* Nuestro primer programa
  2. hecho en C */
  3. #include <stdio.h>
  4. #include <conio.h>
  5. main()
  6. {
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Hola Mundo");
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  9. }

Bueno ahora comencemos a explicar.
En una aplicacion en C podemos dejar comentarios dentro de la misma. Esto sirve por ejemplo para cuando hagamos una aplicacion indicar cada paso para cuando veamos en otro momento el codigo nos sea mas facil ubicar todo. O si hacemos un codigo que luego vera otra persona ya que no todos programamos de la misma manera.
En C podemos insertar 2 tipos de comentarios.
Los comentarios que solo tienen 1 linea se ponen luego de 2 barras (//) Por ejemplo:

Código: C
  1. // Esto es un comentario

Ahora. Si nuestro comentario tiene mas de una linea, comenzamos con /* y terminamos con */ Por ejemplo, el comentario que pusimos al principio de nuestro Hola Mundo que fue:

Código: C
  1. /* Nuestro primer programa
  2. hecho en C */

La línea:

Código: C
  1. #include <stdio.h>

Es una libreria que utiliza C. C ya tiene ciertas bibliotecas desarrolladas y guardadas que sirven para entrada y salida de datos, strings, problemas matematicos, etc....
Las lineas que se inician con # son ejecutadas por el procesador antes de la compilacion del programa indicandole que debe incluir el contenido del archivo stdio.h
En el caso de stdio.h contiene funciones que luego vamos a utilizar en el hola mundo como el printf y otro tambien muy utilizado pero que en este caso no lo usamos que es el scanf que ya lo veremos.

La libreria conio.h la debemos declarar porque utilizamos la funcion getch que esta incluida dentro de dicha libreria.

La linea:

Código: C
  1. main()

forma parte de toda aplicacion que hagamos en C. Los parentesis significan que es un bloque constructivo conocido como funcion.
Simpre, todos los programas que hagamos en C comienzan a ejecutarse por el main.
Todas las acciones que se realicen iran entre corchetes los cuales podran ver se abren en la linea de abajo y se cierra al finalizar la aplicacion.

Ahora vamonos a todas las acciones que se realizan dentro del bloque main. Podemos encontrar la linea:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Hola Mundo");

La fucion printf sirve para mostrar algo en la pantalla. En este caso mostramos Hola Mundo, lo cual va escrito entre parentesis y comillas dobles.
Luego de cada accion se debe finalizar con un punto y coma, siempre.
La siguiente linea que encontramos es:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta();

Esta funcion que se incluye dentro de la libreria conio.h lo que hace es congelar la pantalla. De este modo nos queda la consola mostrandonos el mensaje "Hola Mundo" hasta que presionemos una tecla y en ese momento prosigue.
Como luego del getch(); cerramos la llave del bloque main y terminamos el programa, cuando presionen una tecla la aplicacion finalizara.
Si no incluimos el getch(); la aplicacion correria y al no quedar congelada se cerraria rapidamente y no podriamos alcanzar a leer el "Hola Mundo"...

Muy bien los invito a que practiquen y hagan experimentos hasta aqui... ya vamos avanzando de a poco. Acaban de hacer su primera aplicacion en C
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #2 en: Junio 11, 2010, 02:26:27 am »
b) Printf, Scanf, Variables y Tipos de Variables

Ok. Ahora veremos un poco mas en profundidad las funciones de stdio.h printf y scanf y nos introduciremos en lo que son las variables y los tipos de variables existentes en C.

Anteriormente hemos mostrado en pantalla la palabra "Hola Mundo".. pero que pasa si le queremos dar un formato un poco mejor?. Para eso usaremos el caracter de escape que es una barra invertida (\) y combinada con otro caracter nos puede servir para ciertas cosas:

Código: C
  1. \n // Para bajar una linea
  2. \t // Tabulador Horizontal
  3. \\ // Imprime una barra invertida
  4. \ " // Imprime una comilla doble
  5. \% // Imprime el simbolo %

Por ejemplo:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Me llamo Bernardo, Mi nick es Xa0s.\nNaci el dia 13\\02\\92");

Con este codigo lo que hariamos seria imprimir:

Me llamo Bernardo, Mi nick es Xa0s
Naci el dia 13\02\92

Insertando un salto de linea y las barras invertidas de la fecha tal como lo he indicado arriba.

Bueno. Ahora que ya hemos explicado un poco mejor lo que es printf antes de pasar a scanf vamos a aprender un poco de variables.
Las variables son cadenas de caracteres que deben tener entre 1 y 32 digitos. Se aceptan guiones bajos.. Por ejemlo una variable llamada "rt_hacker" seria correcta. Tambien se aceptan numeros pero no pueden comenzar con un numero.
Es importante decir que C distingue mayusculas y minusculas por lo que si hablamos de la variable XA0S es distinto a hablar de xa0s.
Que son las variables?. Las variables son entonces una cadena de caracteres en la cual podemos guardar algun tipo de dato que luego necesitaremos utilizar.

Las variables se declaran del siguiente modo:

Tipo Nombre_de_variable

Los tipos de variables definen cuantos bytes se reservaran en memoria para almacenar el dato.
Las variables pueden ser:

  • ENTERAS: Numero sin decimales entre -32.768 y 32.767. Estas variables reciben el nombre int, ocupan 2 bytes y el formato que utilizaremos sera %d (ya veremos para que sirven los formatos)
  • ENTERO LARGO: Numero sin decimales cuando necesitamos almacenar cantidades mas grandes que con los enteros. Se llaman long, ocupan 4 bytes y su formato es %ld
  • PUNTO FLOTANTE: Numeros con hasta 6 decimales. Se llama float, ocupa 6 bytes y su formato es %f
  • DOBLE PUNTO FLOTANTE: Numeros con hasta 10 decimales. Se llaman double. Ocupan 8 bytes y si formato es %lf
  • CARACTER: Un solo caracter. Se llama char, ocupa 1 byte y su formato es %c
  • STRING: Cadena de caracteres. Se llama string. La palabra que se utiliza es char[n] donde n es el numero maximo de caracteres. Ocupa tantos bytes como caracteres y su formato es %s


Muy bien estos son todos los tipos de variables ahora declaremos una de cada una para dar un ejemplo:

Código: C
  1. int numero; // Declaramos una variable entera llamada numero
  2. long nu_mero; // Declaramos un entero largo llamado nu_mero
  3. float num3ro; // Declaramos un punto flotante llamado num3ro
  4. double Numero; // Declaramos un doble punto flotante llamado Numero
  5. char caracter; // Declaramos un caracter llamado caracter
  6. char caracter25[25]; // Declaramos una cadena de caracteres de un maximo de 25, reservando 25bytes en memoria llamada caracter25.

Es importante notar que luego de declarar las variables pusimos un punto y coma (;). SIEMPRE luego de una accion va el punto y coma.

Ahora vamos a hacer un ejercicio en el que pedimos a una persona que ingrese un numero entero y mostramos un mensaje en antalla que diga "El numero que usted ha elegido es: X"

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int a;
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Por favor ingrese un numero...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a);
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\nEl numero que usted ha elegido es: %d", a);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  10. }

Bueno. Ya hemos explicado las primeras dos lineas en el hola mundo. Ahora veremos que en la tercer linea dice:

Código: C
  1. int a;

Aquí hemos declarado la variable llamada "a" del tipo int (entero). En esta variable almacenaremos el numero que una persona ingrese para luego mostrarlo en pantalla. Notese que hemos declarado la variable fuera del main.
De hacerlo dentro no habria ninguna diferencia. La diferencia entre declararlo dentro y fuera es que si lo declaramos fuera nos servira para todas las funciones de la aplicacion. En cambio si lo declaramos dentro del main nos servira solo para el main. Pero de aqui a un par de capitulos mas adelanta trabajaremos solo con el bloque main.

En fin. Dentro del bloque main las acciones que se realizan son:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Por favor ingrese un numero...\n");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a);
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\nEl numero que usted ha elegido es: %d", a);
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta();

Con el primer printf mostramos un mensaje pidiendo que ingresen un numero y bajamos una linea para que cuando la persona escriba el numero aparezca en la linea de abajo. Asi queda mas ordenado.
Ahora hemos utilizado por primera vez el scanf. Tal como el printf sirve para mostrar datos en pantalla, el scanf sirve para tomar datos que el usuario ingrese. Para tomar un dato debemos colocar dentro del parentesis, en primer lugar entre comillas el formato del dato que queremos tomar. Recordemos que antes cuando explique los distintos tipos de variable dije cual era el formato de todas:

int --> %d
long --> &ld
float --> %f
double --> %lf
char ---> %c
string --> %s

En el caso de la variable que declaramos es una integer (entera en ingles) (int) por lo tanto su formato es %d.
Entonces colocamos el formato entre comillas, cerramos las comillas y seguido de una coma la variable donde queremos almacenar el dato que queremos guardar. Al tratarse de un entero debemos poner antes de la variable el caracter "&".

Finalmente imprimimos una nueva linea. Lo primero que hacemos es dejar 2 espacios en blanco para que nos quede mas ordenado. Entonces dejara dos espacios desde la linea en la cual el usuario ingreso el numero y luego imprimira la leyenda... "El numero que usted ha elegido es" y luego otra vez nos encontramos con el formato. Eso le indica que debe imprimir en la pantalla un numero entero. Pero que entero debe imprimir?. Eso se lo indicamos luego de la leyenda, cerramos la comilla, ponemos una coma y el nombre de la variable que queremos mostrar.

Ahora vamos a hacer uno un poco mas complejo. Vamos a pedir que ingrese 2 numeros en ves de 1. Y luego una leyenda que diga "El primer numero ingresado fue X y el segundo Y".
Adelante...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int x,y;
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&x);
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nIngrese otro numero...\n");
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&y);
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nEl primer numero ingresado fue %d y el segundo %d",x,y);
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  12. }

Bueno. Aqui primero declaramos las variables x y la y. Al igual que la vez anterior pedimos que ingrese un numero con printf y lo almacenamos en una variable con scanf. Luego repetimos el proceso para tomar el segundo numero.
Ahora para mostrar los dos numeros en pantalla hemos puesto la leyenda.. "El primer numero ingresado fue" y luego el formato %d indicando que debe imprimir un numero entero.. y luego seguimos diciendo "y el segundo..." y otra vez el formato %d indicando que debe imprimirse otro numero entero. Y luego debemos indicarle que numeros. Entonces se lo indicamos POR ORDEN. Separados por comas decimos que el primer %d pertenece al valor de X y el segundo pertenece al valor de Y.

Otro dato importante es que al declarar una variable podemos asignarle enseguida un valor. Por ejemplo. Yo quiero declarar la variable del tipo caracter "abc" y cuyo valor por defecto sea "h".. entonces haria asi:

Código: C
  1. char abc="h";

Ok. Por ahora hasta aqui llegamos con variables y las funciones printf y scanf.
Antes de seguir si no les ha quedado nada claro les pido que por favor practiquen y si tienen dudas pregunten. No les hara daño a la vista leerlo mas de una vez al texto.
Suerte!
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #3 en: Junio 11, 2010, 02:26:54 am »
c) Operadores Logicos Y Relacionales, If, Switch

Bueno. Ahora amos a comenzar con los operadores logicos y relacionales en C.
Los operadores relacionales, tal como indica la palabra es la que nos permite relacionar dos valores y son:

  • x < y 

x menor a y

  • x > y

x mayor a y

  • x <= y

x menor o igual a y

  • x >= y

x mayor o igual a y

  • x == y

x igual a y

  • x != y

x distinto a y

Y los operadores logicos que son:

  • x && y

x y y
  • x || y

x o y
  • x ! y

x no y

Utilizando estos operadores logicos y relacionales podemos adentrarnos en lo que son las condiciones.
Para eso vamos a aprender IF (Si en ingles).

Para esto vamos a hacer una aplicacion que pida que ingresen 2 numeros. Compare los numeros y muestre una leyenda indicando cual de los 2 es el mayor. Y si son iguales que lo diga. Numeros enteros. Vamos a hacerlo...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int x,y;
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&x);
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nIngrese otro numero...\n");
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&y);
  10. if(x>y)
  11. {
  12. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n%d es el mayor",x);
  13. }
  14. else
  15. {
  16. if(x<y)
  17. {
  18. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n%d es el mayor",y);
  19. }
  20. else
  21. {
  22. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n%d y %d son iguales",x,y);
  23. }
  24. }
  25. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  26. }

Bueno.. delclaramos las librerias, las variables, pedimos con printf que ingresen dos numeros y los tomamos y almacenamos con scanf. Eso ya no tengo que explicarlo.
Vamos a detenernos en el if.. vemos que pusimos la condicion IF y entre parentesis pusimos que x debia ser mayor que y.
Si esto se determina VERDADERO. Osea, x es mayor que y. Se ejecuta todo lo que se encuentra entre las llaves.
Si esto se determina falso. Osea que x es menor o igual que y. Se ejecuta el segundo bloque que viene luego del else.
Al hacer una condicion el segundo bloque no es obligatorio pero el primero si. Es decir, SIEMPRE tiene que realizarse una accion en caso que la condicion sea verdadera pero no es necesario el else, se puede terminar cerrando la llave del bloque que se ejecuta en caso de ser verdadera y listo.
En este caso particular no porque tenemos que indicar que numero es el mayor, por lo tanto si esta condicion se determina falsa sabemos que x no es mayor que y pero puede ser menor o puede ser igual. Entonces vamos a comprobar nuevamente con otra condicion dentro de el bloque else de la condicion que ya creamos para comprobar si y es mayor que x. En caso de darse verdadero ya sabemos esto, en caso de ser falso, antes comprobamos que x no era mayor que y y ahora comprobamos que y tampoco es mayor que x por lo tanto son iguales.

La condicion es algo sencillo. Nos permite comprar dos o mas cosas utilizando operadores logicos o relacionales.

Muy bien ahora pasemos a lo que es un Switch.
Mediante la funcion Switch podemos analizar una variable por ejemplo y segun su valor establecer distintas acciónes que se daran.
Quiza sea dificil comprender leyendo la explicacion pero con un ejemplo todo queda solucionado.

Hagamos una aplicacion que pida ingresar un numero del 1 al 5. Y que luego escriba con letras el numero que la persona ingreso.
Hagamoslo...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int num;
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero del 1 al 5:\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num);
  8. switch(num)
  9. {
  10. case 1:
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Has ingresado el numero uno");
  12. break;
  13. case 2:
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Has ingresado el numero dos");
  15. break;
  16. case 3:
  17. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Has ingresado el numero tres");
  18. break;
  19. case 4:
  20. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Has ingresado el numero cuatro");
  21. break;
  22. case 5:
  23. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Has ingresado el numero cinco");
  24. break;
  25. default:
  26. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El numero ingresado es incorrecto");
  27. }
  28. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  29. }

Bueno. Como veran declaramos la variable entera num y pedimos al usuario que ingrese un numero. Seguido de esto utilizamos la fucion switch con la variable num.. lo que se ve en esta linea:

Código: C
  1. switch(num)

Y luego entre llaves vamos mencionando los posibles valores de num y las acciones a realizar en cada uno.
Vemos que fuimos pusiendo...

Código: C
  1. Case 1 // En caso de ser 1 el valor de num
  2. Case 2 // En caso de ser 2 el valor de num
  3. Case 3 // En caso de ser 3 el valor de num
  4. Case 4 // En caso de ser 4 el valor de num
  5. Case 5 // En caso de ser 5 el valor de num

Luego de cada case van dos puntos ( : ) y la accion a realizar.
Luego de definir la accion a realizar se ingresa el comando break;
Esto debe ingresarse siempre menos en el ultimo case. En ese caso no es obligatorio.
Nuestro ultimo case.. no lo llamamos asi sino que lo llamamos default. El default es la accion que se ejecuta en caso que ninguna de las definidas anteriormente sea valida. Por ejemplo.. si el numero ingresado no es un numero del 1 al 5 va a mostrar las acciones de default.
No es obligatorio poner una accion por defecto en un switch.

Ok. Los invito a que practiquen con esto, que hagan sus propios ejercicios y jueguen con el lenguaje C.
Muy bien. Para terminar con la primera parte solo me quedaria explicar los bucles While, Do While y For y con eso ya la terminariamos pero ahora es algo tarde y estoy cansado asi que mañana termino sin falta esta primera parte y comenzare ya con la segunda.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #4 en: Junio 11, 2010, 02:27:19 am »
d) While - Do While - For

Ok vamos a proseguir por donde deje anoche. Habiamos visto la condicion If y Switch.
Ahora vamos a ver la estructura repetitiva While.
Como acabo de decir, while es una estructura repetitiva. ¿Qué quiero decir con esto?. Quiero decir que mientras una condicion se determine verdadera se va a ejecutar un determinado bloque una y otra vez hasta que la condicion se determine falsa. En ese momento prosigue...

Veamoslo con un ejemplo. Queremos hacer una aplicacion que le pida a una persona ingresar un numero entero y que luego se impriman todos los numeros hasta llegar a ese. Por ejemplo si el usuario introduce el numero 5 que se impriman los numeros 1, 2, 3, 4, 5
Hagamoslo...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int num1, num2=0;
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num1);
  8. while(num1!=num2)
  9. {
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d\n",num2);
  11. num2++;
  12. }
  13. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nFin");
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  15. }

Muy bien lo que hicimos es declarar dos variables enteras num1 y num2.. A num2 le dimos el valor 0.
Luego pedimo al usuario que ingrese un numero y lo almacenamos en la variable num1. Y aqui comenzamos con el while.
Como condicion pusimos que num1 tenia que ser distinto a num2. En caso de que esto sea verdadero se ejecuta el bloque que hay entre las llaves, en caso que sea falso sigue ejecutando el resto de la aplicacion. Supongamos que el usuario ingreso el numero 5. num2 tiene valor 0 y num1 tiene valor 5 por lo tanto la condicion "num1 distinto a num2" es verdadera, por lo tanto se ejecuta el bloque.. que en este caso es:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d\n",num2);
  2. num2++;

Con esto lo que hacemos es, en la primer linea imprimir en pantalla el valor de num2 como ya sabran. Y en la segunda linea lo que hacemos es aumentar el valor de num2 en 1. En C, decir num2++ es igual a decir num2 = num2+1 y del mismo modo si queremos disminuir un numero, en ese caso seria num2-- y seria lo mismo que decir num2 = num2-1
Entonces, imprimimos el numero 0 que era el valor de num2 y luego lo aumentamos en 1 por lo que ahora num2 va a tener un valor de 1.
Como la condicion se dio verdadera se ejecuta el bloque y luego de ejecutar el bloque va a volver a comprobar la condicion. num1 sigue siendo 5, num2 ahora es 1. La condicion se vuelve a dar verdadera ya que num1 sigue siendo distinto a num2. Por lo tanto se va a imprimir en pantalla el numero 1 que es el valor de num2 y se va a aumentar nuevamente en 1. Ahora num2 tiene un valor de 2.
Otra vez se vuelve a comprobar la condicion. Sigue siendo verdadera. num2 tiene valor 2 y num1 5. Por lo tanto se va a imprimir en pantalla el 2 y va a aumentar uno y va a quedar con valor 3. Y asi se seguira repitiendo hasta el momento que num2 aumente un numero y quede con valor 5. En ese momento cuando num1 tenga valor 5 y num2 tambien valor 5, la condicion "num1 distinto a num2" se va a determinar falsa ya que son iguales. Aqui entonces acaba el bucle repetitivo y sigue con el resto del codigo. En este caso el resto del codigo es:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nFin");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta();

Por lo que va a imprimir en pantalla la palabra "Fin" y va a dejar congelada la aplicación.

Bueno. Creo que ha quedado mas que claro el funcionamiento de While. Ahora vamos a pasar a Do While que es muy parecido al anterior.
En el while, primero damos la condicion, si la condicion es verdadera ejecuta el bloque sino sigue de largo. Osea, si la condicion se determina falsa desde un primer momento, NUNCA ejecuta el bloque del while.
Con Do While en camio, primero especificamos las acciones a ejecutar y luego la condicion. Por lo tanto dichas acciones se van a ejecutar por lo menos 1 vez. Luego de ejecutarlas 1 vez llegara a la condicion, si la condicion se determina verdadera lo volvera a ejecutar del mismo modo que con While hasta que sea falsa. Si se determina falsa desde un primer momento seguira de largo pero ya habra ejecutado 1 vez las acciones. ¿Se entiende?
Vamos a hacer un ejemplo parecido al anterior...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int num1, num2=100;
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero entero menor a 100\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num1);
  8. while(num1>=100)
  9. {
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nEl numero debe ser menor a 100, ingreselo nuevamente\n");
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num1);
  12. }
  13. do
  14. {
  15. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n %d",num1);
  16. num1++;
  17. } while(num1<=num2);
  18. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nFin");
  19. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  20. }

Bueno aqui se las he complicado un poco porque les puse While y Do While en un mismo ejemplo para que vean bien como funciona.
Ok. En primer lugar declaramos las varianles num1 y num2 y pedimos al usuario que ingrese un numero menor a 100.
Luego vemos que aparece un while.
La condicion es "num1 mayor a 100". Si la condicion se da verdadera significa que el idiota del usuario no sabe lo que significa ingresar un numero menor a 100 y ha ingresado uno mayor. Entonces, se ejecuta el bloque del while en el que se le pide que vuelva a ingresar un numero y se sobreescribe en la variable num1. Luego de pedirle que vuelva a ingresar un numero se vuelve a comprobar. Si el usuario ha ingresado un numero mayor a 100 volvera a ejecutarse el bloque de while asi que hasta que no ingrese uno menor no va a poder seguir adelante nunca porque la condicion while va a seguir siendo verdadera y no va a seguir ejecutando la aplicacion.
Cuando esta condicion se de falsa se sigue adelante.
Si la persona desde el principio ingreso un numero correcto, por ejemplo 70. La condicion se va a dar falsa desde el primer momento asi que no va a ejecutar las acciones del while ninguna vez.
Luego del while nos encontramos con esto:

Código: C
  1. do
  2. {
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n %d",num1);
  4. num1++;
  5. } while(num1<=num2);
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nFin");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta();

Aquí esta el famoso Do While.
Lo que esta entre las llaves del Do son las acciones que se van a realizar. Lo que esta entre parentesis en el While que aparece al terminar el Do es la condicion.
La primera vez el Do se va a ejecutar si o si. Por lo tanto se va imprimir el pantalla el valor de num1. Supongamos que el usuario introdujo 70. Entonces se imprimira 70 y se aumentara en 1 por lo tanto ahora el valor sera 71.
Luego se comprueba la condicion "num1 menor o igual a num2". Recordemos que al declarar num2 le dimos un valor de 100 algo que fue totalmente al pedo porque no era necesario haber creado una variable que solo usariamos una vez. Podriamos haber creado unicamente la variable num1, no la num2 y luego en el while que es en el unico lugar que usamos num2, en ves de poner "num<=num2" ondriamos "num1<=100"
Bueno.. en este caso es 71 por lo tanto es menor a 100. La condicion es VERDADERA. Por lo que se volvera a ejecutar el bloque Do, aumentara a 72 y otra vez se dara verdadera y asi hasta que llegue a 100 cuando se determine falsa ya que seran iguales.
En ese momento sigue ejecutando el resto del codigo que en este caso al igual que en el ejemplo anterior solo es mostrar un menaje en pantalla y congelar la aplicacion.

Muy bien. While y Do While ya estan claros.
Ahora vayamos con For.

A diferencia de While y Do While que lo hemos analizado anteriormente. A for lo voy a utilizar cuando se EXACTAMENTE la cantidad de repeticiones que se deben hacer.
La sintaxis de for es:

Código: C
  1. for(variable = expresion; condicion; accion a la condicion)
  2. {
  3. acciones;
  4. }

Bueno. Para darlo a entender nada mejor que un ejemplo... Vamos a imprimir en pantalla todos los numeros desde el 1 hasta el 300.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int a;
  4. main()
  5. {
  6. for(a=1;a<=300;a++)
  7. {
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d\n",a);
  9. }
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  11. }

Como veran. Primero que nada declaramos la variable a. Luego en el foro pusimos en primer lugar la variable asignandole un valor, en este caso le dimos el valor 1. Luego separado con un punto y com ( ; ) la condicion que en este caso es "a menor o igual a 300" y en tercer lugar la progrecion o accion de la condicion, que en este caso es ir aumentando en 1.
Entonces, mientras la condicion "a menor o igual a 300" sea verdadera se ejecuta lo que esta dentro del bloque y luego se ejecuta la accion de la condicion es decir se le suma uno. Luego de hacer esto se vuelve a comprobar la condicion y si es verdadera otra vez se ejecuta lo que hay dentro del bloque y luego se ejecuta la accion de la condicion, aumentandose nuevamente en uno.. y asi hasta que se de falsa.

He visto y seguro que muchos tambien en varios foros, que algunos tienen como firma una especie de tira comica en la que una profesora le pide a su alumno que escriba en el pizzaron 300 veces algo.. no recuerdo si eran 300 veces ni que es lo que le pide que escriba pero vamos a suponer que le pide que escribe 300 veces "no comere en clase".. y el niño en el pizzaron utiliza la sentencia for del mismo modo que lo hicimos nosotros para escribirlo.. seria algo asi.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int a;
  4. main()
  5. {
  6. for(a=1;a<=300;a++)
  7. {
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("No comere en clases\n");
  9. }
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  11. }

Como veran esto es igual al anterior solo que en ves de imprimir el valor de a que va aumentando, escribimos la frase "No comere en clases"

Bueno. Aqui terminamos la parte 1. Me ha llevado buen rato escribir todo esto asi que si lo ponen en otro lado respeten el autor y la fuente.
En unos minutos voy a dejarles algunos ejercicios para que practiquen todas las cosas que hemos visto en esta primera parte y mi recomendacion para los que estan aprendiendo es que si no entendieron algo, crean un nuevo tema y preguntan. Que si continuan con la segunda parte cuando no han entendido todavia la primera va a ser para peor.

Ok. Los dejo un rato mientras copio algunos ejercicios.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #5 en: Junio 11, 2010, 02:27:49 am »
PARTE 2 - CADENA DE CARACTERES

Ok tenia planeado dejarles algunos ejerccios para que practiquen toda la parte uno pero la parte 2 es algo corta asi que creo que les dare primero esta parte y luego los ejercicios  :notefumesporrosxD

Bueno. Esta parte habla sobre "Cadena de Caracteres"
Una cadena de caracteres es el conjunto de numeros, letras y simbolos.
En C se llaman Arreglos de caracteres, donde arreglo es una estructuras de datos relacionados que reciben un nombre.
Los arreglos ocupan lugar en memoria. Cada caracter ocupa 1 byte.
Por ejemplo, si queremos guardar una cadena de caracteres con un nombre, se haria de la siguiente manera:

Código: C
  1. char nombre[15]; // Donde 15 son los bytes que se reservan y es la cantidad estimada de la cadena de caracteres

Es importante que si queremos guardar un nombre no pongamos que se reserven 100 bytes ya que un nombre no tendra eso y estaremos usando varios bytes para nada.

Si nosotros creamos una cadena de caracteres con una longitud maxima de 5 por ejemplo, y se ingresa una palabra de 8 caracteres, se guardaran los primeros 5 unicamente ya que 5 es la cantidad maxima que pusimos.

En toda la primera parte habiamos trabajado unicamente con numeros. Ahora vamos a ampliarnos un poco mas hacia lo que es cadena de caracteres y trabajar con letras tambien.
Vamos a hacer una aplicación que nos pregunte cual es nuestro nombre y que luego que lo ingresemos nos diga.. "Tu nombre es" y nuestro nombre.

En la parte 1 seccion B habiamos hablado de los tipos de variables en la cual mencionamos la cadena de caracteres y dijimos que su formato era %s.
Antes habiamos trabajado siempre con %d que es el formato de los numeros enteros.

Muy bien hagamos la aplicacion...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. char nombre[10];
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingresa tu nombre...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%s",nombre);
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nTe llamas %s",nombre);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  10. }

Fijense que a comparacion de como veniamos haciendo antes con los numeros, en el scanf no necesito poner el simbolo & antes del nombre del la variable en el cual quiero guardar el dato ingresado por el usuario.
Ok. Les pido que compilen esa aplicacion y pongan su nombre. SOLO SU NOMBRE y vean como les dice "Te llamas Pedro" por ejemplo.
Una vez que hayan hecho eso vamos a reservar mas bytes. Vamos a reservar unos 50. Por lo que la tercera linea quedaria:

Código: C
  1. char nombre[50];

Y vamos a escribir nuestro nombre y apellido completo..
¿Que sucede al hacer esto?
Seguramente han notado que cuando dejaron un espacio para poner su segundo nombre o su apellido no ha guardado el resto cierto? Ha guardado solo hasta que dejaron un espacio y el resto se ha "perdido".
Esto es porque C entiende un espacio como que ha terminado la cadena de caracteres y no guarda nada despues de eso.
Pero entonces... ¿Cómo hacemos para guardar una cadena de caracteres con espacios?
Para eso vamos a utilizar el siguiente formato al momento de hacer el scanf

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta(" %[^\n]", nombre);

Entre los corchetes se pueden enumerar todos los caracteres que se quieren entrar pero no es algo muy recomendado ya que son muchos caracteres entonces mejor se le indica cual es el que NO SE VA A CONSIDERAR, es decir el caracter que va a indicar fin de entrada de datos.
Para esto se coloca el simbolo ^ y el caracter de fin.
De este modo se considera todos menos el enter, y la entrada se corta con el enter.

MUY IMPORTANTE: Entre " y % dejar un espacio en blanco. De este modo siempre que se cargue un nuevo nombre se limpia el buffer de entrada de datos.

Todo esto se aplica al scanf. Luego para mostrar los datos en el printf se hace igual que lo hemos hecho siempre. Con el formato de las cadenas de caracteres que es %s y el nombre de la variable a mostrar.

Ahora si pueden poner si nombre y apellido y no tendran problemas para verlo. Aquí les dejo como quedaria el source:

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. char nombre[50];
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingresa tu nombre y apellido...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta(" %[^\n]",nombre);
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nTe llamas %s",nombre);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  10. }

Ok.. pero con cadenas de caracteres tambien podemos realizar otras acciones como copiar, comparar, concatanear u otras...
Para ello debemos habilitar la biblioteca string.h por lo tanto ya se suma otra biblioteca a nuestro diccionario  :wasaaa!!xD
En esta biblioteca estan definidas dichas funciones y solo debemos llamarlas y listo.

Si tenemos que asignar el valor de una variable char a otra char NO se utiliza el signi = como podria hacerse con los numeros enteros

Código: C
  1. num1 = num2

En este caso debemos utilizar la funcion de la libreria string.h llamada strcpy()
Dicha funcion es:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta(s1,s2);

Lo que hace esto es copiar el valor de la cadena de caracteres s2, en la cadena s1.
Hagamoslo con un ejemplo. Creemos dos variables del tipo char. Pidamos ingresar unicamente el nombre el cual lo almacenaremos en una variable. Luego con dicha funcion la copiaremos el valor de esa variable a la otra y la imprimiremos.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. char nom1[10], nom2[10];
  5. main()
  6. {
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese su nombre...\n");
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%s",nom1);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta(nom2,nom1);
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Tu nombre es %s",nom2);
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  12. }

En primer lugar como veran se agrego la linea:

Código: C
  1. #include <string.h>

Luego se le pidio al usuario que introduzca un nombre cuyo valor se guardo en la variable nom1.
Luego con la funcion strcpy copiamos el valor de nom1 en nom2 y finalmente imprimimos nom2 y dejamos congelada la aplicación.

Pero que pasa si queremos copiar solo parte de una variable en otra?. Por ejemplo solo los primeros 3 caracteres?
En ese caso se haria de este modo:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta(s1,s2,3);

Como veran se le pasa un tercer parametro con la cantidad de caracteres a copiar.
Vamos a reemplazar en el ejemplo que hicimos anteriormente las siguientes lineas:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta(nom2,nom1);
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Tu nombre es %s",nom2);

Y vamos a poner.

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta(nom2,nom1,3);
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Las 3 primeras letras de tu nombre son %s y tu nombre completo es %s",nom2,nom1);

Y ahora pruebenlo nuevamente.
Ahora bien. Como comparamos si una variable es igual a otra?
Para esto utilizamos otra fucion incluida dentro de string.h que es strcmp()
Por ejemplo:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta(S1,S2);

Esto comara la cadena s1 con s2 y devuelve un valor entero.
Devuelve 0 si ambas son iguales, < 0 si S1 es menor a S2 y > 0 si S1 es mayor a S2.

Pero.. que significa que S1 es mayor o menor a S2?
Todos los caracteres se corresonden a un codigo universal como ASCII o EBCDIC donde siguen el orden alfanumerico. Esto permite ir comparando caracter por caracter y si sus codigos son iguales devuelve un 0. Si el caracter de S1 es anterior al de S2 devuelve < 0 y si es posterior > 0.

NADA
NULO

N y N so iguales. Entonces compara el siguiente. A esta antes que U es decir el codigo ASCII de la A es menor al de la U o sea al restarlos da negativo, no compara mas y devuelve < 0

ESPECIE
ESPECIAL

Hasta la I compara caracter por caracter y todos son iguales. Pero luego la E esta despues que la A, osea que al restarlos da positivo. Ahi no compara mas y devuelve > 0

Ahora vamos a hacer una aplicacion que pida ingresar 2 nombres y compare si son iguales no.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. char n1[10],n2[10];
  5. main()
  6. {
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un nombre:\n");
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%s",n1);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nIngrese otro nombre:\n");
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%s",n2);
  11. if(No tienes permisos para ver links. Registrate o Entra con tu cuenta(n1,n2)==0)
  12. {
  13. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nLos nombres son iguales");
  14. }else
  15. {
  16. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nLos nombres son distintos");
  17. }
  18. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  19. }

Bueno. Con esto terminamos la segunda parte. Como dije era algo corta. Asi que ahora si les pondre ejercicios de la primera y segunda parte para que los hagan y vean si van bien para la tercera...
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #6 en: Junio 11, 2010, 02:28:18 am »
PRACTICAS PARTES 1 Y 2

Ok primero os dare una serie de ejercicios resueltos y finalmente les dare algunos para resolver.
Quien tenga alguna duda crea un nuevo tema y pregunta.

Problema Nº1:

Dado el siguiente programa C:

Código: C
  1. #include <stdio.h>
  2. main()
  3. {
  4. int x, cuad, cubo;
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta("X\t cuad(X)\t cubo(X)\n");
  6. for(x=cuad=cubo=0;x<=10;x++, cuad=x*x,cubo=x*x*x)
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d\t %d\t %d\n",x,cuad,cubo);
  8. }

Escribir el programa anterior utilizando la proposicion While y la proposicion Do While.

Aclaracion: Como veran en el problema no se ha encerrado la accion del for entre llaves. Cuando las acciones solo son 1 como en este caso que se utiliza el printf no es necesario poner llaves. Cuando son varias acciones si. En mi caso particular uso siempre lleves por cuestion de orden pero eso esta en cada uno. Esto se aplica al for, al if, while, do while y a los case del switch.

Utilizando While:

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int x=0, cuad=0, cubo=0;
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("X\t cuad(X)\t cubo(X)\n");
  7. while(x<=10)
  8. {
  9. cuad=x*x;
  10. cubo=x*x*x;
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d\t %d\t %d\n",x,cuad,cubo);
  12. x++;
  13. }
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  15. }

Utilizando Do While:

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int x=0, cuad=0, cubo=0;
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("X\t cuad(X)\t cubo(X)\n");
  7. do
  8. {
  9. cuad=x*x;
  10. cubo=x*x*x;
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d\t %d\t %d\n",x,cuad,cubo);
  12. x++;
  13. }while(x<=10);
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  15. }

Problema Nº2:

Ingresar 20 numeros e informar cuatos fueron mayores, cuantos menores y cuantos iguales a cero.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int cuenta=0, n, mayor=0, menor=0, igual=0;
  4. main()
  5. {
  6. while(cuenta<20)
  7. {
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero\n");
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&n);
  10. if(n<0)
  11. {
  12. menor++;
  13. }
  14. else
  15. {
  16. if(n>0)
  17. {
  18. mayor++;
  19. }
  20. else
  21. {
  22. igual++;
  23. }
  24. }
  25. cuenta++;
  26. }
  27. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Hay %d mayores, %d menores y %d iguales",mayor,menor,igual);
  28. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  29. }

Problema Nº3:

Ingresar 10 numeros, mostrar el mayor y el menor de ellos.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int cuenta=0, n, mayor, menor;
  4. main()
  5. {
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&n);
  8. n=mayor=menor;
  9. while(cuenta<9)
  10. {
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero\n");
  12. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&n);
  13. if(n<menor)
  14. {
  15. menor=n;
  16. }
  17. if(n>mayor)
  18. {
  19. mayor=n;
  20. }
  21. cuenta++;
  22. }
  23. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El mayor es %d y el menor es %d",mayor,menor);
  24. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  25. }

Problema Nº4:

Ingresar 5 numeros. Calcular y listar el promedio.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int cuenta=0, n, suma=0;
  4. float promedio;
  5. main()
  6. {
  7. while(cuenta<5)
  8. {
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero\n");
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&n);
  11. suma+=n;
  12. cuenta++;
  13. }
  14. promedio=suma/5;
  15. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El promedio es %.2f",promedio);
  16. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  17. }

Muy bien. En este ejercicio para el promedio he utilizado el tipo de variable float porque puede tener decimales. Notese que cuando imprimi el promedio puse %.2f
Esto sirve para que si tiene muchos decimales solo se impriman 2. No mas de 2. Sin esto se imprime todos los decimales soportados por el float.

Ok. Ahora les dare ejercicios sin resolver para que hagan ustedes:

Problema Nº1:

Ingresar la medida de un angulo y determinar si es AGUDO, OBTUSO, RECTO, NULO O LLANO. Si el valor es mayor que 180º listar la leyenda "Dato No Valido", e ingresar un nuevo valor.

Problema Nº2:

Hacer un programa, tal que dado un numero cualquiera A ingresado, si es positivo calcule la raiz cuadrada, si es negativo calcule su cuadrado lisando el valor y el resultado. Si es cero, listar por pantalla "INGRESÓ UN VALOR NULO"

Problema Nº3:

Leer una lista de diez numeros, contar cuantos de ellos son mayores que 23.

Problema Nº5:

Leer una lisa de edades de 15 personas, determinar y listar el promedio de edad de los mayores de 18, el promedio de lso menores de 18 y la cantidad de personas de 18 años de la lista

Problema Nº6:

Hacer un programa que permita imprimir los numeros naturales de 1 a 30, con sus cuadrados y sus cubos

Problema Nº7:

Ingresar dos numeros cualquiera, calcular el producto y determinar si es positivo, negativo o cero. Listar el resultado y la leyenda correspondiente.

Problema Nº8:

Ingresar un numero y determinar todos los multiplos de 3 desde 0 hasta dicho numero

Problema Nº9:

Ingresar los datos de un rectangulo y calcular y lista los valores del perimetro, superficie y la diagonal, como asi una leyenda que aclare cada valor.

Problema Nº10:

Una empresa conoce para cada empleado los siguientes datos:

- Nombre
- Sueldo
- Categoria

Hay 100 empleados, distribuidos en 3 categorias (1, 2 y 3), se pide:

a) Total de sueldos que paga la empresa
b) Cantidad de empleados que ganan mas de $2000
c) Cantidad de empleados que ganan menos de $500 y cuya categoria sea 1
d) Nombre del empleado que mas gana
e) Sueldo maximo
f) Total de sueldos de cada categoria
g) Sueldo promedio

Problema Nº11:

Una empresa elaboradora de desinfecantes incrementa las ventas debido a la cólera.
En cada factura de venta se registra la siguiente información:

- Nro. de factura
- Nro. de articulo
- Cantidad (en litros)
- Precio unitario (en litros)

El ingeso de datos finaliza con el Nro de factura = 0
Se pide:

a) Cuál fue la facturacion mensual
b) Cuanto se vendio el articulo 1 (en litros)
c) Cuantas facturas de mas de $1500 se emitieron

Problema Nº12:

Ingresar para un relevamiento los siguientes datos:

- Tipo de ambiente (Casa, departamento, PH)
- Cantidad de ambientes
- Precio
- Ciudad

Hasta que el tipo de inmueble sea 0 y el barrio sea 0 calcular y mostrar:

a) El precio promedio por tipo de inmueble
b) El precio promedio de la ciudad de Sevilla segun la cantidad de ambientes
c) De todas las casas que porcentaje son de Barcelona
d) El barrio cuyo departamento de 4 ambientes sea mas caro
e) La cantidad de ambientes y el nombre de ciudad del dep. mas economico
f) El valor total de las casas de la ciudad Madrid
g) En la ciudad de Saragoza que porcentaje de PH hay?

Ok diviertanse con estos ejercicios, si quieren practicar mas me piden y yo les pasare en un tema nuevo o donde sea.
Lo proximo sera la PARTE 3. En cuanto pueda la hago.

Suerte!
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #7 en: Junio 11, 2010, 02:28:46 am »
PARTE 3 - FUNCIONES

Ok. Gracias ps1c0s1s. Creo que me esta quedando bien el tutorial  :wasaaa!!xD
Bueno. En esta tercera parte veremos el tema de FUNCIONES.
Este tema es muy corto y facil asi que si entendieron los anteriores no tendran problemas para entender este.
Una vez que lo termine les dare una serie de ejercicios para que sigan practicando. Espero que los hagan todos asi se les mete bien en la cabeza todo.
Ok. Vamos a comenzar.

Las funciones son una especie de programas dentro de otro programa. Nos permiten organizar varias acciones bajo un solo nombre.
De este modo podemos dividir un proyecto grande en pequeñas partes.
La division del codigo en funciones tiene la ventaja de que estas se puedan reutilizar en el mismo programa o en otros sin la necesidad de volver a escribir linea por linea todo.

En C las funciones no pueden anidarse. Es decir, no se puede crear una funcion dentro de otra funcion.

Una funcion se define de la siguiente manera:

Código: C
  1. Tipo de retorno Nombre(tipo1 argumento1, tipo2 argumento2, tipo3 argumento3.... tipoN argumentoN)
  2. {
  3. Cuerpo de la funcion. Acciones a realizar
  4. return expresion;
  5. }

TIPO DE RETORNO: Es el tipo de resultado que dara una funcion. Por ejemplo si hacemos una funcion que calcule la suma de dos numeros enteros, el resultado que dara la funcion sera otro numero entero, por lo tanto es de tipo int. Los tipos de funciones son los mismos que habiamos definido con las variables: int, long, char, double, etc...
NOMBRE: Es el nombre que tendra la funcion. Entre 1 y 32 caracteres. Puede comenzar con una letra o guion bajo. Igual que las variables.
TIPOS Y ARGUMENTOS: Son las variables y agumentos que utilizaremos dentro de la funcion. Por ejemplo int n1, int n2
CUERPO: Son las acciones que se van a realizar
RETURN: Las funciones se finalizan con el retorno, el valor que van a devolver.

Vamos a hacer un ejemplo de una funcion que sirve para sumar dos numeros:

Código: C
  1. int suma(int n1, int n2)
  2. {
  3. int total;
  4. total=n1+n2;
  5. return total;
  6. }

Como veran. La funcion es del tipo int, se llama suma. La lista de parametros que pongo entre parentesis son dos del tipo int con nombres n1, n2.
Luego dentro de la funcion creo la variable entera total. Las variables que creemos dentro de la funcion serviran solo DENTRO. No seran validas en el main o en otra funcion.
Ahora las variables que declaremos fuera de las funciones y del main podran ser utilizadas en cualquier lado.
Luego le asignamos a esa variable total la suma de n1 y n2. Y finalmente retornamos el valor de total.

Ahora vamos a ver como declaramos una funcion y como la llamamos.
Vamos a hacer un ejemplo. Un programa que pedira ingresar dos numeros y dira cual de ellos es el mayor.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int mayor(int n1, int n2);
  4. main()
  5. {
  6. int num1, num2, r;
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero...\n");
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num1);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese otro numero...\n");
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num2);
  11.  
  12. while(num1==num2)
  13. {
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Los numeros ingresados son iguales. Ingrese un numero distinto a %d\n",num2);
  15. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&num2);
  16. }
  17.  
  18. r = mayor(num1,num2);
  19. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El mayor es %d",r);
  20. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  21. }
  22.  
  23. int mayor(int n1, int n2)
  24. {
  25. if(n1<n2)
  26. {
  27. return n2;
  28. }else{
  29. return n1;
  30. }
  31. }

Ok analicemos. Vemos que en la tercer linea aparece esto:

Código: C
  1. int mayor(int n1, int n2);

Aqui lo que estamos haciendo es declarando una funcion que luego desarrollaremos. Declaramos el tipo, nombre y argumentos con su correspondiente tipo entre parentesis. Luego un punto y coma y seguimos...
Esto es obligatorio. Si no hacen esto, cuando llaman a la funcion desde el main en la linea:

Código: C
  1. r = mayor(num1,num2);

Les dara un error ya que C va leyendo desde la primera linea hacia abajo por lo tanto al momento de leer eso todavia no leyo la funcion y no "conoce" de su existencia. En caso que no declaremos la funcion, tendremos que desarrollarla antes de llamarla en el main. Es decir, todo el desarrollo de la funcion mayor tendria que ir antes del main para que cuando la llamemos desde el main esa parte ya haya sido leida.

Luego de declarar la funcion ya podemos utilizarla sin problemas en el main.
Cuando la llamamos, fijense que hicimos lo hicimos por el nombre de la funcion y entre parentesis le pasamos los valores que van a tener los argumentos n1 y n2. En este caso el argumento n1 va a tener el valor de num1 y el argumento n2 va a tener el valor de num2.
Finalmente esta funcion va a retornar un valor que sera el valor del numero mayor y ese valor que retorne se va a almacenar en la variable r ya que pusimos que r era igual a la funcion mayor con los valores num1 y num2.

Ahora veamos como hicimos la funcion...

Código: C
  1. int mayor(int n1, int n2)
  2. {
  3. if(n1<n2)
  4. {
  5. return n2;
  6. }else{
  7. return n1;
  8. }

Comenzamos diciendo nuevamente el tipo, nombre de funcion y los argumentos entre parentesis, y luego entre llaves definimos las acciones. El argumento n1 va a tener el valor de num1 porque asi lo definimos al llamar a la funcion desde la linea:

Código: C
  1. r = mayor(num1,num2);

y el argumento n2 va a tener el valor de num2.
Con un if comparamos si n1 es menor a n2.
Si la condicion se da verdadera retornamos el valor de n2 ya que seria el mayor.
Si la condicion se da falsa significa que el mayor es n1 por lo tanto retornamos ese valor.

Muy bien. Como habran visto funciones es un tema muy corto y facil. Ya hemos terminado con lo que es funciones.
A continuacion voy a dejarles una serie de ejercicios para que puedan practicar.
Recuerden que por cualquier cosa solo deben hacer la consulta y listo.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #8 en: Junio 11, 2010, 02:29:12 am »
EJERCICIOS PARTE 3:

Ok aqui les dejo varios ejercicios para que practiquen. Espero que los hagan y no sigan de largo sin practicar porque asi va a ser muy probable que en algun punto se pierdan o no terminen de entender bien algunos conceptos.

Problema Nº1:

Realizar una función que indique entre dos numeros cuál es el mayor. Generar un programa que muestre su funcionamiento.

Problema Nº2:

Escribir una funcion que calcule el factorial de un numero entero.
Aclaracion: Imagino que muchos no tendran p*** idea de que es un factorial. El factorial de un numero es la suma de todos los numeros hasta llegar a ese. Por ejemplo el factorial de 6 es el resultado de 1+2+3+4+5+6 osea 21

Problema Nº3:

Escribir una función que se le pase como parámetro dos numeros, n1 y n2 y tiene que devolver, la suma de todos los numeros multiplos de 3 comprendidos entre n1 y n1*n2
Ej: Si se pasa n1=3 y n2=5 habria que devolver suma = 3+6+9+12+15

Problema Nº4:

Escribir una funcion que calcule el maximo comun divisor de dos numeros enteros.

Problema Nº5:

Hacer una funcion que dada una hora representada por 3 numeros, hora, minutos y segundos devuelva el numero total de segundos

Problema Nº6:

Un numero entero se dice un numero perfecto si sus divisores, incluyendo a 1 (pero excluyendo al numero mismo) suman igual que el numero. Por ejemplo 6 es un numero perfecto porque 6 = 1+2+3. Escribir una funcion que determine si el parametro "n" es un numero perfecto. Utilizar esta funcion en un programa que determine e imprima todos los numeros perfectos entre 1 y 1000. Imprimir los factores de cada numero perfecto para poder confirmar que el numero es efectivamente perfecto.

Problema Nº7:

Escribir una funcion que calcule el valor del termino de la sucesion del Fibonacci correspondiente a un numero entero determinado.

Problema Nº8:

Escribir una funcion que calcule el numero combinatorio de N elementos tomados de a K. Generar un programa que muestre su funcionamiento.
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #9 en: Junio 11, 2010, 02:29:40 am »
PARTE 4 - PUNTEROS

Bueno hoy nos toca hablar de punteros.
Este tema les puede complicar la vida si no han entendido bien temas anteriores asi que presten atencion.

Bueno vamos a comenzar explicando.
Las memorias de las computadoras estan formadas por un conjunto de Bytes.
Cada bytes tiene un numero asociado. Una dirección de memoria.

Entonces. Cuando nosotros creamos una variable, dicha variable reserva un lugar en la memoria dentro del cual se guarda el contenido. Por dar un ejemplo la direccion 10012.
Un puntero lo que hace es guardar la direccion de memoria de una vairiable.

Por ejemplo. Creo la variable float pi cuyo valor es 3.14 y esta guardada en la dirección de memoria 10012. Entonces, yo puedo acceder al ese valor (3.14) llamando directamente a la variable pi o bien accediendo desde la direccion de memoria.

Para acceder a esta dirección de memoria utilizamos el operador &

¿Cómo declaramos un puntero?
Pues declarar un puntero es similar a una variable. En primer lugar debemos definir el tipo de puntero que corresponde a la variable que va a apuntar. Por ejemplo. Si vamos a guardar en un puntero la dirección de memoria de la variable del tipo float llamada pi, el puntero tambien tiene que ser float. Y vamos a definirle un nombre antes del cual tiene que aparecer el signo *. Vamos a dar un ejemplo:

Código: C
  1. float pi=3.14, *puntero;

Aquí creamos una variable float llamada pi con el valor 3,14 y un puntero llamado puntero, tambien float.

Ok. Vamos a hacer un pequeño ejercicio definiendo una variable y mostrando el valor y la direccion de memoria:

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int n;
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero entero...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&n);
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\nEl numero ingresado es: %d",n);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nLa direccion de memoria es: %d",&n);
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  11. }

Ok. Como veran esto no es nada diferente a lo que hemos hecho hasta ahora de hecho no si han llegado hasta este punto del tutorial no deben tener ningun problema en entender el codigo.
Fijense que primero imprimimos el numero ingresado, y luego imprimimos en pantalla la direccion de memoria de la variable "n". Y fijense que cuando indicamos que es lo que tiene que mostrar ponemos &n. Como dije antes, ese & es el operador que indica que accedemos a la dirección de memoria.

Ok. Ahora hagamos el mismo ejemplo que recien solo que trabajando con puntero. Ademas de la variable n vamos a crear un puntero, y guardar en el la direccion de memoria de n. Y luego vamos a imprimir el valor de n y la direccion de memoria de puntero.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int n, *puntero;
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero entero...\n");
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&n);
  8. puntero=&n;
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\nEl numero ingresado es: %d",n);
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nLa direccion de memoria es: %d",puntero);
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  12. }

Ok. Notese que cuando declaramos el puntero, utilizamos * delante. Luego cuando le asociamos a ese puntero la direccion de memoria de n lo hacemos con la linea:

Código: C
  1. puntero=&n;

Sin el *. Y luego cuando lo imprimimos en el printf tampoco lo usamos...
Ahora hagamos lo siguiente. En la linea:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nLa direccion de memoria es: %d",puntero);

Vamos a poner *puntero en vez de puntero a ver que pasa...
¿Han visto?
Les ha imprimido el mismo valor que n. Porque cuando ponemos "puntero" nos estamos refiriendo a la direccion de memoria. Y cuando ponemos "*puntero" nos estamos refiriendo al valor guardado en esa direccion de memoria.

Entonces, los punteros guardan la direccion de memoria en la cual se encuentra una variable. Hasta aqui perfecto. Pero la pregunta del millon es. ¿Para qué nos sirve esto?

Supongamos que se desea cambiar el valor de una variable a traves de una funcion.
Vamos a hacer un ejemplo:

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int cambiarvalor(int num);
  4. main()
  5. {
  6. int n=5;
  7. cambiarvalor(n);
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nEl valor de n es: %d\nY la direccion de memoria es: %d",n,&n);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  10. }
  11. int cambiarvalor(int num)
  12. {
  13. num = 0;
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El valor de num es: %d\nY la direccion de memoria es: %d",num,&num);
  15. }
  16.  

Bueno. Como vemos en este ejemplo se crea una variable n, y una funcion cambiarvalor con un parametro int llamado num.
Se le da el valor 5 a n, se imprime en pantalla su valor y su direccion de memoria.
Luego se llama a la funcion cambiarvalor a la cual se le pasa el valor de n y se cambia a 0 y se muestra el nuevo valor y la direccion de memoria.
Pero la direccion de memoria no coincide. Y es porque nosotros no cambiamo el valor de n sino de num. Entonces como podemos cambiar el valor?. Utilizando un puntero, ya que si nosotros intentamos cambiar el valor directamente a n, como la variable esta creada dentro del main nos daria un error, porque lo que se declara en el main solo puede usarse en el main, no es valido en una funcion. Lo que se declara fuera si puede usarse en todo.
Entonces, la unica opcion que tenemos es utilizar un puntero que guarde la direccion de memoria de n y pasar a la funcion la direccion de memoria y que entonces la funcion lo que haga es reemplazar el valor de dicha direccion de memoria, por lo tanto estaria reemplazando el valor de n.
Vamos a hacer un ejemplo...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int cambiarvalor(int *num);
  4. main()
  5. {
  6. int n=5;
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El valor de n es: %d y la direccion de memoria es: %d",n,&n);
  8. cambiarvalor(&n);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\nEl valor de n es: %d y la direccion de memoria es: %d",n,&n);
  10. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  11. }
  12. int cambiarvalor(int *num)
  13. {
  14. *num = 0;
  15. }

Como veran creamos una funcion cambiarvalor cuyo parametro num es un puntero. Le damos a la variable n valor 5, imprimimos la direccion de memoria y el valor en pantalla. Luego llamo a la funcion cambiarvalor y le paso la direccion de memoria de n y dentro de la funcion cambio el valor de la direccion de memoria de n por c.
Luego de llamar la funcion y que el valor sea mostrado vuelvo a imprimir el valor de n  y la direccion de memoria.
Fijense que la direccion de memoria de ambas lineas es la misma, pero el valor es distinto.
Acabamos de hacer un cambio mediante punteros.

OK. Esto es todo sobre punteros. Ahora aprovechare a dejale un par de ejercicios para que hagan sobre este tema antes de pasar a la siguiente parte.

EJERCICIOS DE LA PARTE 4:

Problema Nº1:

Realizar un programa que lea 25 numeros enteros positivos, determine el mayor numero par y el menor impar de todos. Se debe utilizar una funcion que calcule el menor, el mayor y la determinacion de si es impar o no. La función definida deberá retornar el resultado correspondiente. El programa principal debe imprimir los 25 numeros y lo retornado por la funcion.

Problema Nº2:

Dado el siguiente programa. ¿Qué valores imprime?

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int f(int *x, int y){
  4. *x=*x-1:
  5. y=y+1;
  6. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d %d - ", *x,y);
  7. }
  8. main()
  9. {
  10. int i,b,a;
  11. i=b=a=0;
  12. for( ;i<3;i++)
  13. {
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d %d - ",a,b);
  15. f(&a,b);
  16. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d %d - ",a,b);
  17. }
  18. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  19. }

Problema Nº3:

Leer 3 numeros reales y mostrar el mayor y el menor utilizando una sola función

Problema Nº4:

Un señor tiene una reunion a un cierto horario (hora, minutos). Llama por telefono y avisa que llegará X minutos mas tarde. Cual es el nuevo horario?

Problema Nº5:

Leer código de articulo, costo y categoria (1 o 2) hasta que codigo sea 0. Definir una funcion que por cada articulo leido calcule: la ganancia que será el 10% del costo si este es mayor a 100$ o sino el 25% y el IVA si es categoria 1 será del 10,5% sino el 21% del costo+ganancia.
Mostrar el precio final como costo+ganancia+IVA.

Ok los dejo con esto. La proxima parte es ARREGLOS. Por favor como digo siempre si no saben hasta aquí no sigan avanzando.
Suerte!
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #10 en: Junio 11, 2010, 02:30:16 am »
PARTE 5 - ARREGLOS

Bueno despues de un tiempo que habia dejado algo abandonado el curso por falta de tiempo escribo la quinta parte que es Arreglos y ya casi estamos por terminarlo. Luego de esto solo queda 1 parte mas.

Bueno vamos a definir lo que es un arreglo. Un arreglo es una serie de elementos que ocupan un determinado espacio de memoria y que estan relacionadas entre si.
Para declarar los arreglos vamos a hacerlo igual que si fuera una variable, solo que luego de especificar el nombre del arreglo vamos a decir entre corchetes cuantos lugares de guardaran.
Vamos a dar un ejemplo.

Código: C
  1. int num[5]; // Con esto declaramos un arreglo entero llamado num con 5 lugares.

Entonces, en la variable num podemos guardar 6 valores enteros en: num[0],num[1],num[2],num[3],num[4],num[5]
Nosotros indicamos que en num guardamos 5 espacios. Pero estos comienzan desde 0 asi que en realidad son 6.
Es como si tuvieramos 6 variables en 1. Porque a traves de un nombre de variable y un subindice (el numero que esta entre corchetes) nosotros podemos guardar y obtener valores.

Bueno. Vamos a hacer un ejercicio en el cual creamos un arreglo de 3 lugares y utilizando printf y scanf vamos a pedir que ingresen 4 numeros (para los espacios 0, 1, 2 y 3) y luego vamos a mostrarlos en pantalla.

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int a[3], i;
  6. for(i=0;i<4;i++)
  7. {
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero...\n");
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  10. }
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n----------------\nNumero 0: %d\nNumero 1: %d\nNumero 2: %d\nNumero 3: %d",a[0],a[1],a[2],a[3],a[4]);
  12. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  13. }

Bueno vamos por partes.

Código: C
  1. int a[3], i;

Creamos el arreglo a y la variable i. Vemos que lo podemos hacer en la misma linea sin problemas. Un arreglo es basicamente una variable.

Código: C
  1. for(i=0;i<4;i++)
  2. {
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero...\n");
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  5. }

Utilizamos un bucle for con la variable i que es igual a 0 y va de 0 a 3 sumando 1.
Pedimos que ingresen un numero y a ese numero que ingresan lo guardamos en a donde i es el valor de la variable y que sera 0, 1, 2 y 3.

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n----------------\nNumero 0: %d\nNumero 1: %d\nNumero 2: %d\nNumero 3: %d",a[0],a[1],a[2],a[3],a[4]);

Mostramos los valores en pantalla como lo vinimos haciendo siempre indicando el subindice del arreglo a.
Como veran.. no cambia mucho el manejo que hemos hecho siempre sobre las variables. De hecho no ha cambiado nada solo se le agregan los subindices.
Bueno ahora vamos a aplicar operaciones matematicas sobre los arreglos.
Vamos a utilizar el mismo codigo que antes, hacemos un arreglo de 3 espacios, pedimos que ingresen los valores y luego mostramos en pantalla el resultado de el valor del subindice 0 por el del subindice 1 y el valor del subindice 2 mas el del subindice 3.
Quedaria algo asi...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int a[4], i;
  6. for(i=0;i<4;i++)
  7. {
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero...\n");
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  10. }
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n----------------\nNumero 0*1: %d\nNumero 2+3: %d",a[0]*a[1],a[2]+a[3]);
  12. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  13. }

Bueno, este codigo es muy similar al anterior con la diferencia de que en esta linea:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n----------------\nNumero 0*1: %d\nNumero 2+3: %d",a[0]*a[1],a[2]+a[3]);

Imprimimos en pantalla 2 valores que son a[0]*a[1] osea, el valor del subindice 0 de a por el valor del subindice 1 de a. Y... a[2]+a[3].

Bueno. Hemos visto como declarar arreglos y cargar datos en el. A los datos los cargaremos con un for.
Pero que tal si no sabemos cuantos espacios debemos reservar en un arreglo?
En ese caso va a ser un poco distinto.. Supon que tenemos un arreglo, pero no sabemos cuantos valores debemos almacenar en el. Entonces creamos el arreglo con un numero como maximo.
Por ejemplo.. yo no se cuantos espacios debo reservar pero seran 100 como maximo no mas que eso. En ese caso debere pedirle al usuario que especifique la cantidad de valores a ingresar y luego si cargar los datos.
Lo haremos de esta manera:

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int a[100], i, c;
  6. do{
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese la cantidad de espacios a reservar....\n");
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&c);
  9. }while(c<1 || c>100);
  10. for(i=0;i<=c;i++)
  11. {
  12. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero para el subindice %d...\n",i);
  13. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  14. }
  15. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n--------------\n");
  16. for(i=0;i<=c;i++)
  17. {
  18. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Valor de %d = %d\n",i,a[i]);
  19. }
  20. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  21. }

Bueno analicemos por partes.

Código: C
  1. int a[100], i, c;

En primer lugar creamos el arreglo con 100 espacios. Ese sera el maximo aunque nosotros no sabemos cuantos utilizaremos de esos 100. Y creamos otro par de variables que utilizaremos.

Código: C
  1. do{
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese la cantidad de espacios a reservar....\n");
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&c);
  4. }while(c<1 || c>100);

Utilizamos un bucle do while para pedir al usuario que ingrese la cantidad de espacios que se utilizaran con la condicion de que este numero que ingresen no debe ser menor a 1 es decir, no puede ser ni cero ni negativo y no debe ser mayor a 100. Osea debe ser entre 1 y 100.
Si se da como verdadera esta condicion vuelve a pedir que se ingrese la cantidad de espacios, de lo contrario pasa a lo siguiente.

Código: C
  1. for(i=0;i<=c;i++)
  2. {
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero para el subindice %d...\n",i);
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  5. }

Utilizamos un for que va desde 0 hasta el numero ingresado pidiendo que se ingrese el valor para asignarle a un determinado subindice.

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n--------------\n");

Luego de ingresar todos los valores, dejamos 2 renglones, ponemos una linea y dejamos otro renglon para separar bien una cosa de otra.

Código: C
  1. for(i=0;i<=c;i++)
  2. {
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Valor de %d = %d\n",i,a[i]);
  4. }
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  6. }

Nuevamente utilizamos un for pero esta vez para mostrar los valores que previamente habiamos ingresado.

Muy bien ahora lo que vamos a ver es como podemos buscar un valor en los subindices. Por ejemplo. Tengo un arreglo de 10 espacios. Quiero buscar en en alguno de esos 10 espacios esta guardado el valor "56". ¿Cómo hago esto?
De la siguiente manera....

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. main()
  4. {
  5. int a[10], i, b, w=0;
  6. for(i=0;i<=10;i++)
  7. {
  8. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero para el subindice %d...\n",i);
  9. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  10. }
  11. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n--------------\nIngrese el valor que desea buscar:\n");
  12. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&b);
  13. while(a[w] != b && w<=10)
  14. {
  15. w++;
  16. }
  17. if(w==11)
  18. {
  19. No tienes permisos para ver links. Registrate o Entra con tu cuenta("No se encuentra el numero %d",b);
  20. }
  21. else
  22. {
  23. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El numero %d se encuentra en el subindice %d",b,w);
  24. }
  25. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  26. }

Bueno veamoslo por partes.

Código: C
  1. int a[10], i, b, w=0;

Primero creo el arreglo, y creo un par de variables que vamos a utilizar luego. Como veran el arreglo es de 10 espacios.

Código: C
  1. for(i=0;i<=10;i++)
  2. {
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese un numero para el subindice %d...\n",i);
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  5. }

Utilizamos un bucle for. La variable i es igual a 0. El bucle for se ejecutara hasta que i sea menor o igual a 10. En cada ejecucion vamos a sumarle 1 a i.
Pedimos que ingresen un numero para cada subindice y los guardamos.

Una vez que el usuario ya ingreso todos los numeros del arreglo sigue la siguiente linea:

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n--------------\nIngrese el valor que desea buscar:\n");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&b);

Aqui lo que hacemos primero es imprimir una linea para separar y que quede mas ordenado. Y pedimos al usuario que ingrese el valor que desea buscar en el arreglo.
A este valor que el usuario ingresa lo guardamos en la variable b.

Código: C
  1. while(a[w] != b && w<=10)
  2. {
  3. w++;
  4. }

Utilizamos un while para buscar el valor dentro del arreglo. En las primeras lineas cuando creamos el arreglo y una serie de variables habiamos creado la variable w con el valor 0. Aqui decimos que mientras a[w] osea.. el valor del arreglo a con subindice w sea distinto al valor que ingreso la persona para buscar Y w sea menor o igual a 10 entonces ejecutamos lo que esta entre llaves. Si se determina falsa entonces se termina el mientras.
Vamos a explicarlo con un ejemplo supongamos que ingresamos los 11 valores para a[10] y a[3] es igual a 12. Y luego de ingresar todos los valores nosotros buscamos el valor 12.
El while comenzara con w en valor 0. Entonces la condicion sera que mientras a[0] sea distinto a 12 y w sea menor o igual a 10, entonces ejecutamos las acciones de while. Como el valor 12 lo pusimos en a[3], entonces a[0] sera distinto y al ser w igual a 0 tambien se cumple la segunda condicion que es que w sea menor o igual a 10. Entonces se ejecutan las acciones del while y a w se le suma 1. Entonces w pasa de ser 0 a ser 1. Ahora otra vez se vuelve a ejecutar el while. Y comprueba... mientras a[w] sea distinto a 12. Ahora sera mientras a[1] sea distinto a 12 y w (osea 1) sea menor o igual a 10, la condicion es verdadera y se vuelve a ejecutar las acciones. Y el w suma 1 y queda en 2 ahora. Volvera a comprobar... si a[2] es distinto a 12. Como 12 es el valor de a[3], a[2] va a ser distinto. Y como w es igual a 2, entonces se cumple la segunda condicion que es w menor o igual a 10. Entonces otra vez se ejecuta las acciones del while y se suma 1. Y ahora w es igual a 3. Y vuelve a comprobar.. la primera condicion es que a[w] sea distinto a 12. Como w es 3 la condicion seria a[3] distinto a 12. Pero en esta ocacion no se cumple, porque nosotros dijimos que el 12 lo habiamos guardado en a[3] por lo tanto a[3] es igual a a[3], no distinto. A pesar que la segunda condicion se cumpla porque w que es 3 es menor a 10, la primera no se cumple y eso es suficiente para que se termine con el while y w queda con el valor 3. En cambio si nosotros buscamos un valor que en ningun momento ingresamos. w seguira incrementandose en 1 hasta llegar hasta 10. Al llegar hasta 10 comprobara que a[10] sea distinto al numero que ingresaron para buscar.. como sera distinto comprobara la segunda condicion que es que w, osea 10 sea menor o igual a 10. Es igual asi que se cumple entonces ejecuta la accion y se le suma 1 y ahora quedara en 11 y ahi cuando vaya a comprobar la segunda condicion no se cumplira porque 11 no es menor o igual a 10.
Entonces podemos decir que... a traves de el while, la variable w quedara con el numero del subindice de a que contiene el valor que nosotros buscamos, y en caso de que el numero que nosotros buscamos no se encuentre en el arreglo, w quedara con el valor 11 al terminar el while. Con estos datos nosotros podemos hacer lo siguiente:

Código: C
  1. if(w==11)
  2. {
  3. No tienes permisos para ver links. Registrate o Entra con tu cuenta("No se encuentra el numero %d",b);
  4. }
  5. else
  6. {
  7. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El numero %d se encuentra en el subindice %d",b,w);
  8. }

Una simple condicion if. Si w es igual a 11 entonces mostramos un mensaje que no se pudo encontrar el valor b, ya que si w es igual a 11 significa que ha pasado ya por todo el arreglo y no ha encontrado ninguna coincidencia.
Sino.. mostrara el mensaje diciendo que el valor b se encuentra en el subindice w.

Se entendio?
Ahora bien. Como nos manejamos con arreglos en funciones?
Pues bien. Si tenemos planeado trabajar en funciones debemos saber que...
Al declarar una funcion debemos definir que recibiremos un arreglo poniendo corchetes. Por ejemplo:

Código: C
  1. int funcion1(arreglo[],variable);

No es necesario que pongamos la cantidad de los espacios entre los corchetes.
Luego, cuando llamemos a la funcion, no es necesario que le pasemos el arreglo con corchetes ni nada. Simplemente la llamamos de la siguiente manera:

Código: C
  1. x = funcion1(arreglo,variable);

Si nosotros pasamos el arreglo asi sin corchetes ni nada lo pasara todo. Pero si nosotros queremos pasar el subindice 4 por ejemplo, entonces si ponemos:

Código: C
  1. x = funcion1(arreglo[4],variable);

Muy bien lo que vamos a hacer para que se entienda esto es una calculadora utilizando vectores. La calculadora lo que hara es sumar, restar, dividir o multiplicar 2 numeros utilizando vectores.
Hagamosla...

Código: C
  1. #include <stdio.h>
  2. #include <conio.h>
  3. int sumar(int num[]);
  4. int restar(int num[]);
  5. int dividir(int num[]);
  6. int multiplicar(int num[]);
  7. int w;
  8. main()
  9. {
  10. int a[1], i, b;
  11. for(i=0;i<=1;i++)
  12. {
  13. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese el Num %d...\n",i+1);
  14. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  15. }
  16. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n--------------\nIngrese el numero segun la accion que desea hacer:\n1. Suma\n2.Resta\n3.Multiplicar\n4.Dividir\n");
  17. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&b);
  18. switch(b)
  19. {
  20. case 1:
  21. sumar(a);
  22. break;
  23. case 2:
  24. restar(a);
  25. break;
  26. case 3:
  27. multiplicar(a);
  28. break;
  29. case 4:
  30. dividir(a);
  31. break;
  32. default:
  33. No tienes permisos para ver links. Registrate o Entra con tu cuenta("La opcion elegida no es valida");
  34. }
  35. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El resultado es %d",w);
  36. No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  37. }
  38. int sumar(int num[])
  39. {
  40. w=num[0]+num[1];
  41. }  
  42. int restar(int num[])
  43. {
  44. w=num[0]-num[1];
  45. }
  46. int multiplicar(int num[])
  47. {
  48. w=num[0]*num[1];
  49. }
  50. int dividir(int num[])
  51. {
  52. w=num[0]/num[1];
  53. }

Muy bien este codigo me ha quedado mas largo que los otros.
Expliquemoslo...

Código: C
  1. int sumar(int num[]);
  2. int restar(int num[]);
  3. int dividir(int num[]);
  4. int multiplicar(int num[]);
  5. int w;

Declaramos 4 funciones llamadas sumar, restar, dividir y multiplicar. Estas funciones solo tienen un parametro que es un arreglo entero al que llamamos num. Como veran, lo indicamos con los corchetes.
Tambien creamos la variable w que es en donde guardaremos el resultado que arrojen las funciones.

Sigamos...

Código: C
  1. int a[1], i, b;
  2. for(i=0;i<=1;i++)
  3. {
  4. No tienes permisos para ver links. Registrate o Entra con tu cuenta("Ingrese el Num %d...\n",i+1);
  5. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&a[i]);
  6. }

Ya dentro del bloque main creamos un arreglo de 1 espacio (2 valores ya que tiene el subindice 0 y 1) y con un bucle for pedimos que se ingrese el numero 1 y 2. Y lo guardamos en a[0] y a[1].

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("\n\n--------------\nIngrese el numero segun la accion que desea hacer:\n1. Suma\n2.Resta\n3.Multiplicar\n4.Dividir\n");
  2. No tienes permisos para ver links. Registrate o Entra con tu cuenta("%d",&b);

Aqui lo que hacemos es pedir que nos indiquen que se quiere hacer. Si el usuario pone 1 es que quiere sumar, si pone 2 quiere restar, si pone 3 quiere multiplicar y si pone 4 quiere dividor. El numero que ingrese lo guardamos en la variable b.

Sigamos...

Código: C
  1. switch(b)
  2. {
  3. case 1:
  4. sumar(a);
  5. break;
  6. case 2:
  7. restar(a);
  8. break;
  9. case 3:
  10. multiplicar(a);
  11. break;
  12. case 4:
  13. dividir(a);
  14. break;
  15. default:
  16. No tienes permisos para ver links. Registrate o Entra con tu cuenta("La opcion elegida no es valida");
  17. }

Ahora utilizamos un switch para realizar determinadas acciones segun el valor de b.
Si es 1 llamamos a la funcion sumar y le pasamos el parametro a. Como veran, a (que es el arreglo) se lo pasamos sin corchetes. Porque al principio cuando declaramos la funcion ya pusimos que ese parametro correspondia a un arreglo, asi que no debemo indicarlo otra vez.
Si nosotros quisieramos pasar un valor en particular por ejemplo a[1] entonces lo pasariamos de este modo.
Si es 2 llamamos a la funcion restar tambien con el parametro a. Y asi con las demas opciones y su correspondiente funcion.
Si el valor de b no es ni 1 ni 2 ni 3 ni 4 entonces muestra un mensaje que dice que la opcion elegida no es valida.

Código: C
  1. No tienes permisos para ver links. Registrate o Entra con tu cuenta("El resultado es %d",w);

Finalmente muestra el restultado que se almacenara en la variable w y ahi termina el bloque main. Ahora vemos las funciones...

Código: C
  1. int sumar(int num[])
  2. {
  3. w=num[0]+num[1];
  4. }  

Bueno... no hay mucho que explicar. Simplemente decimos que w es igual a num[0] mas num[1].. recordemos que nuestro arreglo (el que utilizamos en el bloque main) tenia el nombre a pero cuando nosotros declaramos la funcion declaramos el parametro con el nombre num asi que asi debemos referirnos al arreglo dentro de esta funcion.
Lo que hara es sumar num[0] que es lo mismo que a[0] en el bloque main mas num[1] que es lo mismo que a[1] en el main y el resultado lo almacenara en la variable w que al haberla declarado al principio, afuera de cualquier funcion y afuera del main. Podemos utilizarla y actualizarla desde cualquier parte del programa sin problemas.

Bueno gente. Con esto terminamos con todo lo que es arreglos. Se me ha hecho un poquito largo creo pero he explicado con bastante detalle todo.
El proximo post que hare sera para poner varios ejercicios para que practiquen este tema antes de continuar con el ultimo tema y ya terminar este curso.

Ok. Espero que les haya gustado y que lo hayan entendido sin problemas.
Suerte!
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    41.67%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #11 en: Junio 11, 2010, 07:15:53 am »
Esta espectacular! Hoy los empiezo a imprimir!


Fakedo0r

  • *
  • Visitante
« Respuesta #12 en: Junio 11, 2010, 07:57:51 am »
No ay mas palabras , espectacular !!!!

Desconectado MaySheHak

  • *
  • Underc0der
  • Mensajes: 196
  • Actividad:
    0%
  • Reputación 0
  • nunca digas esto eso imposible
    • Ver Perfil
    • Email
« Respuesta #13 en: Junio 11, 2010, 09:41:32 am »
Impresionante  :o gracias por este aportazo cuando tenga tiempo pienso seguirlo el curso entero
Salu2  ;D

Desconectado Xa0s

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Professional-Hacker
« Respuesta #14 en: Junio 12, 2010, 02:58:04 am »
EJERCICIOS PARTE 5:

Ok. Como ya termine la quinta parte aqui les dejare una serie de ejercicios para que los practiquen y vean si han aprendido bien todo lo anterior.

Problema Nº1:
Introducir un arreglo de 10 componentes.
a) Imrpimir la cuarta componente
b) Imrpimir la segunda componente
c) Imprimir las componentes en orden invertida.
d) Imprimir el producto entre la primera y la ultima componente.
e) Imprimir las componentes de indice impar
f) Imprimir la suma de las componentes de indice par
g) Imprimir la multiplicacion que resulta de intercambiar la primera con la ultima componente
h) Imprimir el vector que resulta de intercambiar la segunda con la ultima componente.

Problema Nº2:
Imprimir el vector dando en primer lugar la cantidad de componentes (N<=8)
a) Imprimir los componentes pares
b) Imprimir la suma de las componentes
c) Imprimir el promedio de las componentes del vector
d) Obtener el modulo de un vector (módulo de un vector es la raíz cuadrad de la suma de los cuadrados de sus componentes)

Problema Nº3:
Dado dos vectores A y B de N<15 elementos cada uno, calcular un vector C tal que C = A+B

Problema Nº4:
Introducir un vector de 10 elementos. Eliminar la primer componente y deslazar todas las demas 1 lugar.

Problema Nº5:
Generar un vector AB con los 15 primeros numeros primos. Imprimir 4, 6, 7 y 9 componente de AB.

Problema Nº6:
Dado un vector, imprimir los valores maximo y minimo.

Problema Nº7:
Dado un vector, imprimir el lugar que ocupa el minimo. Tener en cuenta que este valor puede estar repetid, en ese caso imprimir todos los lugares donde aparece este valor.

Problema Nº8:
Encontrar un elemento de un vector ordenado.

Ok. Con esto creo que ya es suficiente.
Si pueden hacer estos ejercicios entonces una vez que haga la siguiente y ultima parte de este curso de introduccion pueden seguir sin problema.
Como ya he dicho antes, si no terminan de entender, relean, pregunten en caso de ser necesario pero no sigan si no entienden bien todo para no liarse.

Ok. Suerte!
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[TUTORIAL]Como compilar GMP 5.1.0(The GNU Multiple Precision Arithmetic Library)

Iniciado por avesudra

Respuestas: 5
Vistas: 4196
Último mensaje Enero 05, 2013, 01:57:26 pm
por avesudra
El Lenguaje de Programación C, 2da Edición – Brian W. Kernighan & Dennis M. Ritc

Iniciado por Expermicid

Respuestas: 1
Vistas: 2442
Último mensaje Mayo 08, 2013, 06:34:48 pm
por D4rkC0d3r
Kevin Korduner | Programacion avanzada en C serie de videos.

Iniciado por kevinKo

Respuestas: 1
Vistas: 1256
Último mensaje Noviembre 07, 2017, 11:40:59 am
por Gonza2208
[Libro] Programacion en C, metodología, algoritmos y estructuras datos

Iniciado por Stiuvert

Respuestas: 3
Vistas: 4354
Último mensaje Diciembre 11, 2016, 12:41:12 pm
por sanosuken
Ideas para la programacion de w0rm's o malware en general

Iniciado por ksha

Respuestas: 4
Vistas: 2509
Último mensaje Abril 24, 2011, 11:24:11 pm
por Ahkbar