Sunteți pe pagina 1din 84

Pasar arreglos a una funcin en C

Por default, los arrreglos en C se pasan a una funcin como referencia y no como valor.
Esto significa que todas las modificaciones que hagamos dentro de la funcin en C al
arreglo que recibimos como parmetro, realmente se realizan en el arreglo original que se
utiliz como argumento al momento de llamar a la funcin.
Al escribir una funcin en C, la forma de indicar que uno de los parmetros que se va a
recibir es un arreglo de una dimensin, es decir de que tipo va a ser el arreglo y el nombre
con el cual vamos a manipular dicho arreglo dentro de nuestra funcin seguido de
corchetes que abren y cierran; nuestra funcin tambin debe recibir un segundo parmetro
que nos indique el tamao del arreglo, o dicho de otra forma, el nmero de elementos de
los que consta nuestro arreglo, recordemos que como el arreglo se pasa a la funcin como
referencia, lo que esta recibiendo la funcin en realidad es un apuntador al primer elemento
del arreglo, pero no sabe en donde termina el arreglo, por eso es necesario que la funcin
tambin reciba como parmetro el nmero de elementos del arreglo.
Por ejemplo, el prototipo de una funcin en C que va a regresar un entero y va a recibir un
arreglo de 10 elementos de tipo entero sera algo asi:
int MiFuncion(int mi_arreglo[], int num_elemetos);
Para llamar a la funcin anterior, se pone como primer argumento el nombre del arreglo
(sin corcehetes) y como segundo argumento el nmero de elementos del arreglo.
Supongamos que tenemos un arreglo de 10 elementos de tipo entero llamado numeros y
queremos guardar en una variable llamada x el valor que nos regresa la funcin
MiFuncion al llamarla pasandole como argumentos el arreglo numeros, haramos algo
como esto
x = MiFuncion(numeros, 10);
El siguiente programa solicita al usuario que ingrese 10 nmeros de tipo entero y los
almacena en un arreglo; despus le pide que introduzca un nmero para que busque su
posicin dentro del arreglo..
El programa utiliza una funcin llamada BuscaNumero que recibe como parmetros el
arreglo con los 10 nmeros capturados, el nmero de elementos del arreglo (en este caso
10) y el nmero del cual se desea saber su posicin dentro del arreglo.. La funcin regresa
-1 si el nmero que se busca no se encuentra en el arreglo y en caso contrario, regresa la
primera posicin del arreglo que contiene dicho nmero.
El programa tambin utiliza una funcin llamada MuestraArreglo que no regresa valor
alguno, slo recibe como parmetros el arreglo y el nmero de elementos. Esta funcin
imprime en pantalla los elementos del arreglo separados por un tabulador.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>

int BuscaNumero(int valores[], int tamanio, int busca)
{
int i=0, posicion=-1;

do
{
if (valores[i]==busca)
posicion=i;
else
++i;
}
while(i<tamanio && posicion<0);

return posicion;
}

void MuestraArreglo(int valores[], int tamanio)
{
int i=0;

for (i=0; i<tamanio; ++i)
printf("%d\t",valores[i]);
printf("\n");
}

int main()
{
int x=0, numero=0, posicion=0;
int ar_numeros[10] = {0};

printf("Introduzca los 10 numeros enteros que se almacenaran en el
arreglo\n");
for (x=0; x<10; ++x)
{
printf("Valor para el elemento [%d]: ", x);
scanf("%d",&ar_numeros[x]);
}
printf("\n");

printf("Introduzca el nmero que desea buscar en el arreglo\n");
scanf("%d",&numero);
printf("\n");
MuestraArreglo(ar_numeros,10);
40
41
42
43
44
45
46
47
48
49
50
51
52
53

posicion=BuscaNumero(ar_numeros,10,numero);
if (posicion != -1)
printf("El nmero %d est en la posicin %d del arreglo\n",numero,
posicion);
else
printf("El nmero %d no est en el arreglo\n",numero);

return 0;
}
Para pasar a una funcin un arreglo de dos dimensiones, si debemos indicar el tamao de
la segunda dimensin del arreglo
Ejemplo:int MiFuncion(int mi_arreglo[][5], int num_elemetos);
El siguiente programa le pide al usuario que introduzca 9 nmeros y los almacena en un
arreglo de dos dimensiones, en este caso una matriz de 33; posteriormente utiliza una
funcin llamada ImprimeMatriz para mostrar como quedaron almacenados los nmeros en
la matriz. Dicha funcin recibe como parmetros, la matriz de 33 y el tamao de la
primera dimensin (normalmente la primera dimensin son filas y la segunda dimensin
columnas).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

void ImprimeMatriz(int m[][3], int filas)
{
int i=0,j=0;

for (i=0; i<filas; ++i)
{
for (j=0; j<3; ++j)
{
printf("%d ",m[i][j]);
}
printf("\n");
}
}

int main()
{
int x=0,y=0;
int matriz[3][3] = {{0},{0},{0}};

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
printf("Introduzca los valores para la matriz\n");
for (x=0; x<3; ++x)
{
for (y=0; y<3; ++y)
{
printf("Valor para el elemento [%d][%d]: ",
x, y);
scanf("%d",&matriz[x][y]);
}
printf("\n");
}

printf("Matriz\n");
ImprimeMatriz(matriz, 3);

return 0;
}


Manual de C
Nuestro agradecimineto a Hector Tejeda autor del mismo
6.1 Funciones void
6.2 Funciones y arreglos
6.3 Prototipos de funciones
6.4 Ejercicios

6. Funciones
Una funcin es un conjunto de declaraciones, definiciones, expresiones y sentencias que realizan una tarea
especfica.
El formato general de una funcin en C es
especificador_de_tipo nombre_de_funcin( lista_de_parmetros )
{
variables locales
cdigo de la funcin
}
El especificador_de_tipo indica el tipo del valor que la funcin devolver mediante el uso de return. El valor
puede ser de cualquier tipo vlido. Si no se especfica un valor, entonces la computadora asume por defecto
que la funcin devolver un resultado entero. No se tienen siempre que incluir parmetros en una funcin. la
lista de parmetros puede estar vaca.
Las funciones terminan y regresan automticamente al procedimiento que las llam cuando se encuentra la
ltima llave }, o bien, se puede forzar el regreso antes usando la sentencia return. Ademas del uso
sealado la funcin return se usa para devolver un valor.
Se examina a continuacin un ejemplo que encuentra el promedio de dos enteros:
float encontprom(int num1, int num2)
{
float promedio;

promedio = (num1 + num2) / 2.0;
return(promedio);
}

main()
{
int a=7, b=10;
float resultado;

resultado = encontprom(a, b);
printf("Promedio=%f\n",resultado);
}

6.1 Funciones Void
Las funciones void dan una forma de emular, lo que en otros lenguajes se conocen como procedimientos
(por ejemplo, en PASCAL). Se usan cuando no requiere regresar un valor. Se muestra un ejemplo que
imprime los cuadrados de ciertos nmeros.
void cuadrados()
{
int contador;

for( contador=1; contador<10; contador++)
printf("%d\n",contador*contador);
}

main()
{
cuadrados();
}

En la funcin cuadrados no esta definido ningn parmetro, y por otra parte tampoco se emplea la
sentencia return para regresar de la funcin.
6.2 Funciones Y Arreglos
Cuando se usan un arreglo como un argumento a la funcin, se pasa slo la direccin del arreglo y no la copia
del arreglo entero. Para fines prcticos podemos considerar el nombre del arreglo sin ningn ndice como la
direccin del arreglo.
Considerar el siguiente ejemplo en donde se pasa un arreglo a la funcin imp_rev, observar que no es
necesario especificar la dimensin del arreglo cuando es un parmetro de la funcin.
void imp_rev(char s[])
{
int t;

for( t=strlen(s)-1; t>=0; t--)
printf("%c",s[t]);
}

main()
{
char nombre[]="Facultad";

imp_rev(nombre);
}

Observar que en la funcin imp_rev se usa la funcin strlen para calcular la longitud de la cadena sin
incluir el terminador nulo. Por otra parte, la funcin imp_rev no usa la sentencia return ni para terminar
de usar la funcin, ni para regresar algn valor.
Se muestra otro ejemplo,
float enconprom(int tam, float lista[])
{
int i;
float suma = 0.0;

for ( i=0; i<tam; i++)
suma += lista[i];
return(suma/tam);
}

main()
{
float numeros[]={2.3, 8.0, 15.0, 20.2, 44.01, -3.0, -2.9};

printf("El promedio de la lista es %f\n", enconprom(7,numeros) );
}

Para el caso de que se tenga que pasar un arreglo con ms de una dimensin, no se indica la primera
dimensin pero, el resto de las dimensiones deben sealarse. Se muestra a continuacin un ejemplo:
void imprtabla(int tamx,int tamy, float tabla[][5])
{
int x,y;

for ( x=0; x<tamx; x++ )
{
for ( y=0; y<tamy; y++ )
printf("t[%d][%d]=%f",x,y,tabla[x][y]);
printf("\n");
}
}

6.3 Prototipos De Funciones
Antes de usar una funcin C debe tener conocimiento acerca del tipo de dato que regresar y el tipo de los
parmetros que la funcin espera.
El estndar ANSI de C introduj una nueva (mejor) forma de hacer lo anterior respecto a las versiones previas
de C.
La importancia de usar prototipos de funciones es la siguiente:
Se hace el cdigo ms estructurado y por lo tanto, ms fcil de leer.
Se permite al compilador de C revisar la sintaxis de las funciones llamadas.
Lo anterior es hecho, dependiendo del alcance de la funcin. Bsicamente si una funcin ha sido definida
antes de que sea usada (o llamada), entonces se puede usar la funcin sin problemas.
Si no es as, entonces la funcin se debe declarar. La declaracin simplemente maneja el tipo de dato que la
funcin regresa y el tipo de par^o'ametros usados por la funcin.
Es una prctica usual y conveniente escribir el prototipo de todas las funciones al principio del programa, sin
embargo esto no es estrictamente necesario.
Para declarar un prototipo de una funcin se indicar el tipo de dato que regresar la funcin, el nombre de la
funcin y entre parntesis la lista del tipo de los parmetros de acuerdo al orden que aparecen en la definicin
de la funcin. Por ejemplo:
int longcad(char []);

Lo anterior declara una funcin llamada longcad que regresa un valor entero y acepta una cadena como
parmetro.
6.4 Ejercicios
1. Escribir una funcin ``reemplaza'', la cual toma una cadena como parmetro, le reemplaza todos los
espacios de la cadena por un guin bajo, y devuelve el nmero de espacios reemplazados. Por
ejemplo:
2. char cadena[] = "El gato negro";
3. n = reemplaza( cadena );
deber devolver:
cadena convertida "El_gato_negro"
n = 2
4. Escribir un programa que lea una lnea de texto en un buffer (una cadena de caracteres) usando la
funcin gets y calcule la longitud de la lnea (NO usar la funcinstrlen).
5. Modificar el programa anterior para que lea un archivo de texto. El archivo deber redireccionarse al
programa, debiendo mostrar el contenido del mismo. En caso de que se lea una lnea con longitud 0
deber terminar el programa.
7.1. Arreglos unidimensionales (listas) y multidimensionales (tablas)

Ejemplos de uso de arreglos
A continuacin se muestra un programa sencillo donde se declara un arreglo de diez elementos, se
recorre el arreglo para iniciar todos los elementos en 0, y posteriormente se imprimen los valores de
los elementos con su subndice correspondiente.


#include (stdio.h)
#include (conio.h)
main( )
{
int n[10], i; /*declaracin del arreglo n y la variable entera i */

for (i=0; i<=9; i++) /* ciclo de inicializacin del arreglo */
n[i]=0;
printf("%8s%13s\n", "Elemento", "Valor");

for (i=0; i<=9; i++) /* ciclo para mostrar los valores del arreglo */
printf("%8d%13d\n", i, n[i]);
getch ( );
return 0;
}

Los elementos de un arreglo tambin pueden ser inicializados en la misma declaracin del arreglo,
siguiendo al nombre del arreglo con un signo igual y una lista de valores separados por coma y
encerrados entre llaves. Si el nmero de valores indicado es menor al nmero de elementos en el
arreglo, los elementos restantes se inicializan automticamente en cero. Sin embargo si el nmero de
valores inicializadores es mayor al nmero de elementos en el arreglo se genera un error.

El siguiente ejemplo muestra una inicializacin en la declaracin:

/* Inicializacion de un arreglo dentro de la declaracion */
#include (stdio.h)
#include (conio.h)
main( )
{
/*declaracion e inicializacion del arreglo n */
int n[10] = {32,27,64,18,95,14,90,70,60,37};
int i;

printf("%8s%13s\n", "Elemento", "Valor");
for (i=0; i<=9; i++) /* ciclo para mostrar los valores del arreglo */
printf("%8d%13d\n", i, n[i]);
getch ( );
return 0;
}

Si de una declaracin con una lista inicializadora se omite el tamao del arreglo, el nmero de
elementos en el arreglo ser el nmero de elementos incluidos en la lista inicializadora. Por ejemplo:

int n[]={2,4,6,8};

se reserva memoria para 4 elementos del arreglo n (del elemento 0 al 3).

En el ejemplo siguiente la lnea:
#define TAMANO 12
define una constante simblica TAMANO cuyo valor es 12. Una constante simblica es un valor que se
reemplaza con texto de reemplazo en el preprocesador C, antes de que el programa sea compilado.
Cuando el programa es preprocesado, todas las instancias de la constante simblica TAMANO sern
remplazadas por el texto de reemplazo 12. Esa es la funcin de la directiva del preprocesador #define.

/* Calcular la suma de los elementos de un arreglo */
#include (stdio.h)
#include (conio.h)
#define TAMANO 12
main( )
{
int a[TAMANO] = {10,8,7,52,42,27,18,95,14,70,60,37}, i, total=0;
for (i=0; i<=TAMANO -1; i++) /*ciclo para acumulacin de valores*/
total+=a[i];
printf("La suma de los elementos del arreglo es %d\n", total);
getch ( );
return 0;
}

En el siguiente ejemplo se utilizan dos arreglos para la determinacin de frecuencias de respuesta en
una encuesta. Tambin se utiliza la directiva del preprocesador #define.

/* Programa de frecuencias */
#include (stdio.h)
#include (conio.h)
#define NUMERO_RESPUESTAS 40
#define NUMERO_FRECUENCIAS 11

main()
{
int respuesta, numero;
int respuestas[NUMERO_RESPUESTAS] = {1,2,5,6,3,4,7,8,10,2,5,
8,10,9,1,4,5,7,5,1,4,5,8,7,8,2,1,8,10,10,10,9,8,5,6,7,5,6,5,6};
int frecuencia[NUMERO_FRECUENCIAS]={0}; /* Inicializacin en cero */
/* Con el siguiente ciclo se recorre el arreglo de respuestas y se
incrementa el arreglo de frecuencias en su elemento correspondiente */
for (respuesta=0; respuesta <= NUMERO_RESPUESTAS -1; respuesta++)
++frecuencia[respuestas[respuesta]];
printf("%8s%13s\n", "Nmero", "Frecuencia");

/* Ciclo de impresin de frecuencias */
for (numero=1; numero<=10; numero++)
printf("%8d%13d\n", numero, frecuencia[numero]);
getch ( );
return 0;
}

En el siguiente ejemplo se utilizan arreglos para la impresin de un histograma.

/* Impresin de histogramas */
#include (stdio.h)
#include (conio.h)
#define TAMANO 10
main( )
{
int n[TAMANO] = {10,8,7,18,14,6,10,15,4,2};
int i, j;
printf("%15s%15s%s%-20s\n","Elemento","Valor"," ","Histograma");
/*Ciclo para la impresin de cada valor */
for (i=0; i<=TAMANO -1; i++)
{
printf("%15d%15d%s",i, n[i]," ");
/* ciclo para la impresin de cada asterisco (de 1 hasta el
valor de n[i], es decir el valor del elemento */
for (j=1; j<=n[i]; j++)
printf("%c",'*');
printf("\n");
}
getch ( );
return 0;
}

En C una cadena de caracteres es un arreglo de caracteres individuales. Los arreglos de caracteres
tienen varias caractersticas nicas. Un arreglo de caracteres puede ser inicializado utilizando una
literal de cadena. Por ejemplo:

char string1[] = primero;

inicializa los elementos de la cadena o arreglo de caracteres string1 a los caracteres individuales de la
cadena primero. El tamao del arreglo queda determinado por el compilador, basado en la longitud
de la cadena. La cadena primero contiene 7 caracteres ms un caracter especial de terminacin de
cadena, conocido como caracter nulo. Entonces el arreglo string1 contiene 8 elementos. La
representacin del caracter nulo es \0. En C todas las cadenas terminan con este caracter. Un arreglo
de caracteres que represente una cadena, debe declararse siempre lo suficientemente grande para
contener el nmero de caracteres de la cadena incluyendo el caracter nulo de terminacin.

La declaracin anterior es equivalente a:

char string1[]={p,r,i,m,e,r,o,\0};

Dado que la cadena es una arreglo se puede referenciar un caracter en particular utilizando el
subndice. Por ejemplo string1[0] es p, y string1[4] es la m.

Se puede leer desde teclado una cadena de caracteres con scanf de la siguiente forma:

char string2[20]; /* declaracin del arreglo de 19 caracteres y el nulo */
scanf(%s, string2); /*lectura de teclado de una cadena y asignacin a string2 */

en este caso no se utiliza el operador de direccin &, puesto que un arreglo es ya de por s la direccin
en memoria del inicio del arreglo.

La funcin scanf lee caracteres de teclado hasta que se encuentra el primer caracter de espacio en
blanco sin importar el tamao.

Es posible imprimir una cadena de caracteres con printf de la siguiente forma:

printf(%s, string2);

En el siguiente ejemplo se analiza el manejo de arreglos de tipo char.

/* Manejo de arreglos de tipo char */
#include (stdio.h)
#include (conio.h)
main( )
{
char string1[20], string2[]="Cadena de Caracteres";
int i;

printf("Introduzca un string: ");
scanf("%s", string1);
printf("El string1 es: %s\n",string1);
printf("El string2 es: %s\n",string2);
printf("El string1 con espacios es: \n");
/* impresion con un espacio despues de cada caracter*/
for (i=0; string1[i] != '\0'; i++)

if (string1[i]>='a' && string1[i]<='z')
/* si es una letra minuscula hacerla mayuscula */
printf("%c ", string1[i]-32);
else
/* si no es letra minuscula imprimir tal cual */
printf("%c ", string1[i]);
printf("\n");
getch ( );
return 0;
}

Paso de arreglos como parmetros a funciones.
Para pasar como argumento un arreglo a una funcin, se especifica el nombre del arreglo, sin
corchetes, por ejemplo, para pasar a una funcin imprimePresion el arreglo PresionDiaria se realiza de
la siguiente manera:

imprimePresion(PresionDiaria, 7);

en este ejemplo se pasa tambin como parmetro la longitud del arreglo, esto se hace normalmente
para que las funciones puedan procesar todos los elementos del arreglo sin tratar de acceder a
elementos inexistentes.

C pasa de forma automtica los arreglos a las funciones utilizando simulacin de llamadas por
referencia, es decir, las funciones llamadas pueden modificar los valores de los elementos en los
arreglos originales de los llamadores. Esto se debe a que la funcin llamada no realiza una copia como
lo hace con las variables normales, sino que recibe la direccin de memoria del inicio del arreglo, por
tanto, donde se hacen las posibles asignaciones dentro de las funciones es en los espacios originales
que ocupa el arreglo en memoria.

Para que una funcin reciba un arreglo a travs de una llamada de funcin, la lista de parmetros de
la funcin debe especificar que se va a recibir un arreglo. Por ejemplo, el encabezado de funcin para
la funcin modificarArreglo puede ser escrito como:

void modificarArreglo(int b[], int size)

A continuacin se presenta un ejemplo utilizando llamadas a funciones con paso de arreglos como
parmetros.

/* Pasando arreglos y elementos individuales de arreglo a funciones */
#include (stdio.h)
#include (conio.h)
#define SIZE 5
void modificarArreglo( int [], int); /*prototipos de funcion*/
void modificarElemento(int);
main( )
{
int a[SIZE] = {4,3,2,1,0};
int i;
printf("Efecto de pasar un arreglo a una funcion\n");
printf("Los valores originales son:\n");
for (i=0; i<=SIZE-1; i++)
printf("%3d", a[i]);
printf("\n");
modificarArreglo(a, SIZE);
printf("Los valores modificados son:\n");
for (i=0; i<=SIZE-1; i++)
printf("%3d", a[i]);
printf("\n\nEfecto de pasar un solo elemento por valor\n");
printf("El valor de a[3] es: %d\n", a[3]);
modificarElemento(a[3]);
printf("El valor de a[3] es: %d\n", a[3]);
getch ( );
return 0;
}
/* funcin que modifica los valores del arreglo */
void modificarArreglo(int c[], int size)
{
int j;
for (j=0; j<=size-1; j ++)
c[j] *= 2;
}
/* funcin que modifica un entero, en este caso un elemento del arreglo */
void modificarElemento(int elemento)
{
printf("El valor en modificarElemento es: %d\n", elemento *= 2);
}

Existen situaciones en las que no se desea que el arreglo original sea modificado por una funcin. En
estos casos es necesario utilizar el calificador especial const, calificando al arreglo tanto en el prototipo
como en el encabezado de la funcin, cuando se hace esto el arreglo se recibe como constante, y
cualquier modificacin que se intente hacer sobre l, causar un error. El siguiente programa es un
ejemplo de ello:

/* Demostracion del calificador de tipo const */
#include (stdio.h)
#include (conio.h)
void tratarDeModificarArreglo(const int []);
main( )
{
int a[]= {10,20,30};
tratarDeModificarArreglo(a);
printf("%d %d %d\n", a[0], a[1], a[2]);
return 0;
}

void tratarDeModificarArreglo(const int b[])
{
/*Generan error: No se puede modificar un objeto constante */
b[0] /= 2;
b[1] /= 2;
b[2] /= 2;
}


Ordenamiento de arreglos.
La mayora de las aplicaciones de cmputo requieren tener datos ordenados En el siguiente ejemplo se
realiza uno de los mtodos de ordenacin ms simples conocido como mtodo de burbuja u
ordenacin por hundimiento. La tcnica consiste en llevar a cabo varias pasadas a travs del arreglo,
en cada pasada se comparan pares sucesivos de elementos. Si un par est en orden creciente (o son
valores idnticos), los valores se quedan tal como estn. Si un par aparece en orden decreciente sus
valores se intercambian de lugar, utilizando una variable que almacenar temporalmente el valor del
primer elemento, ste tomar el valor del segundo elemento del par, y por ltimo el segundo tomar
el valor temporal que corresponda al primer elemento.

/* Ordenamiento de arreglo por mtodo de burbuja */
#include (stdio.h)
#include (conio.h)
#define SIZE 10
main( )
{
int a[SIZE]= {12,35,6,48,8,27,32,87,52,75};
int i, temporal, ciclo;
printf("Los valores en el orden original son: \n");
for (i=0; i<= SIZE -1; i++)
printf("%4d", a[i]);
/* Ordenamiento */
for (ciclo=1; ciclo<=SIZE -1; ciclo++)
for (i=0; i<=SIZE-1-ciclo; i++)
/*Intercambio de valores en caso de no estar en orden */
if (a[i] > a[i+1])
{
temporal = a[i];
a[i] = a[i+1];
a[i+1]= temporal;
}
/*Impresion de valores ordenados */ printf("\nLos valores ordenados son: \n");
for (i=0; i<= SIZE -1; i++)
printf("%4d", a[i]);
getch ( );
return 0;
}

Existen otros mtodos de ordenamiento ms complejos en cuanto a su implementacin, pero ms
eficientes en el nmero total de comparaciones que realizan, ocupando menor tiempo (en trminos
computacionales) en ordenar el arreglo.

Bsqueda de arreglos
Existen tambin varios mtodos para buscar un elemento en un arreglo, sin embargo, el buen
funcionamiento de algunos depende de que los elementos del arreglo estn ordenados de alguna
manera. El mtodo para buscar un elemento en un arreglo que no se encuentre ordenado (tambin
funciona para arreglos ordenados), es la bsqueda lineal, que consiste en comparar cada elemento del
arreglo (comenzando por el primero) con el valor buscado, y cuando se encuentre uno igual, sealar
el ndice del elemento correspondiente.

El siguiente ejemplo muestra una funcin que realiza la bsqueda lineal de un elemento.

/* Busqueda lineal en un arreglo */
#include (stdio.h)
#include (conio.h)
#define SIZE 10
int BusquedaLineal(int [], int,int);
main()
{
int a[SIZE]= {12,35,6,48,8,27,32,87,52,75};
int valorBuscado, indiceValor, i;
clrscr();
printf("Introduzca el valor a buscar en el arreglo: ");
scanf("%d", &valorBuscado);
indiceValor= BusquedaLineal(a,valorBuscado, SIZE);
if (indiceValor != -1)
printf("%d corresponde al elemento %d", valorBuscado, indiceValor);
else
printf("No se encontro %d en el arreglo",valorBuscado);
return 0;
}

int BusquedaLineal(int arreglo[], int valor, int size)
{
int j;
/*Compara todos los elementos */
for (j=0; j<=size-1;j++)
if (arreglo[j]==valor)
return j; /* Valor regresado en cuanto lo encuentra*/
return -1; /* regresa -1 cuando no encuentra el valor */
}

Para arreglos ordenados es muy utilizado el mtodo de bsqueda binaria, que consiste en irse
directamente al elemento de central (posicin de en medio) del arreglo, si el valor buscado es menor
la primera mitad del arreglo se desecha, y si es mayor la se desecha la segunda. Se hace lo mismo
con la parte que quedo del arreglo buscando el punto medio, y as sucesivamente. El mayor nmero
de comparaciones posibles es igual a la mitad del tamao del arreglo.

/* Busqueda binaria en un arreglo */
#include (stdio.h)
#include (conio.h)
#define SIZE 10
void OrdenaArreglo(int[] , int );
int BusquedaBinaria(int [], int , int );
main( )
{
int b[SIZE]= {12,35,6,48,8,27,32,87,52,75};
int valorBuscado, elemento, i;
clrscr();
OrdenaArreglo (b, SIZE);
printf("Los valores del arreglo son: \n");
for (i=0; i<= SIZE -1; i++)
printf("%4d", b[i]);
printf("\n\nIntroduzca el valor a buscar en el arreglo: ");
scanf("%d", &valorBuscado);
elemento = BusquedaBinaria(b, valorBuscado, SIZE);
if (elemento != -1)
printf("%d es el elemento %d", valorBuscado, elemento);
else
printf("No se encontro %d en el arreglo", valorBuscado);
getch ( );
return 0;
}
/* Ordenamiento */
void OrdenaArreglo(int a[], int size)
{
int ciclo, temporal,i;
for (ciclo=1; ciclo<=size -1; ciclo++)
for (i=0; i<=size-1-ciclo; i++)
if (a[i] > a[i+1])
{
temporal = a[i];
a[i] = a[i+1];
a[i+1]= temporal;
}
}
/*Busqueda binaria */
int BusquedaBinaria(int arreglo[], int valor, int size)
{
int medio, primero=0, ultimo=size -1;
while (primero <= ultimo)
{
medio= (primero + ultimo) / 2;
if (valor == arreglo [medio])
return medio;
else
if (valor < arreglo [medio])
ultimo = medio - 1;
else
primero = medio + 1;
}
return -1;
}

Arreglos bidimensionales
En algunos lenguajes de programacin, y es el caso de C, se permiten arreglos de varios subndices,
es decir, arreglos multidimensionales. Generalmente estos arreglos se utilizan para representar tablas
de valores con renglones y columnas, donde el primer subndice representa el rengln y el segundo la
columna. Para referenciar cualquier elemento del arreglo se deben indicar los dos subndices.

Un arreglo de mltiple subndice puede ser inicializado en su declaracin en forma similar a un arreglo
de un subndice. Por ejemplo, un arreglo de doble subndice b[2][2] puede ser inicializado con

int b[2][2] = {{ 1, 2}, {3, 4}};

Los valores se agrupan por renglones entre llaves. Por lo tanto, 1 y 2 inicializan b[0][0] y b[0][1], 3 y
4 inicializan b[1][0] y b[1][1]. Si para un rengln dado no se proporcionan suficientes inicializadores,
los elementos restantes de dicho rengln se inicializarn a 0. Por ejemplo:

int b[2][2] = {{ 1}, {3, 4}};

inicializara b[0][0] en 1 y b[0][1] en 0, b[1][0] en 3 y b[1][1] en 4.

En la tabla siguiente se muestra la representacin grfica de un arreglo con tres renglones y cuatro
columnas.

Columna0 Columna1 Columna2 Columna 3
Rengln0 a[0][0] a[0][1] a[0][2] a[0][3]
Rengln1 a[1][0] a[1][1] a[1][2] a[1][3]
Rengln2 a[2][0] a[2][1] a[2][2] a[2][3]

El recorrido de un arreglo de dos dimensiones para impresin o para cualquier procesamiento deber
hacerse con dos ciclos for anidados, de tal modo que el ms exterior recorra todos los renglones, y
para cada rengln (el ciclo for interior) recorra todas las columnas del arreglo, de tal forma que cada
elemento sea referenciado en los ciclos anidados. A continuacin se muestra un ejemplo simple para
impresin de un arreglo bidimensional.

/* Inicializacin de arreglos bidimensionales */
#include (stdio.h)
#include (conio.h)
void imprimeArreglo(int [][3]);
main( )
{
int arreglo1[2][3] = { {1,2,3}, {4,5,6}},
arreglo2[2][3] = { 1,2,3,4,5},
arreglo3[2][3] = { {1,2}, {4}};
clrscr();
printf("Los valores en arreglo1 por rengln son: \n");
imprimeArreglo(arreglo1);
printf("Los valores en arreglo2 por rengln son: \n");
imprimeArreglo(arreglo2);
printf("Los valores en arreglo3 por rengln son: \n");
imprimeArreglo(arreglo3);
getch ( );
return 0;
}
void imprimeArreglo(int arreglo[][3])
{
int i,j;
for (i=0; i<=1; i++)
{
for (j=0; j<=2; j++)
printf("%5d", arreglo[i][j]);
printf("\n");
}
}

PRACTICA DE ARREGLOS.
En un grupo existen cinco alumnos, los cuales presentaron tres exmenes cada uno obteniendo las
siguientes calificaciones:

CALIFICACIONES
ALUMNOS Examen0 Examen1 Examen2
Alumno0 77 74 84
Alumno1 96 85 76
Alumno2 70 69 88
Alumno3 58 86 90
Alumno4 75 91 72

Se desea obtener la tabla de calificaciones (semejante a la mostrada), la calificacin ms baja, la
calificacin ms alta y el promedio por cada alumno.

El problema se resuelve de la siguiente forma:

Como se conoce el nmero de alumnos y el nmero de calificaciones se definirn dos constantes
simblicas ALUMNOS y EXAMENES de 5 y 3 respectivamente.

/* Ejemplo de arreglos bidimensionales */
#include (stdio.h)
#include (conio.h)
#define ALUMNOS 5
#define EXAMENES 3

Debido a que se utilizarn funciones para imprimir los valores, encontrar la calificacin mnima, la
mxima y el promedio por alumno, es necesario comenzar a trabajar con dichas funciones. La funcin
mnima debe encontrar la calificacin ms baja entre todos los elementos del arreglo, por tanto ser
necesario que reciba como parmetros el mismo arreglo, el nmero de filas (o alumnos) y el nmero
de columnas (calificaciones), esto debido a que la funcin no debe ignorar elementos, ni tampoco
tratar de acceder a elementos que no existen en el arreglo. La manera de encontrar la calificacin
mnima es suponer una mnima seguramente mayor a todas, como 100 (para que sea sustituida
rpidamente por el primer elemento del arreglo). Todas los elementos se compararn con la
calificacin mnima registrada hasta el momento, y de ser menor, este valor ser asignado a la
variable minimo, de tal forma que al trmino del recorrido de todo el arreglo, la variable minimo
contenga el valor de la calificacin ms baja.

/*Calificacin mnima */
int minima (int calificaciones[][EXAMENES], int alum, int prueba)
{
int i, j, minimo = 100;
for (i=0;i<=alum-1; i++)
for (j=0; j<=prueba-1; j++)
if (calificaciones[i][j] < minimo)
minimo = calificaciones[i][j];
return minimo;
}

De la misma forma que la funcin minima, deber plantearse la funcin maxima, que encontrar la
calificacin ms alta. En este caso la variable maximo es iniciada en 0 para ser sustituida por cualquier
elemento mayor. Posteriormente se recorre el arreglo y se va guardando el valor mayor en la variable
maximo.

/* Calificacin mxima */
int maxima (int calificaciones[][EXAMENES], int alum, int prueba)
{
int i, j, maximo = 0;
for (i=0;i<=alum-1; i++)
for (j=0; j<=prueba-1; j++)
if (calificaciones[i][j] > maximo)
maximo = calificaciones[i][j];
return maximo;
}

La funcin para imprimir el arreglo, simplemente hace un recorrido en un primer ciclo for, de todos los
renglones (alumnos) en el arreglo, y en un for anidado recorre cada una de las columnas de cada fila
(calificaciones), imprimiendo rengln por rengln.

/* imprime el arreglo */
void imprimeArreglo(int calificaciones[][EXAMENES], int estudiante, int pruebas)
{
int i,j;
printf("\n%-20s%-30s\n"," ", "CALIFICACIONES");
printf("%-20s%6s%6s%6s", "ALUMNO","[0]","[1]","[2]","[3]");
for (i=0; i<= estudiante-1; i++)
{
printf("\nAlumno %d ", i);
for(j=0; j<=pruebas-1; j++)
printf("%6d", calificaciones[i][j]);
}
}

Para determinar el promedio por alumno se har otra funcin, que devuelve un tipo float (el
promedio) y que recibe nicamente dos parmetros, un arreglo de una sola dimensin y el tamao de
este arreglo (el nmero de calificaciones). El arreglo sencillo corresponde a las tres calificaciones del
alumno en cuestin. La funcin acumula mediante un ciclo todos los valores para posteriormente
dividirlo entre el total de calificaciones (la variable pruebas).

/*Promedio */
float promedio(int calif[], int pruebas)
{
int i, total=0;
for (i=0; i<=pruebas-1; i++)
total += calif[i];
return total/pruebas;
}

En la funcin main (programa principal) se declararn dos variables enteras, una representando el
arreglo de calificaciones, donde tendremos 5 renglones (de alumnos) y 3 columnas (de calificaciones),
que se inicializar en la misma declaracin. La otra variable entera ialumno, servir para recorrer el
arreglo en todas sus filas, es decir, alumno por alumno. Una vez hecho esto deben mandar llamarse
las funciones creadas de la forma correcta para obtener los resultados deseados.

main()
{
int ialumno, alumCalif[ALUMNOS][EXAMENES] = {{77,74,84},{96,85,96},
70,69,88},{58,86,90},{75,91,72}};
clrscr();
printf("El arreglo es: \n");
imprimeArreglo(alumCalif, ALUMNOS, EXAMENES);
printf("\n\nCalificacin ms baja: %d\n", minima(alumCalif,(ALUMNOS,EXAMENES));
printf("Calificacin ms alta: %d\n", maxima(alumCalif,ALUMNOS,EXAMENES));
for (ialumno=0; ialumno<=ALUMNOS - 1; ialumno ++)
printf("\nEl promedio para el alumno %d es: %.2f\n", ialumno,
promedio(alumCalif[ialumno], EXAMENES));
getch ( );
return 0;
}

No hay que olvidar que las definiciones de las funciones deben ubicarse despus de main y que antes
de main debe existir un prototipo. De este modo el programa completo queda de la siguiente manera:

/* Ejemplo de arreglos bidimensionales */
#include (stdio.h)
#include (conio.h)
#define ALUMNOS 5
#define EXAMENES 3
int minima(int [][EXAMENES], int, int);
int maxima(int [][EXAMENES], int, int);
float promedio(int [], int);
void imprimeArreglo( int [][EXAMENES], int, int);

main( )
{
int ialumno,
alumCalif[ALUMNOS][EXAMENES] = {{77,74,84},{96,85,96},
{70,69,88},{58,86,90},{75,91,72}};
clrscr();
printf("El arreglo es: \n");
imprimeArreglo(alumCalif, ALUMNOS, EXAMENES);
printf("\n\nCalificacin ms baja: %d\n", minima(alumCalif, ALUMNOS,EXAMENES));
printf("Calificacin ms alta: %d\n", maxima(alumCalif, ALUMNOS,EXAMENES));
for (ialumno=0; ialumno<=ALUMNOS - 1; ialumno ++)
printf("\nEl promedio para el alumno %d es: %.2f\n", ialumno,
promedio(alumCalif[ialumno], EXAMENES));
return 0;
}

/*imprime el arreglo */
void imprimeArreglo(int calificaciones[][EXAMENES], int estudiante, int pruebas)
{
int i,j;
printf("\n%-20s%-30s\n"," ", "CALIFICACIONES");
printf("%-20s%6s%6s%6s", "ALUMNO","[0]","[1]","[2]","[3]");
for (i=0; i<= estudiante-1; i++)
{
printf("\nAlumno %d ", i);
for(j=0; j<=pruebas-1; j++)
printf("%6d", calificaciones[i][j]);
}
}

/*Calificacin mnima */
int minima (int calificaciones[][EXAMENES], int alum, int prueba)
{
int i, j, minimo = 100;
for (i=0;i<=alum-1; i++)
for (j=0; j<=prueba-1; j++)
if (calificaciones[i][j] < minimo)
minimo = calificaciones[i][j];
return minimo;
}

/*Calificacin mxima */
int maxima (int calificaciones[][EXAMENES], int alum, int prueba)
{
int i, j, maximo = 0;
for (i=0;i<=alum-1; i++)
for (j=0; j<=prueba-1; j++)
if (calificaciones[i][j] > maximo)
maximo = calificaciones[i][j];
return maximo;
}

/*Promedio */
float promedio(int calif[], int pruebas)
{
int i, total=0;
for (i=0; i<=pruebas-1; i++)
total += calif[i];
return total/pruebas;
}


ractica 10: Ejercicios con Arreglos unidimensionales.
Materia: Lgica Computacional.
Profesor: Lic. Salomn Aquino.

I. Objetivo. Al finalizar la prctica el estudiante ser capaz de:
Definir estructuras de datos y arreglos.
Utilizar arreglos en una dimensin para resolver problemas.
II. Introduccin Terica.
Los Arreglos (Vectores o Array)
Un array (lista o tabla9 es una secuencia de datos del mismo tipo. Los datos se llaman elementos
del array y se numeran consecutivamente 0, 1, 2, 3, ,, etc. Estos nmeros se denominan valores
ndice o subndice del array. El tipo de elementos almacenados en el array pueden ser cualquier
tipo de dato de C, incluyendo estructuras definidas por el usuario.
Entonces, podemos entender los arrays (tambin conocidos como arreglos o formaciones) como
variables que contienen diferentes tipos de datos homogneos. Se puede acceder a cada
elemento de datos individual de la variable mediante un subndice, o ndice. En los lenguajes C y
C++, un array no se corresponde con un tipo de dato estndar; en su lugar, se trata de un tipo
agregado que se obtiene a partir de otros tipos de datos. Es posible tener un array de cualquier
cosa: caracteres, enteros, nmeros en coma flotante, arrays, etc.
Un array se declara de modo similar a otros tipos de datos, excepto que se debe indicar al
compilador el tamao o longitud del array. Para indicar al compilador el tamao o longitud del
array se debe hacer seguir al nombre, el tamao encerrado entre corchetes.
Los arrays tienen cuatro propiedades bsicas:
Los elementos individuales de datos de un array se denominan elementos.
Todos los elementos deben ser del mismo tipo de dato.
Todos los elementos se almacenan en posiciones contiguas de la memoria de la computadora y
el subndice (o ndice) del primer elemento es cero.
El nombre de un array es un valor constante que representa la direccin del primer elemento
del array.
Para acceder a un elemento especifico del array, se utiliza el nombre de ste seguido por uno o
ms ndices (donde cada uno representa una dimensin del arreglo o array) encerrado entre
corchetes. Supongamos que tenemos un arreglo unidimensional llamado X con un tamao de n
elementos, su esquema grafico es el siguiente:



Como puede verse en el esquema, aunque el arreglo es de n elementos, en realidad tienen n-
1 elementos porque comienzan a enumerarse desde cero.
En trminos generales para definir un array se especifica el tipo de almacenamiento (atributo
opcional), el tipo de datos, el identificador y entre corchetes el tamao del arreglo. Abajo se
muestra algunos ejemplos de definicin de arreglos:

a) int num[100]; (un array de 100 enteros)
b) char apellido[25]; (un array de 25 caracteres)
c) float prom[30]; (un array de 30 coma flotante)
d) char contrasena[16]; (un array de 16 caracteres)

La necesidad de definir arrays en funcin de constantes
A veces es conveniente definir el tamao de un array en trminos de una constante, en lugar de
estar especificando una cantidad entera fija. Esto se realiza por facilidad de mantenimiento. Por
ejemplo, suponga que tenemos un programa (con 350 lneas de cdigo) donde se halle un array
de 20 items, y a lo largo del programa se hace referencia unas 12 veces al arreglo, y supongamos
tambin que se necesita cambiar el tamao del arreglo. Sin usar la constante se tendra que
revisar todo el programa para localizar las lneas de cdigo y efectuar el cambio al nuevo
tamao, en cambio con el uso de constantes slo se le cambia el tamao a la misma y el
problema esta resuelto. La definicin de un array a travs de una constante se muestra en el
siguiente ejemplo:
# include stdio.h>
# include stdlib.h>
/* Definicin de la constante */
#define tamano 20
main()
{
/* Utilizacin de la constante para definir la dimensin del arreglo */
int promedios[tamano];
/* Leer valores utilizando la variable i como contador dentro del ciclo FOR y ++i como
acumulador*/
for (i=0; i < tamano; ++i)
scanf(%d,&promedios[i]);
.....
.....
}
La utilizacin de constantes definidas garantiza que las siguientes referencias al array no
sobrepasen el tamao definido para el mismo.
C no comprueba que los ndices del array estn dentro del rango definido.

Inicializacin de arreglos
En ciertas circunstancias puede ser necesario darle valores iniciales a los arreglos, para ello basta
con colocar entre llaves el conjunto de valores deseados separados por comas y en el orden
requerido. A continuacin se muestran algunos ejemplos:
a) int cant[6]={12,-3,0,15,8};
b) double DesvTipica[8]={0.23, 3.1416, -0.5, 2.16789, -56.78, 25, 0.15, -14 };
c) char meses[12]={E, F, M, A, M, J, J, A, S, O, N, D};

Para el caso del arreglo cant es como tener:
Cant[0]=12
Cant[1]= -3
Cant[2]=0
Cant[3]=15
Cant[4]=8

Cuando los elementos del arreglo no tienen asignados valores iniciales explcitos, stos son
puestos a cero, a continuacin tenemos un ejemplo:
int edades[8]={25,13,18};

El resultado de la asignacin seria el siguiente:
Edades[0]=25;
Edades[1]=13;
Edades[2]=18;
Edades[3]=0;
Edades[4]=0;
Edades[5]=0;
Edades[6]=0;
Edades[7]=0;

Este mtodo de inicializar arrays mediante valores constantes despus de su definicin, es
adecuado cuando el nmero de elementos del arreglo es pequeo.
Una nota interesante en cuanto a la inicializacin de arreglos, es que el tamao no necesita ser
indicado explcitamente. Con los arrays numricos el tamao ser fijado igual al nmero de
valores incluidos. En cuanto a las cadenas, el tamao se fijar igual al nmero de caracteres del
string o cadena mas uno (el carcter nulo \0).
C puede dejar los corchetes vacos, slo cuando se asignan valores al array, tal como
int cuenta[ ] = { 15, 25, -45 , 0 , 50 };
char c[ ] = { L, u, i, s }; /* declara un array de 4 elementos */
El compilador asigna automticamente cinco elementos a cuenta.
Otros ejemplos:
a) Int porcent[ ]={8, 6, 10, -15, 23};
b) Char mes[ ]=octubre;
que vienen siendo equivalente a:

Porcent[0]=8;
porcent[1]=6;
porcent[2]=10;
porcent[3]= -15;
porcent[4]=23;

mes[0]=o;
mes[1]=c;
mes[2]=t;
mes[3]=u;
mes[4]=b;
mes[5]=r;
mes[6]=e;
mes[7]=\0

Ejemplo 1:
Elabore un programa que permita leer una lista de nmeros en un arreglo, calcule la suma,
promedio, cuadrado , cubo y desviacin estndar de los mismos:
#include stdio.h>
#include stdlib.h>
#include conio.h>
#include math.h>
#define tam 4
/* programa para calcular la suma, promedio, cuadrado, cubo y desviacin
estandar de una serie de nmeros */
main ( )
{
double vector[tam],cuadrado, cubo;
float prom, desv,suma=0;
int i, j;

system("cls" );
printf ("PROGRAMA PARA CALCULAR \n");
printf(" PROMEDIO, SUMA, CUADRADO, CUBO Y DESV. EST.\n\n") ;
//Captura de valores y suma de los mismos
for(i = 0 ; i < tam ; ++i)
{
printf ("num [%d] = " , i) ;
scanf ("%lf" , &vector[i]) ;
suma+= vector[i] ;
}
prom = suma / tam ;
printf (" \n El promedio de los numeros es: %4.2f\n ", prom) ;
//Calculo e impresin de cuadrado, cubo y desviacin estandar
printf(" \n \n NUMERO CUADRADO CUBO DESV. EST.\n");
for( i = 0 ; i < tam ; ++i )
{
cuadrado = vector[i] * vector[i] ;
cubo = pow (vector[i], 3) ;
desv = vector [i] - prom ;
printf ("%.2lf", vector[i] ) ;
printf (" \t%.2lf", cuadrado) ;
printf (" \t%.2lf", cubo) ;
printf (" \t%.2f\n", desv) ;
}
system("pause");
return(0);
}

Nota que los valores fueron declarados de tipo double no enteros, por el tamao de los valores
que se generan en los clculos.

Ejemplo 2:
El siguiente programa lee 5 valores de teclado y los guarda en un arreglo a. Luego los escribe.

#include stdio.h>
#include stdlib.h>
main()
{
int a[5],i,num;
for(i=0; i<5;i++){
printf("Digite el numero:\n");
scanf("%d",&num);
a[i]=num;
}

printf("\nEscribiendo el arreglo con los datos leidos:\n\n");
for(i=0; i<5;i++){
printf("a[%d]= %d\n\n",i,a[i]);
}
system("pause");
return 0;
}

Ejemplo 3:
El siguiente programa, pide 5 numeros y calcula los cubos de ellos, los cuales son guardados en un
arreglo y son desplegados.

#include stdio.h>
#include stdlib.h>
#include math.h>
main()
{
int i;
double a[5], num;
for (i=0; i<5; i++)
{
printf("\n Digite numero:");
scanf("%lf", &num);
a[i]=num;
}
printf("_________________________________________\n");
printf("Los cubos de los numeros leidos son:\n");
for (i=0; i<5; i++){
a[i]=pow(a[i],3);
printf("%.0lf\n",a[i]);
}
printf("\n");
system("pause");
return 0;
}



EJERCICIOS:

Ejercicio 1:
Digite, compile y ejecute el siguiente programa.
#include stdio.h>
#include stdlib.h>
main()
{
int a,b=0;
int c[10]={1,2,3,4,5,6,7,8,9,0};
for (a=0;a<10;++a)
if ((c[a]%2)==0) b+=c[a];
printf("%d\n",b);
system(pause);
return 0;
}

Qu hace el programa? __________________________________________
_______________________________________________________________
Cul es la salida? _______

Ejercicio 2:
Digite, compile y ejecute el siguiente programa.
#include stdio.h>
#include stdlib.h>
main()
{
int a,b=0;
int c[10]={1,2,3,4,5,6,7,8,9,0};
for (a=0;a<10;++a)
if ((a%2)==0)b+=c[a];
printf("%d\n",b);
system(pause);
return 0;
}
Qu hace el programa? __________________________________________
_______________________________________________________________
Cul es la salida? _______
En qu se diferencia del ejemplo anterior? ____________________________
_______________________________________________________________
Ejercicio 3
Elabore un programa que sume los primeros 25 nmeros enteros guardados en un vector. Se desea
imprimir la lista de nmeros y al final la suma de los mismos.
Ejercicio 4
Generar e imprimir un vector de 10 nmeros enteros y encontrar el mayor de ellos. Desplegar el
resultado.
Ejercicio 5
Dadas dos listas A y B de igual nmero de elementos, se desea generar e imprimir una lista C
conteniendo las sumas: A[i] + B[i] = C[i]










Arreglos
Qu es un arreglo?
Un arreglo es un grupo consecutivo de localidades de memoria relacionadas por el hecho de que
tienen el mismo nombre y el mismo tipo. Para hacer referencia a una localidad o a un elemento del
arreglo en particular, especificamos el nombre del arreglo y la posicin numrica del elemento en
particular dentro del arreglo.

ejemplo de arreglo de 12 elementos
La figura muestra un arreglo de enteros llamado c. Este arreglo contiene 12 elementos. Se hace
referencia a cualquiera de de estos elementos al dar el nombre del arreglo seguido del elemento en
particular dentro de corchetes ([]).
El primer elemento de cada arreglo es el elemento cero. Entonces la referencia al primer
elemento del arreglo es c[0], la referencia al segundo elemento del arreglo es el c[1], y en
general la referencia al isimo elemento del arreglo c es c[i-1].
Los nombres de un arreglo siguen las mismas reglas que los dems nombres de variables.
La posicin numrica que se encuentra entre corchetes se denomina, de manera formal, subndice.
Debe ser entero o una expresin entera.
Declaracin de arreglos
Tipo_datos nombre[tamao]
Donde [ ] operador de subndices del arreglo.
Ejemplo
Float arreglo[500]
Nota en C el arreglo se debe declarar en forma explcita antes de utilizarlo como
cualquier variable.

Inicializacin de arreglos
Elemento por elemento
Da[0] =L;
Todos los elementos al mismo tiempo
Float arreglo[3]={.0123, 3.1416,.000236}
Cmo desplegar una cadena de Caracteres
Una cadena de caracteres se define en C como una secuencia continua de caracteres que
termina con el caracter nulo ().
EL CARCTER NULO ()
Este es un carcter especial que indica el fin de la cadena y para esta unida el ltimo elemento del
arreglo.
El carcter nulo se evala con un valor de cero, as que se puede usar para una prueba lgica en una
instruccin de control de flujo.
Funciones Y Arreglos
Cuando se usan un arreglo como un argumento a la funcin, se pasa slo la direccin del arreglo y
no la copia del arreglo entero. Para fines prcticos podemos considerar el nombre del arreglo sin
ningn ndice como la direccin del arreglo.
Considerar el siguiente ejemplo en donde se pasa un arreglo a la funcin imp_rev, observar que no
es necesario especificar la dimensin del arreglo cuando es un parmetro de la funcin.
void imp_rev(char s[])
{
int t;
for( t=strlen(s)-1; t>=0; t)
printf(%c,s[t]);
}
main()
{
char nombre[]=Facultad;
imp_rev(nombre);
}
Observar que en la funcin imp_rev se usa la funcin strlen para calcular la longitud de la cadena
sin incluir el terminador nulo. Por otra parte, la funcin imp_rev no usa la sentencia return ni para
terminar de usar la funcin, ni para regresar algn valor.
Se muestra otro ejemplo,
float enconprom(int tam, float lista[])
{
int i;
float suma = 0.0;
for ( i=0; i<tam; i++)
suma += lista[i];
return(suma/tam);
}
main()
{
float numeros[]={2.3, 8.0, 15.0, 20.2, 44.01, -3.0, -2.9};
printf(El promedio de la lista es %f\n, enconprom(7,numeros) );
}
Para el caso de que se tenga que pasar un arreglo con ms de una dimensin, no se indica la primera
dimensin pero, el resto de las dimensiones deben sealarse. Se muestra a continuacin un
ejemplo:
void imprtabla(int tamx,int tamy, float tabla[][5])
{
int x,y;
for ( x=0; x<tamx; x++ )
{
for ( y=0; y<tamy; y++ )
printf(t[%d][%d]=%f,x,y,tabla[x][y]);
printf(\n);
}
}
============================================
Paso por referencia y valor
Aunque arreglos completos se pasar por referencia, los elementos individuales de un arreglo se
pasan por valor, como se hace con las variables sencillas. En el siguiente programa se ejemplica
esto.
/* Programa para mostrar la ubicacion de la memoria de un arreglo de 3 formas n*/
#include <stdio.h>
/*function main begins program execution*/
#define SIZE 5
/*Function prototypes */
void modifyArray(int b[], int size);
void modifyElement( int e);
int main()
{
/* Declarar variables: */
int a[SIZE]= {0,1,2,3,4}; /*inicilize a*/
int i; /*counter*/
printf(Effects of passing entire array by reference:\n\nThe values of the original array are:\n);
/*output original array*/
for (i=0; i<SIZE; i++) {
printf(%3d, a[i]);
}
printf(\n);
modifyArray(a, SIZE);
printf(The values of the modify array are:\n );
/*output modify array*/
for (i=0; i<SIZE; i++) {
printf(%3d, a[i]);
} /*end for*/
/*output value of a[3]*/
printf(\n\n\nEffects of passing array element by value: \n\nthe value of a[3] is %d\n,a[3] );
modifyElement(a[3]); /*pass array elemnt a[3] by value*/
/* output value of a[3]*/
printf(The value of a[3] is %d\n,a[3] );
getchar();
return 0; /*indicate that the program ended succesfully*/
}
void modifyArray(int b[], int size)
{
int j; /*counter*/
/*multiply each array element by 2*/
for (j=0; j<size; j++) {
b[j]*=2;
} /*end for*/
} /*end fuction modifyarray*/
/*in function modifyelemnt, e is a local copy of array element a[3] passed from main*/
void modifyElement( int e)
{
printf(the modifyelement is %d\n,e*=2 );
} /*end for*/













Ejercicios de la guia, si hay alguna error se los dejo para que lo encuentren ustedes y me lo
hagan saber, as lo corrijo, estan en orden del 1 al 47, sugiero que lo hagan ustedes y en caso
que no les salga, ahi s consultar para ver el ejercicio resuelto.

VARIABLES. ACUMULADORES. CONTADORES. BUCLES Y TOMA DE DECISIONES

1. Ingresar 5 nmeros y calcular su media

2. Escribir el algoritmo necesario para calcular y mostrar el cuadrado de un nmero. El nmero
debe ser mayor que cero, en caso de error que aparezca el mensaje "ERROR, el nmero debe
ser mayor que cero"

3. De 10 nmeros ingresados indicar cuantos son mayores a cero y cuantos son menores a
cero.

4. Disear un algoritmo que calcule la longitud de la circunferencia y el rea del crculo de radio
dado.

5. Disear un algoritmo que calcule la superficie de un tringulo a partir del ingreso de su base
y altura y muestre el resultado.

6. Hacer el algoritmo que nos permita introducir un nmero por teclado y nos informe si es
positivo o negativo

7. Hacer el algoritmo que nos permita introducir un nmero por teclado y nos informe si es par
o impar

8. Escribir el algoritmo que me permita leer un nmero decimal que representa una cantidad
de grados Celsius y convierta dicho valor a la cantidad equivalente en grados Fahrenheit. La
salida del programa puede ser de la siguiente forma: 100 grados celsius son 212 grados
Fahrenheit

9. Dados ciertos centmetros como entrada de tipo decimal, escribir su equivalente a pies
(enteros) y pulgadas (decimal), dando las pulgadas con una precisin de 1 lugar decimal.
Considerar 2.54 cm por pulgada y 12 pulgadas por pie. La salida podr ser: 333.3 cm son 10
pies y 11.2 pulgadas.

10. Escribir en Pseudocdigo y codificar en C un programa que lea 20 caracteres. Luego de la
lectura indicar cuantas "a" se ingresaron, cuantas "e, i, o, u"

11. Realizar un algoritmo que permita ingresar un nmero correspondiente a los das de una
semana y muestre el nombre del da. Que se permita trabajar hasta que el usuario indique lo
contrario.

12. Escribir en Pseudocdigo y codificar en C un programa que muestre los nmeros impares
entre 0 y 100 y que imprima cuantos impares hay

13. Hacer el algoritmo que imprima los nmeros pares entre el 1 y el 100

14. Hacer el algoritmo que imprima los nmeros del 1 al 100

15. Hacer el algoritmo que imprima los nmeros del 100 al 0 en orden decreciente

16. Disear un algoritmo que imprima y sume la serie de nmeros 3,6,9,12,...,99.

17. Escribir en Pseudocdigo y codificar en C un programa que muestre los mltiplos de 2 y de
3 y de ambos comprendidos entre 0 y 100

18. Ingresar un nmero, entero y efectuar la suma de todos los nmeros que le anteceden,
comenzando desde 0 y mostrar el resultado por pantalla

19. Hacer el algoritmo que imprima todos los nmeros naturales que hay desde la unidad hasta
un nmero que introducimos por teclado

20. Hacer el algoritmo que nos permita contar los mltiplos de 3 desde la unidad hasta un
nmero que introducimos por teclado

21. Escribir en Pseudocdigo y codificar en C un programa que muestre los nmeros primos
comprendidos entre 0 y 100

22. Disear en Pseudocdigo y codificar en C un algoritmo que permita ingresar 10 nmeros,
ninguno de ellos igual a cero. Se pide sumar los positivos, obtener el producto de los negativos y
luego mostrar ambos resultados.

23. Disear el algoritmo necesario para que habindose ledo el valor de 2 variables NUM1 y
NUM2 se intercambien los valores de las variables, es decir que el valor que tena NUM1 ahora lo
contenga NUM2 y viceversa

24. Escribir un programa que visualice una tabla de los N primeros nmeros, siendo N un
nmero que ingresa el usuario. Utilizar el siguiente diseo de salida suponiendo que el usuario
ingres un tres:
NMERO CUADRADO CUBO
1 1 1
2 4 8
3 9 27

25. Disear en Pseudocdigo y codificar en C un algoritmo que permita registrar de los
empleados de una fbrica (no se sabe cuantos) su peso y saber cuantos pesan hasta 80 kg.
inclusive y cuantos pesan ms de 80 kg.

26. En una tienda de artculos para caballeros al final del da se carga en la computadora las
boletas que confeccionaron los distintos vendedores para saber cuanto fue la comisin del da de
cada uno de ellos. Los datos que se ingresan (por boleta) son: el nmero de vendedor y el
importe. Cuando no hay ms boletas para cargar se ingresa 0. Teniendo en cuenta que el
negocio tiene 3 vendedores y que el porcentaje sobre las ventas es del 5%, indicar cunto gan
cada vendedor en el da

27. Ingresar por teclado 3 nmeros correspondientes a los lados de un tringulo. Teniendo en
cuenta que la suma de los dos lados menores tiene que ser superior al lado mayor para que
formen un tringulo, indicar si los nmeros indicados forman un tringulo y si lo forman que tipo
de tringulo es (segn sus lados).

28. Dados 3 nmeros donde el primero y el ltimo son lmites de un intervalo, indicar si el
tercero pertenece a dicho intervalo

29. Por teclado se ingresa el valor hora de un empleado. Posteriormente se ingresa el nombre
del empleado, la antigedad y la cantidad de horas trabajadas en el mes. Se pide calcular el
importe a cobrar teniendo en cuenta que al total que resulta de multiplicar el valor hora por la
cantidad de horas trabajadas, hay que sumarle la cantidad de aos trabajados multiplicados por
$30, y al total de todas esas operaciones restarle el 13% en concepto de descuentos. Imprimir
el recibo correspondiente con el nombre, la antigedad, el valor hora, el total a cobrar en bruto,
el total de descuentos y el valor neto a cobrar.

30. Realizar la tabla de multiplicar de un nmero entre 0 y 10 de forma que se visualice de la
siguiente forma:
4x1= 4
4x2= 8
..........

31. Hacer el algoritmo que luego de ingresar 2 nmeros por teclado, imprima los nmeros
naturales que hay entre ambos empezando por el ms pequeo, contar cuntos nmeros hay y
cuntos de ellos son pares.

32. Se registran de los empleados de una empresa Nmero de legajo, sueldo y sexo (1
femenino y 2 masculino). Disear en Pseudocdigo y codificar en C un algoritmo que permita
informar cuantas mujeres ganan ms de $ 500 y cuantos hombres ganan menos de $ 400.

MXIMOS Y MNIMOS

33. Se ingresa por teclado la cantidad de agua cada, en milmetros da a da durante un mes.
Se pide determinar el da de mayor lluvia, el de menor y el promedio

34. Hacer el algoritmo que imprima el mayor y el menor de una serie de 5 nmeros que vamos
introduciendo por teclado.

35. De los alumnos de una escuela se registra su apellido y nombre y su altura. Disear en
Pseudocdigo un algoritmo que indique el nombre del alumno ms alto y su altura (slo uno es
el ms alto).

36. Disear un algoritmo que permita calcular el promedio de un alumno sabiendo que se
ingresa por alumno la nota de 6 materias y su nombre. No se sabe la cantidad de alumnos. Se
pide mostrar: NOMBRE DEL ALUMNO: PROMEDIO:

37. Del registro de partes meteorolgico por cada da se registra la fecha, temperatura mxima
y temperatura mnima. Disear en Pseudocdigo un algoritmo que permita informar:
el da ms fro y cual fue esa temperatura
el da ms clido y cual fue esa temperatura

38. De las 20 participantes de un concurso de belleza se van registrando de uno en uno los
siguientes datos:
Apellido y Nombre
Puntos por inteligencia
Puntos por Cultura general
Puntos por Belleza
Se necesita informar por pantalla:
Apellido y nombre de la concursante de mayor puntaje general
Puntaje acumulado por todas las participantes en Cultura general, en Inteligencia y en Belleza
De los tres puntajes acumulados en el tem anterior cual fue el menor

39. Escribir un programa que calcule el salario semanal de cada trabajador de una empresa
dada la tarifa horaria y el nmero de horas trabajadas adems del nombre. Se debe permitir al
usuario indicar cuando desea dejar de ingresar datos.

40. dem al anterior pero informando al finalizar (el ingreso de datos y los clculos
correspondientes) la cantidad de empleados a los que se les calcul el salario.

41. dem al anterior agregando en el informe final nombre del empleado de mayor salario con
el monto del salario correspondiente y nombre del empleado de menor salario con el monto del
salario correspondiente

42. dem al anterior agregando en el informe final el costo de la empresa en salarios y el
salario promedio

43. En un club se registran de uno en uno los siguientes datos de sus socios:
Nmero de socio
Apellido y nombre
Edad
Tipo de deporte que practica (1 tenis, 2 rugby, 3 voley, 4 hockey, 5 futbol)
Disear en Pseudocdigo un algoritmo que permita emitir por pantalla cuantos socios practican
tenis y cuantos paddle y el promedio de edad de los jugadores de cada deporte

44. Escribir un programa que determine si un ao es bisiesto. Un ao es bisiesto si es mltiplo
de 4. Los aos mltiplos de 100 no son bisiestos, salvo si ellos tambin son mltiplos de 400
(2000 es bisiesto pero 1900 no)

45. Un profesor de matemtica de un establecimiento educativo registra de cada alumno N de
legajo, nombre y promedio. Segn el promedio desea saber cuantos alumnos aprobaron
(promedio mayor o igual a 7), cuantos rinden en diciembre (promedio menor a 7 y mayor o
igual a 4) y cuantos rinden examen en marzo (promedio menor a 4). Adems desea conocer el
N de legajo y nombre del alumno con mejor promedio.

46. Disear el algoritmo que le presente al usuario un men de opciones con las cuatro
operaciones bsicas (suma, resta, multiplicacin, divisin). Segn la operacin elegida ingresar
2 nmeros enteros, se realizar la misma y se mostrar por pantalla el resultado. El usuario
podr trabajar en el programa hasta que indique lo contrario. Recordar que la divisin por cero
es indeterminada.

47. La fecha de Pascua corresponde al primer domingo despus de la primera luna llena que
sigue al equinoccio de primavera, y se calcula con las siguientes expresiones:
A = ao mod 19
B = ao mod 4
C = ao mod 7
D = (19*A + 24) mod 30
E = (2*B + 4*C + 6*D + 5) mod 7
N = (22 + D + E)
En el que N indica el nmero del da de marzo (o Abril si N > 31) correspondiente al domingo de
Pascua. Realizar un programa que calcule esa fecha para los aos 2003 y 2004.

1.
/***********************************************************/
2.


3.

#include <stdio.h>
4.

#include <conio.h>
5.


6.

void main()
7.

{
8.

clrscr();
9.


10.

int cont=0;
11.

float num,media=0,resultado;
12.


13.

while(cont<5)
14.

{
15.

printf("\nN&#163;mero:");
16.

scanf("%f",&num);
17.


18.

cont = cont + 1;
19.

media = media + num;
20.

}
21.


22.

resultado = media / cont;
23.


24.

printf("\nLa media de los %d n&#163;meros es
%.2f",cont,resultado);
25.

getch();
26.

}
27.


28.
/***********************************************************/
29.


30.

void main()
31.

{
32.

clrscr();
33.


34.

int num,cuadrado;
35.


36.

printf("N&#163;mero:");
37.

scanf("%d",&num);
38.


39.

while(num<= 0)
40.

{
41.

printf("\nERROR.El n&#163;mero debe ser mayor que
cero\n\nN&#163;mero:");
42.

scanf("%d",&num);
43.

}
44.

cuadrado = num * num;
45.


46.

printf("El cuadrado de %d es %d",num,cuadrado);
47.

getch();
48.

}
49.


50.
/***********************************************************/
51.


52.

void main()
53.

{
54.

clrscr();
55.


56.

int num,mayor0=0,menor0=0,cont=0;
57.


58.

while(cont<10)
59.

{
60.

printf("\nN&#163;mero:");
61.

scanf("%d",&num);
62.


63.

if(num==0)
64.

{
65.

printf("\nERROR.Tiene que ser menor o mayor
que cero.\n");
66.

cont--;
67.

}
68.

if(num>0)
69.

mayor0 = mayor0 + 1;
70.

if(num<0)
71.

menor0 = menor0 + 1;
72.


73.

cont = cont + 1;
74.


75.

}
76.

printf("\nDe %d n&#163;meros ingresados...\n\n%d son
mayores a cero\n%d son menores a cero",cont,mayor0,menor0);
77.

getch();
78.

}
79.


80.
/***********************************************************/
81.


82.

void main()
83.

{
84.

float PI=3.1416,radio,sup,lon;
85.

clrscr();
86.


87.

printf("Ingrese radio:");
88.

scanf("%f",&radio);
89.


90.

lon= PI * ( radio * 2);
91.

sup = PI * radio * radio;
92.


93.

printf("\nEl perimetro del circulo es %.3f",lon);
94.

printf("\nEl area del circulo es %.3f",sup);
95.

getch();
96.

}
97.


98.
/***********************************************************/
99.


100.

void main()
101.

{
102.

clrscr();
103.

int base,altura,area,total;
104.


105.

printf("Base:");
106.

scanf("%d",&base);
107.

printf("Altura:");
108.

scanf("%d",&altura);
109.


110.

area = base * altura;
111.

area = area / 2;
112.


113.

printf("El area del triangulo es de %d",area);
114.

getch();
115.

}
116.


117.
/***********************************************************/
118.


119.

void main()
120.

{
121.

clrscr();
122.


123.

int num;
124.


125.

printf("N&#163;mero:");
126.

scanf("%d",&num);
127.


128.

if(num > 0)
129.

printf("El n&#163;mero %d es positivo",num);
130.

if(num < 0)
131.

printf("El n&#163;mero %d es negativo",num);
132.

if(num == 0)
133.

printf("El n&#163;mero que eligio es el %d",num);
134.

getch();
135.

}
136.


137.
/***********************************************************/
138.


139.

void main()
140.

{
141.

clrscr();
142.

int num;
143.


144.

printf("N&#163;mero:");
145.

scanf("%d",&num);
146.


147.

while(num==0)
148.

{
149.

printf("Si ingresa 0 no responde");
150.

printf("\nN&#163;mero:");
151.

scanf("%d",&num);
152.

}
153.

if(num%2==0)
154.

printf("%d es par",num);
155.

else
156.

printf("%d no es par",num);
157.


158.

getch();
159.

}
160.


161.
/***********************************************************/
162.


163.

void main()
164.

{
165.

clrscr();
166.


167.

float num,fahrenheit;
168.


169.

printf("N&#163;mero:");
170.

scanf("%f",&num);
171.


172.

fahrenheit = num * 2.12;
173.


174.

printf("%.3f grados Celsius equivale a %.3f grados
Fahrenheit",num,fahrenheit);
175.

getch();
176.

}
177.


178.
/***********************************************************/
179.


180.

void main()
181.

{
182.

clrscr();
183.


184.

float cms,pulgadas;
185.

int pies;
186.


187.

printf("Centimetros:");
188.

scanf("%f",&cms);
189.


190.

pies = 0.030003 * cms;
191.

pulgadas = 0.0336034 * cms;
192.


193.


194.

printf("\n%.2f cms equivale a %d pies",cms,pies);
195.

printf("\n%.2f cms equivale a %.1f
pulgadas",cms,pulgadas);
196.

printf("\n\n%.2f cms = %d pies = %.1f
pulgadas",cms,pies,pulgadas);
197.

getch();
198.

}
199.


200.
/***********************************************************/
201.


202.

void main()
203.

{
204.

clrscr();
205.

int a=0,e=0,i=0,o=0,u=0,cont=0;
206.

char caracter='x';
207.


208.

printf("\nIngrese una frase de 20 caracteres:\n\n ");
209.

while(cont<20)
210.

{
211.

scanf("%c",&caracter);
212.


213.

if(cont ==19)
214.

{
215.

printf("[--------------------]\n");
216.

printf("[ 20 caracteres ]");
217.

}
218.

if(caracter=='a')
219.

a = a + 1;
220.

if(caracter=='e')
221.

e = e + 1;
222.

if(caracter=='i')
223.

i = i + 1;
224.

if(caracter=='o')
225.

o = o + 1;
226.

if(caracter=='u')
227.

u = u + 1;
228.


229.

cont = cont + 1;
230.

}
231.

printf("\n\nEn la frase hay...\n");
232.

printf("a = %d e = %d i = %d o = %d u =
%d",a,e,i,o,u);
233.

getch();
234.

}
235.


236.
/***********************************************************/
237.


238.

void main()
239.

{
240.


241.


242.

int dia;
243.

char opcion='s',seguir='s';
244.


245.

do
246.

{
247.

clrscr();
248.

printf("\nDias de la
semana...\n\n1.Lunes\n2.Martes\n3.Miercoles\n4.Jueves\n5.Viernes\n6
.Sabado\n7.Domingo\n\n");
249.

opcion = getche();
250.


251.

if(opcion == '1')
252.

printf(".Lunes\n");
253.

if(opcion == '2')
254.

printf(".Martes\n");
255.

if(opcion == '3')
256.

printf(".Miercoles\n");
257.

if(opcion == '4')
258.

printf(".Jueves\n");
259.

if(opcion == '5')
260.

printf(".Viernes\n");
261.

if(opcion == '6')
262.

printf(".Sabado\n");
263.

if(opcion == '7')
264.

printf(".Domingo\n");
265.


266.

printf("\nDesea continuar s/n ?");
267.

seguir = getch();
268.


269.

while(seguir!='s'&&seguir!='n')
270.

{
271.

printf("\nDesea continuar s/n ?");
272.

seguir = getch();
273.

}
274.

}while(seguir=='s');
275.

}
276.


277.
/***********************************************************/
278.


279.

void main()
280.

{
281.

int impares,impar=0;
282.


283.

clrscr();
284.

for(impares=0;impares<100;impares++)
285.

{
286.

if(impares%2!=0)
287.

{
288.

printf("\n%d",impares);
289.

impar = impar + 1;
290.

}
291.

}
292.

printf("\n%d n&#163;meros impares desde el 1 al
100",impar);
293.

getch();
294.

}
295.


296.
/***********************************************************/
297.


298.

void main()
299.

{
300.

int pares,par=0;
301.


302.

clrscr();
303.

for(pares=0;pares<100;pares++)
304.

{
305.

if(pares%2==0)
306.

{
307.

printf("\n%d",pares);
308.

par = par + 1;
309.

}
310.

}
311.

printf("\n%d n&#163;meros pares desde el 1 al
100",par);
312.

getch();
313.

}
314.


315.
/***********************************************************/
316.


317.

void main()
318.

{
319.

int num;
320.


321.

clrscr();
322.

for(num=0;num<100;num++)
323.

printf("\n%d",num);
324.


325.

getch();
326.

}
327.


328.
/***********************************************************/
329.


330.

void main()
331.

{
332.

int num;
333.


334.

clrscr();
335.

for(num=100;num>0;num--)
336.

printf("\n%d",num);
337.


338.

getch();
339.

}
340.


341.
/***********************************************************/
342.


343.

void main()
344.

{
345.

int de3;
346.


347.

clrscr();
348.

for(de3=0;de3<100;de3++)
349.

{
350.

if(de3%3==0)
351.

printf("\n%d",de3);
352.

}
353.


354.

getch();
355.

}
356.


357.
/***********************************************************/
358.


359.

void main()
360.

{
361.

int de3;
362.


363.

clrscr();
364.

for(de3=0;de3<100;de3++)
365.

{
366.

if(de3%3==0 || de3%2==0)
367.

printf("\n%d",de3);
368.

}
369.


370.

getch();
371.

}
372.


373.


374.
/***********************************************************/
375.


376.

void main()
377.

{
378.

clrscr();
379.

int num,i,suma=0;
380.


381.

printf("N&#163;mero:");
382.

scanf("%d",&num);
383.


384.

for(i=0;i<num;i++)
385.

{
386.

suma = suma + i;
387.

//printf("%d",i);
388.

}
389.

printf("La suma de los n&#163;meros que anteceden al
%d es %d",num,suma);
390.

getch();
391.

}
392.


393.


394.
/***********************************************************/
395.


396.

void main()
397.

{
398.

clrscr();
399.

int num,i;
400.


401.

printf("N&#163;mero:");
402.

scanf("%d",&num);
403.


404.

for(i=1;i<num+1;i++)
405.

printf("\n%d",i);
406.


407.

getch();
408.

}
409.


410.


411.
/***********************************************************/
412.


413.

void main()
414.

{
415.

clrscr();
416.

int num,i;
417.


418.

printf("N&#163;mero:");
419.

scanf("%d",&num);
420.


421.

for(i=1;i<num+1;i++)
422.

{
423.

if(i%3==0)
424.

printf("\n%d",i);
425.

}
426.


427.

getch();
428.

}
429.


430.
/***********************************************************/
431.


432.

void main()
433.

{
434.

clrscr();
435.

int n,divisor;
436.


437.

for (n = 2;n <= 100; n++)
438.

{
439.

for(divisor = 2; n % divisor != 0 ;
divisor++) ;
440.

if (divisor == n)
441.

printf("El %d es n&#163;mero
primo\n",n);
442.

}
443.

getch();
444.

}
445.


446.


447.
/***********************************************************/
448.


449.

void main()
450.

{
451.

clrscr();
452.

int cont=0,num,suma=0,producto= 1;
453.


454.

while(cont<10)
455.

{
456.

printf("\nN&#163;mero:");
457.

scanf("%d",&num);
458.


459.

while(num == 0)
460.

{
461.

printf("\nEl cero
no!!!\n\nN&#163;mero:");
462.

scanf("%d",&num);
463.

}
464.


465.

if(num>0)
466.

suma = suma + num;
467.

if(num<0)
468.

{
469.

producto = producto * num;
470.


471.

}
472.

cont = cont + 1;
473.

}
474.

printf("\nLa suma de los n&#163;meros positivos es
%d",suma);
475.

printf("\nEl producuto de los n&#163;meros negativos
es %d",producto);
476.

getch();
477.

}
478.


479.


480.
/***********************************************************/
481.


482.

void main()
483.

{
484.

clrscr();
485.


486.

int numero1,numero2,a,b;
487.


488.

printf("N&#163;mero 1:");
489.

scanf("%d",&numero1);
490.

printf("N&#163;mero 2:");
491.

scanf("%d",&numero2);
492.


493.

a = numero1;
494.

b = numero2;
495.

numero1 = b;
496.

numero2 = a;
497.


498.

printf("\nEl n&#163;mero 1 es: %d\nEl n&#163;mero 2
es: %d",numero1,numero2);
499.

getch();
500.

}
501.


502.


503.
/***********************************************************/
504.


505.

void main()
506.

{
507.

clrscr();
508.

int i,cuadrado,cubo,numero;
509.


510.

printf("N&#163;mero:");
511.

scanf("%d",&numero);
512.

printf("\n\tN&#163;mero\t\tCuadrado\tCubo");
513.


514.

for(i=1;i<numero+1;i++)
515.

{
516.

cuadrado = i * i;
517.

cubo = i * i * i;
518.


519.

printf("\n\t%d\t\t%d\t\t%d",i,cuadrado,cubo);
520.

}
521.

getch();
522.

}
523.


524.


525.
/***********************************************************/
526.


527.

void main ()
528.

{
529.

int mas80=0,hasta80= 0,peso;
530.

char seguir='s';
531.


532.

clrscr();
533.


534.

while(seguir=='s')
535.

{
536.

printf("\n\nIngrese peso:");
537.

scanf("%d",&peso);
538.


539.

if(peso<=80)
540.

{
541.

hasta80+=1;
542.

}
543.

else
544.

{
545.

mas80+=1;
546.

}
547.


548.

printf("\n\nDesea continuar? s/n\n");
549.

seguir=getch();//getche es = a getch a
diferencia que getche muestra en pantalla la tecla presionada
550.


551.

while(seguir!= 's'&& seguir != 'n')
552.

{
553.

printf("\nERROR, reingrese ");
554.

printf("\nDesea continuar? s/n\n");
555.

seguir=getch();
556.

}
557.

}
558.

printf("\n\nPesan hasta 80Kg:%d y mas de
80Kg:%d",hasta80,mas80);
559.

gotoxy(80,25);
560.

printf("\n\nPresine cualquier tecla para
salir...");
561.

getch();
562.

}
563.


564.


565.
/***********************************************************/
566.


567.

void main()
568.

{
569.

int vendedor;
570.

float vendedor1=0,vendedor2=0,vendedor3=0;
571.

float importe, porcentaje=0;
572.

char seguir='s';
573.


574.

clrscr();
575.


576.

while(seguir=='s')
577.

{
578.

printf("\n\nIngrese N&#167; de vendedor:");
579.

printf("\n.1\n.2\n.3\n.0 Para salir\n\n.");
580.

scanf("%d",&vendedor);
581.


582.

if(vendedor == 1)
583.

{
584.

printf("\nIngrese importe:");
585.

scanf("%f",&importe);
586.

porcentaje = importe * 5 / 100;
587.

vendedor1 = vendedor1 + porcentaje;
588.

}
589.

if(vendedor == 2)
590.

{
591.

printf("\nIngrese importe:");
592.

scanf("%f",&importe);
593.

porcentaje = importe * 5 / 100;
594.

vendedor2 = vendedor2 + porcentaje;
595.

}
596.

if(vendedor == 3)
597.

{
598.

printf("\nIngrese importe:");
599.

scanf("%f",&importe);
600.

porcentaje = importe * 5 / 100;
601.

vendedor3 = vendedor3 + porcentaje;
602.

}
603.


604.

if(vendedor == 0)
605.

{
606.

printf("\nDesea continuar? s/n");
607.

seguir= getch();
608.

}
609.

while(seguir!='s' && seguir!='n')
610.

{
611.

printf("ERROR, reingrese.\nDesea
continuar? s/n");
612.

seguir=getch();
613.

}
614.

}
615.

printf("\n\nVENDEDOR 1:%.2f",vendedor1);
616.

printf("\nVENDEDOR 2:%.2f",vendedor2);
617.

printf("\nVENDEDOR 3:%.2f",vendedor3);
618.

printf("\n\nPresione cualquier teclar para
salir...");
619.

getch();
620.


621.

}
622.


623.


624.
/***********************************************************/
625.


626.

void main()
627.

{
628.

int lado1,lado2,lado3;
629.

int ladoa,ladob,ladoc;
630.

int a,b,c;
631.

clrscr();
632.

printf("Para formar un triangulo hay que tener en
cuenta que la suma de\nsus dos lados menores tiene que ser mayor
que el lado superior\n");
633.

printf("\nIngresar los lados para comprobar el
item:\n");
634.

printf("\n.a.");scanf("%d",&lado1);
635.

printf("\n.b.");scanf("%d",&lado2);
636.

printf("\n.c.");scanf("%d",&lado3);
637.


638.

ladoa = lado1 + lado2;
639.

ladob = lado1 + lado3;
640.

ladoc = lado2 + lado3;
641.


642.

if(ladoa > lado3)
643.

a = 1;
644.

if(ladob > lado2)
645.

b = 1;
646.

if(ladoc > lado1)
647.

c= 1;
648.

if(a!=1 || b!=1 || c!=1)
649.

{
650.

printf("\nNo es un triangulo, tiene que cumplir con
el item.");
651.

getch();
652.

return;
653.

}
654.

if(lado1 != lado2 && lado1 != lado3 && lado2 !=
lado3)
655.

{
656.

printf("\nEl triangulo es Escaleno");
657.

getch();
658.

return;
659.

}
660.

if(lado1 == lado2 && lado1 == lado3 && lado2 ==
lado3)
661.

{
662.

printf("\nEl triangulo es Equilatero");
663.

getch();
664.

return;
665.

}
666.


667.

printf("\nEl triangulo es Is&#162;sceles");
668.

getch();
669.


670.

}
671.


672.


673.
/***********************************************************/
674.


675.

void main ()
676.

{
677.

int num1,num2,num3,mayor,intermedio,menor;
678.


679.

clrscr();
680.


681.

printf("\nPrimer n&#163;mero:");scanf("%d",&num1);
682.

printf("Segundo n&#163;mero:");scanf("%d",&num2);
683.

printf("Tercer n&#163;mero:");scanf("%d",&num3);
684.


685.

if(num1 > num2 && num1 < num3 || num1 < num2 && num1
> num3)
686.

intermedio = num1;
687.

if(num2 > num1 && num2 < num3 || num2 < num1 && num2
> num3)
688.

intermedio = num2;
689.

if(num3 > num1 && num3 < num2 || num3 < num1 && num3
> num2)
690.

intermedio = num3;
691.


692.

printf("\nEl n&#163;mero %d es el intermedio de los 3
n&#163;meros ingresados",intermedio);
693.

getch();
694.


695.

}
696.


697.


698.
/***********************************************************/
699.


700.

void main ()
701.

{
702.

clrscr();
703.


704.

float valor_hora,total,descuento,c_descuento;
705.

char nombre [20];
706.

int antiguedad,hs_trabajadas;
707.


708.

printf("\nIngresar datos:\n");
709.

printf("\nNombre:");
710.

scanf("%s",&nombre);
711.

printf("Antiguedad:");
712.

scanf("%d",&antiguedad);
713.

printf("Cantidad de Horas trabajadas:");
714.

scanf("%d",&hs_trabajadas);
715.

printf("Valor de la hora:");
716.

scanf("%f",&valor_hora);
717.


718.

total = valor_hora * hs_trabajadas + antiguedad * 30;
719.

descuento = total * 0.13;
720.

c_descuento = total - descuento;
721.


722.

printf("\nNombre: %s",nombre);
723.

printf("\nAntiguedad: %d a&#164;os",antiguedad);
724.

printf("\nValor x hora: %.2f $",valor_hora);
725.

printf("\nTotal a cobrar: %.2f $ (valor hora * hs
trabajadas + antiguedad * 30)",total);
726.

printf("\nTotal del descuento: %.2f $",descuento);
727.

printf("\nTotal con descuento: %.2f $",c_descuento);
728.

getch();
729.

}
730.


731.


732.
/***********************************************************/
733.


734.

void main ()
735.

{
736.

clrscr();
737.


738.

int num,multi=0,i=0;
739.


740.

printf("Ingresar n&#163;mero:");
741.

scanf("%d",&num);
742.


743.

while(num <= 0 || num >= 10)
744.

{
745.

printf("ERROR, Reingresar n&#163;mero:");
746.

scanf("%d",&num);
747.

}
748.


749.

for(i=1; i<10;i++)
750.

{
751.

multi = num * i;
752.

printf("\n%d x %d = %d",num,i,multi);
753.


754.

}
755.

getch();
756.

}
757.


758.


759.
/***********************************************************/
760.


761.

void main ()
762.

{
763.

clrscr();
764.


765.

int num1,num2,n,mayor,menor,numhay=0,numpares=0;
766.


767.

printf("\nIngrese n&#163;mero:");
768.

scanf("%d",&num1);
769.

printf("Ingrese n&#163;mero:");
770.

scanf("%d",&num2);
771.


772.

if(num1<num2)
773.

{
774.

menor = num1;
775.

mayor = num2;
776.

}else{
777.

menor = num2;
778.

mayor = num1;
779.

}
780.


781.

for(n = menor + 1; n < mayor ; n++)
782.

{
783.

if(n % 2 == 0)
784.

{
785.

numpares = numpares + 1;
786.

}
787.

numhay = numhay + 1;
788.

printf("\n%d",n);
789.

}
790.

printf("\n\nHay %d n&#163;meros entre %d y
%d",numhay,num1,num2);
791.

printf("\n\nHay %d n&#163;meros pares entre %d y
%d",numpares,num1,num2);
792.

getch();
793.

}
794.


795.


796.
/***********************************************************/
797.


798.

void main ()
799.

{
800.

clrscr();
801.


802.

int numlegajo,sueldo,mas500=0, menos400=0;
803.

char sexo = '1',seguir = 's';
804.


805.

do
806.

{
807.

printf("\n\nIngresar n&#163;mero de
legajo:");
808.

scanf("%d",&numlegajo);
809.

printf("Ingresar sueldo:");
810.

scanf("%d",&sueldo);
811.

printf("Ingresar sexo:\n\nFemenino
(1)\nMasculino(2)\n");
812.

sexo = getche();
813.

if(sexo == '1')
814.

printf(" = Sexo femenino\n");
815.

else
816.

printf(" = Sexo masculino\n");
817.

while(sexo != '1' && sexo != '2')
818.

{
819.

printf(" No es la opci&#162;n
correcta\n\nReingrese sexo:\n\nFemenino (1)\nMasculino(2)\n");
820.

sexo = getche();
821.

}
822.


823.

if(sexo == '1'&& sueldo >= 500)
824.

mas500 = mas500 + 1;
825.

if(sexo == '2' && sueldo <= 400)
826.

menos400 = menos400 + 1;
827.


828.

printf("\nDesea continuar? s/n");
829.

seguir = getch();
830.


831.

while(seguir!= 's' && seguir != 'n')
832.

{
833.

printf("\nERROR.Reingrese respuesta.
s/n ?");
834.

seguir = getch();
835.

}
836.

}while(seguir == 's');
837.

printf("\n\nMujeres que ganan mas de 500$ :
%d",mas500);
838.

printf("\nHombres que ganan menos de 400$ :
%d",menos400);
839.

getch();
840.

}
841.


842.


843.
/*****************MAXIMOS Y
M&#205;NIMOS*****************************************/
844.


845.

#include <stdio.h>
846.

#include <conio.h>
847.

#include <string.h>
848.


849.

void main ()
850.

{
851.

clrscr();
852.


853.

float
aguacaida,promedio,cantidadagua=0,mayorlluvia,menorlluvia;
854.

char mayordia[10],menordia[10],dias[10];
855.

int cont=0,flag=0,dia;
856.


857.

printf("Ingrese cantidad de dias que desea
computar:");
858.

scanf("%d",&dia);
859.


860.

while(cont<dia)
861.

{
862.


863.

printf("Ingrese dia (dd/mm/aa):");
864.

scanf("%s",&dias);
865.

printf("Ingrese cant. de agua caida:");
866.

scanf("%f",&aguacaida);
867.


868.

if(flag==0)
869.

{
870.


871.

strcpy(mayordia,dias);
872.

strcpy(menordia,dias);
873.

mayorlluvia = aguacaida;
874.

menorlluvia = aguacaida;
875.


876.

flag=1;
877.

}
878.


879.

if(aguacaida>=mayorlluvia)
880.

{
881.

strcpy(mayordia,dias);
882.

mayorlluvia = aguacaida;
883.

}
884.


885.

if(aguacaida<=menorlluvia)
886.

{
887.

strcpy(menordia,dias);
888.

menorlluvia = aguacaida;
889.

}
890.


891.

cantidadagua+=aguacaida; //cantidadagua =
cantidadagua + aguacaida
892.


893.

cont+=1;
894.


895.

}
896.


897.

promedio=cantidadagua/cont;
898.


899.

printf("\nMayor lluvia %f el dia
%s",mayorlluvia,mayordia);
900.

printf("\nMenor lluvia %f el dia
%s",menorlluvia,menordia);
901.

printf("\nEl promedio de agua caida en %d dias fue
%f",cont,promedio);
902.

getch();
903.

}
904.


905.
/***********************************************************/
906.
/* Es medio engorroso pero el resultado da bien */
907.


908.

void main ()
909.

{
910.

clrscr();
911.


912.

int a,b,c,d,e,mayor,menor;
913.


914.

printf("\nIngrese 5 n&#163;meros:\n\n");
915.

scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);
916.


917.

if(a>b&&a>c&&a>d&&a>e)mayor = a;
918.

if(b>a&&b>c&&b>d&&b>e)mayor = b;
919.

if(c>a&&c>b&&c>d&&c>e)mayor = c;
920.

if(d>a&&d>b&&d>c&&d>e)mayor = d;
921.

if(e>a&&e>b&&e>c&&e>d)mayor = e;
922.


923.

if(a<b&&a<c&&a<d&&a<e)menor = a;
924.

if(b<a&&b<c&&b<d&&b<e)menor = b;
925.

if(c<a&&c<b&&c<d&&c<e)menor = c;
926.

if(d<a&&d<b&&d<c&&d<e)menor = d;
927.

if(e<a&&e<b&&e<c&&e<d)menor = e;
928.


929.

printf("\nEl mayor de los 5 n&#163;meros es el %d y
el menor es el %d",mayor,menor);
930.

getch();
931.

}
932.


933.


934.
/***********************************************************/
935.


936.

#include <stdio.h>
937.

#include <conio.h>
938.

#include <string.h>
939.


940.

void main()
941.

{
942.

float altura,mayoraltura=0;
943.

char nombre[20],mayornombre[20],seguir = 's';
944.

int flag=0;
945.


946.

clrscr();
947.


948.

do
949.

{
950.

printf("\nNombre:"),
951.

scanf("%s",&nombre);
952.

printf("Altura:");
953.

scanf("%f",&altura);
954.


955.

if(flag==0)
956.

{
957.

mayoraltura = altura;
958.

strcpy(mayornombre,nombre);
959.

flag=1;
960.

}
961.

if(altura>= mayoraltura)
962.

{
963.

mayoraltura = altura;
964.

strcpy(mayornombre,nombre);
965.


966.

}
967.


968.

printf("\nDesea continuar? s/n\n");
969.

seguir = getch();
970.


971.

while(seguir!= 's' && seguir!= 'n')
972.

{
973.

printf("\nERROR, reingrese respuesta s/n
?\n");
974.

seguir = getch();
975.

}
976.

}while(seguir == 's');
977.

printf("\nEl mas alto es %s mide
%.2f",mayornombre,mayoraltura);
978.

getch();
979.

}
980.


981.
/***********************************************************/
982.


983.

#include <stdio.h>
984.

#include <conio.h>
985.

#include <string.h>
986.


987.

void main()
988.

{
989.

int cont;
990.

char nombre[15],seguir='s';
991.

float nota,noti,promedio;
992.


993.

clrscr();
994.


995.

do
996.

{
997.

cont=0;
998.

noti=0;
999.

while(cont<6)
1000.

{
1001.

if(cont == 0)
1002.

{
1003.

printf("\nNombre:");
1004.

scanf("%s",&nombre);
1005.

}
1006.


1007.


1008.

printf("Nota:");
1009.

scanf("%f",&nota);
1010.


1011.

noti = noti + nota;
1012.

promedio = noti / 6;
1013.


1014.

cont = cont + 1;
1015.


1016.

if(cont == 6)
1017.

printf("El promedio de %s es
%.2f",nombre,promedio);
1018.

}
1019.


1020.

printf("\nDesea continuar? s/n\n");
1021.

seguir = getch();
1022.


1023.

while(seguir!= 's' && seguir!= 'n')
1024.

{
1025.

printf("\nERROR, reingrese respuesta s/n
?\n");
1026.

seguir = getch();
1027.

}
1028.

}while(seguir == 's');
1029.


1030.

}
1031.


1032.
/***********************************************************/
1033.


1034.

#include <stdio.h>
1035.

#include <conio.h>
1036.

#include <string.h>// para usar funci&#162;n strcpy
1037.


1038.

void main()
1039.

{
1040.

int flag=0;
1041.

float temp1,temp2,tempmax,tempmin;
1042.

char seguir='s',fecha[10],fechamax[10],fechamin[10];
1043.


1044.

do
1045.

{
1046.

clrscr();
1047.

printf("\nIngrese fecha:");
1048.

scanf("%s",&fecha);
1049.

printf("Ingrese temperatura maxima:");
1050.

scanf("%f",&temp1);
1051.

printf("Ingrese temperatura minima:");
1052.

scanf("%f",&temp2);
1053.


1054.

if(flag==0)
1055.

{
1056.

tempmax = temp1;
1057.

tempmin = temp2;
1058.


1059.

flag=1;
1060.

}
1061.


1062.

if(temp1>=tempmax)
1063.

{
1064.

strcpy(fechamax,fecha);
1065.

tempmax = temp1;
1066.

}
1067.


1068.

if(temp2<=tempmin)
1069.

{
1070.

strcpy(fechamin,fecha);
1071.

tempmin = temp2;
1072.

}
1073.


1074.

printf("Desea continuar s/n ?");
1075.

seguir = getch();
1076.


1077.

while(seguir!='s' && seguir !='n')
1078.

{
1079.

printf("Desea continuar s/n ?");
1080.

seguir = getch();
1081.


1082.

}
1083.


1084.

}while(seguir=='s');
1085.


1086.

printf("\nLa mayor temperatura %.3f fue el dia
%s",tempmax,fechamax);
1087.

printf("\nLa menor temperatura %.3f fue el dia
%s",tempmin,fechamin);
1088.

getch();
1089.

}
1090.


1091.
/***********************************************************/
1092.


1093.

#include <stdio.h>
1094.

#include <conio.h>
1095.

#include <string.h>
1096.


1097.

void main()
1098.

{
1099.


1100.

char nombre[20],mayornombre[20];
1101.

int cont=0,ptsg,ptsi,ptsc,ptsb,mayorpts;
1102.

int flag=0,acui=0,acuc=0,acub=0,acumen;
1103.

clrscr();
1104.

while(cont<3)
1105.

{
1106.


1107.

printf("\nIngrese nombre:");
1108.

scanf("%s",&nombre);
1109.

printf("Puntos por Cultura:");
1110.

scanf("%d",&ptsc);
1111.

printf("Puntos por inteligencia:");
1112.

scanf("%d",&ptsi);
1113.

printf("Puntos por belleza:");
1114.

scanf("%d",&ptsb);
1115.


1116.

ptsg = ptsi + ptsc + ptsb;
1117.


1118.

if(flag==0)
1119.

{
1120.

mayorpts = ptsg;
1121.

strcpy(mayornombre,nombre);
1122.


1123.

flag=1;
1124.

}
1125.


1126.

if(ptsg >= mayorpts)
1127.

{
1128.

mayorpts = ptsg;
1129.

strcpy(mayornombre,nombre);
1130.

}
1131.


1132.

acui+=ptsi;
1133.

acub+=ptsb;
1134.

acuc+=ptsc;
1135.


1136.

acumen = acui;
1137.


1138.


1139.

cont+=1;
1140.


1141.

}
1142.


1143.

printf("%s es la concursante de mayor puntaje con
%d",mayornombre,mayorpts);
1144.

printf("\n\nTotales\n");
1145.

if(acui<acumen)
1146.

printf("\nInteligencia:%d <--- Menor ",acui);
1147.

else
1148.

printf("\nInteligencia:%d",acui);
1149.

if(acuc<acumen)
1150.

printf("\nCultura:%d <--- Menor",acuc);
1151.

else
1152.

printf("\nCultura:%d",acuc);
1153.

if(acub<acumen)
1154.

printf("\nBelleza:%d <--- Menor",acub);
1155.

else
1156.

printf("\nBelleza:%d",acub);
1157.


1158.

getch();
1159.

}
1160.

/
1161.

***********************************************************/
1162.


1163.

#include <stdio.h>
1164.

#include <conio.h>
1165.

#include <string.h> // para la funci&#162;n strcpy
1166.


1167.

void main()
1168.

{
1169.


1170.

float
tarifa,hstrabajadas,total,mayorsalario,menorsalario;
1171.

float totalsalario=0,salariopromedio,mayor=0,menor=0;
1172.

char nombre[20],seguir =
'n',mayornombre[20],menornombre[20];
1173.

int trabajadores=0,flag=0;
1174.


1175.


1176.

do
1177.

{
1178.

clrscr();
1179.

printf("\nNombre:");
1180.

scanf("%s",&nombre);
1181.

printf("Tarifa horaria:");
1182.

scanf("%f",&tarifa);
1183.

printf("Horas de trabajo:");
1184.

scanf("%f",&hstrabajadas);
1185.


1186.

total = hstrabajadas * tarifa;
1187.


1188.


1189.

printf("\nEl Sr.%s cobra un salario semanal
de %.2f$\n",nombre,total);
1190.

getch();
1191.


1192.

trabajadores = trabajadores + 1;
1193.


1194.

if(flag==0)
1195.

{
1196.

menorsalario = mayorsalario = total;
1197.

strcpy(mayornombre,nombre);
1198.

strcpy(menornombre,nombre);
1199.


1200.

flag=1;
1201.

}
1202.


1203.

if(total == mayorsalario)
1204.

mayor = mayor + 1;
1205.

if(total == menorsalario)
1206.

menor = menor + 1;
1207.

if(total>mayorsalario)
1208.

{
1209.

mayorsalario = total;
1210.

strcpy(mayornombre,nombre);
1211.

}
1212.

if(total<menorsalario)
1213.

{
1214.

menorsalario = total;
1215.

strcpy(menornombre,nombre);
1216.

}
1217.


1218.

totalsalario = totalsalario + total;
1219.

salariopromedio = totalsalario /
trabajadores;
1220.

printf("\nDesea seguir ingresando datos?
s/n\n");
1221.

seguir = getch();
1222.


1223.

while(seguir!= 's' && seguir!= 'n')
1224.

{
1225.

printf("\nDesea seguir ingresando
datos? s/n");
1226.

seguir = getch();
1227.

}
1228.


1229.

}while(seguir == 's');
1230.

clrscr();
1231.

printf("\nSe calculo el salario a %d
trabajador/es ",trabajadores);
1232.

printf("\nEl empleado %s es el de mayor
salario cobra %.2f $",mayornombre,mayorsalario);
1233.

printf("\nEl empleado %s es el de menor
salario cobra %.2f $",menornombre,menorsalario);
1234.

printf("\nEl costo de salarios es de %.3f
$",totalsalario);
1235.

printf("\nEl salario promedio de la empresa es
%.2f $",salariopromedio);
1236.

getch();
1237.


1238.

}
1239.


1240.
/***********************************************************/
1241.


1242.

void main()
1243.

{
1244.

float socio,promedioedad=0,promedioedad2=0;
1245.

int edad,tenis=0,voley=0;
1246.

float promedio1=0,promedio2=0;
1247.

char nombre [20],seguir = 's',deporte =
's',apellido[20];
1248.


1249.

clrscr();
1250.


1251.

do
1252.

{
1253.


1254.

printf("\nN&#163;mero de socio:");
1255.

scanf("%f",&socio);
1256.

printf("Nombre:");
1257.

scanf("%s",&nombre);
1258.

printf("Apellido:");
1259.

scanf("%s",&apellido);
1260.

printf("Edad:");
1261.

scanf("%d",&edad);
1262.

printf("Deporte que
practica:\n\n1.Tenis\n2.Rugby\n3.Voley\n4.Hockey\n5.Futbol\n\n");
1263.

deporte = getche();
1264.


1265.

if(deporte != '1', deporte != '2',deporte !=
'3',deporte != '4',deporte != '5')
1266.

printf(".ERROR.Pulse n&#163;mero
correspondiente al deporte que practica");
1267.


1268.

if(deporte == '1')
1269.

{
1270.

printf(".Tenis");
1271.

tenis = tenis + 1;
1272.

promedio1 = promedio1 + edad;
1273.

promedioedad = promedio1 / tenis;
1274.

}
1275.

if(deporte == '3')
1276.

{
1277.

printf(".Voley");
1278.

voley = voley + 1;
1279.

promedio2 = promedio2 + edad;
1280.

promedioedad2 = promedio2 / voley;
1281.

}
1282.


1283.

if(deporte == '2')
1284.

printf(".Rugby ---> No update (No se
guardan los datos)");
1285.

if(deporte == '4')
1286.

printf(".Hockey ---> No update (No se
guardan los datos)");
1287.

if(deporte == '5')
1288.

printf(".Futbol ---> No update (No se
guardan los datos)");
1289.


1290.


1291.


1292.

printf("\n\nDesea seguir ingresando datos?
s/n\n");
1293.

seguir = getch();
1294.


1295.

while(seguir != 's' && seguir != 'n')
1296.

{
1297.

printf("\nERROR, reingrese respuesta
s/n ?\n");
1298.

seguir = getch();
1299.

}
1300.


1301.

}while(seguir =='s');
1302.

printf("\nTenis practican %d y el promedio de edad es
%.2f a&#164;os",tenis,promedioedad);
1303.

printf("\nVoley practican %d y el promedio de edad es
%.2f a&#164;os",voley,promedioedad2);
1304.

getch();
1305.

}
1306.


1307.


1308.
/***********************************************************/
1309.


1310.

void main()
1311.

{
1312.

int anio;
1313.


1314.

clrscr();
1315.


1316.

printf("Ingrese a&#164;o:");
1317.

scanf("%d",&anio);
1318.


1319.

if(anio % 4 == 0 && anio %100 != 0)
1320.

printf("El a&#164;o es bisiesto");
1321.

else
1322.

printf("El a&#164;o no es bisiestos");
1323.


1324.

getch();
1325.

}
1326.


1327.
/***********************************************************/
1328.


1329.

void main()
1330.

{
1331.

float legajo, promedio,cantidad;
1332.

int aprobo=0,desaprobo=0,total=0,marzo=0;
1333.

char nombre[20],seguir ='s';
1334.


1335.

clrscr();
1336.


1337.

do
1338.

{
1339.

printf("\nNombre:");
1340.

scanf("%s",&nombre);
1341.

printf("Legajo:");
1342.

scanf("%f",&legajo);
1343.

printf("Promedio:");
1344.

scanf("%f",&promedio);
1345.


1346.

total+=1;
1347.


1348.

if(promedio>=7)
1349.

aprobo+=1;
1350.


1351.

if(promedio>=4 && promedio<7)
1352.

desaprobo+=1;
1353.


1354.

if(promedio<4)
1355.

marzo+=1;
1356.


1357.

printf("\nDesea seguir ingresando datos?
s/n\n");
1358.

seguir = getch();
1359.


1360.

while(seguir!= 's' && seguir != 'n')
1361.

{
1362.

printf("\nERROR,reingrese respuesta
s/n ?");
1363.

seguir = getch();
1364.

}
1365.

}while(seguir == 's');
1366.

printf("\n\nDe %d alumnos ingresados...\nAprobaron
%d\nRinden en diciembre %d\nRinden en Marzo
%d",total,aprobo,desaprobo,marzo);
1367.

getch();
1368.

}
1369.


1370.
/***********************************************************/
1371.


1372.

void main()
1373.

{
1374.

int num1,num2;
1375.

char opcion='s',seguir='s';
1376.


1377.

do
1378.

{
1379.

clrscr();
1380.


1381.

cprintf("\nElija una opci&#162;n:\n");
1382.

printf("\n1.Suma\n2.Resta\n3.Producto\n4.Divi
si&#162;n\n");
1383.

opcion = getch();
1384.


1385.

printf("\n1&#167; N&#163;mero:");
1386.

scanf("%d",&num1);
1387.

printf("2&#167; N&#163;mero:");
1388.

scanf("%d",&num2);
1389.


1390.

if(opcion == '1')
1391.

printf("\n%d + %d =
%d",num1,num2,num1 + num2);
1392.

if(opcion == '2')
1393.

printf("\n%d - %d =
%d",num1,num2,num1 - num2);
1394.

if(opcion == '3')
1395.

printf("\n%d x %d =
%d",num1,num2,num1 * num2);
1396.

if(opcion == '4' && num2!= 0)
1397.

printf("\n%d / %d =
%d",num1,num2,num1 / num2);
1398.

if(opcion == '4' && num2 == 0)
1399.

printf("\nError.No se puede dividir
por cero");
1400.

if(opcion == '4' && num1 == 0)
1401.

printf(" ---> No tiene sentido,
siempre da 0");
1402.

printf("\n\n\rDesea seguir calculando? s/n");
1403.

seguir = getch();
1404.


1405.

while(seguir!= 'n' && seguir!= 's')
1406.

{
1407.

printf("\n\rDesea seguir calculando? s/n");
1408.

seguir = getch();
1409.

}
1410.

}while(seguir=='s');
1411.

}
1412.


1413.
/************************************************************
/
1414.


1415.

void main()
1416.

{
1417.


1418.

int anio,a,b,c,d,e,n;
1419.


1420.

clrscr();
1421.


1422.

printf("\nIng.A&#164;o:");
1423.

scanf("%d",&anio);
1424.


1425.

a= anio % 19;
1426.

b= anio % 4;
1427.

c= anio % 7;
1428.

d= (19*a + 24) % 30;
1429.

e= (2*b + 4*c + 6*d + 5) % 7;
1430.

n= (22 + d + e);
1431.


1432.

if(n<32)
1433.

printf("\nEn el a&#164;o %d pascua cayo el dia %d de
marzo",anio,n);
1434.

else
1435.

printf("\nEn el a&#164;o %d pascua cayo el dia %d de
abril",anio,n - 31);
1436.


1437.

getch();
1438.

}
1439.


1440.

S-ar putea să vă placă și