lunes, 24 de septiembre de 2007

Practica 10: Ejercicios con Arreglos unidimensionales.

Materia: Lógica Computacional.
Profesor: Lic. Salomón Aquino.

I. Objetivo. Al finalizar la práctica el estudiante será capaz de:
• Definir estructuras de datos y arreglos.
• Utilizar arreglos en una dimensión para resolver problemas.
II. Introducción Teórica.
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 números se denominan valores índice o subíndice 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 (también conocidos como arreglos o formaciones) como variables que contienen diferentes tipos de datos homogéneos. Se puede acceder a cada elemento de datos individual de la variable mediante un subíndice, o índice. En los lenguajes C y C++, un array no se corresponde con un tipo de dato estándar; 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, números 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 tamaño o longitud del array. Para indicar al compilador el tamaño o longitud del array se debe hacer seguir al nombre, el tamaño encerrado entre corchetes.
Los arrays tienen cuatro propiedades básicas:
• 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 subíndice (o índice) del primer elemento es cero.
• El nombre de un array es un valor constante que representa la dirección del primer elemento del array.
Para acceder a un elemento especifico del array, se utiliza el nombre de éste seguido por uno o más “índices” (donde cada uno representa una dimensión del arreglo o array) encerrado entre corchetes. Supongamos que tenemos un arreglo unidimensional llamado X con un tamaño 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 términos generales para definir un array se especifica el tipo de almacenamiento (atributo opcional), el tipo de datos, el identificador y entre corchetes el tamaño del arreglo. Abajo se muestra algunos ejemplos de definición 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 función de constantes
A veces es conveniente definir el tamaño de un array en términos 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 líneas de código) donde se halle un array de 20 items, y a lo largo del programa se hace referencia unas 12 veces al arreglo, y supongamos también que se necesita cambiar el tamaño del arreglo. Sin usar la constante se tendría que revisar todo el programa para localizar las líneas de código y efectuar el cambio al nuevo tamaño, en cambio con el uso de constantes sólo se le cambia el tamaño a la misma y el problema esta resuelto. La definición de un array a través de una constante se muestra en el siguiente ejemplo:
# include stdio.h>
# include stdlib.h>
/* Definición de la constante */
#define tamano 20
main()
{
/* Utilización de la constante para definir la dimensión 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 utilización de constantes definidas garantiza que las siguientes referencias al array no sobrepasen el tamaño definido para el mismo.
C no comprueba que los índices del array están dentro del rango definido.

Inicialización 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 continuación 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 explícitos, éstos son puestos a cero, a continuación tenemos un ejemplo:
int edades[8]={25,13,18};

El resultado de la asignación 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 método de inicializar arrays mediante valores constantes después de su definición, es adecuado cuando el número de elementos del arreglo es pequeño.
Una nota interesante en cuanto a la inicialización de arreglos, es que el tamaño no necesita ser indicado explícitamente. Con los arrays numéricos el tamaño será fijado igual al número de valores incluidos. En cuanto a las cadenas, el tamaño se fijará igual al número de caracteres del string o cadena mas uno (el carácter nulo “\0”).
C puede dejar los corchetes vacíos, sólo 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 automáticamente 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 números en un arreglo, calcule la suma, promedio, cuadrado , cubo y desviación estándar 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 desviación
estandar de una serie de números */
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 impresión de cuadrado, cubo y desviación 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 tamaño de los valores que se generan en los cálculos.

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? __________________________________________
_______________________________________________________________
Cuál 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? __________________________________________
_______________________________________________________________
Cuál es la salida? _______
¿En qué se diferencia del ejemplo anterior? ____________________________
_______________________________________________________________
Ejercicio 3
Elabore un programa que sume los primeros 25 números enteros guardados en un vector. Se desea imprimir la lista de números y al final la suma de los mismos.
Ejercicio 4
Generar e imprimir un vector de 10 números enteros y encontrar el mayor de ellos. Desplegar el resultado.
Ejercicio 5
Dadas dos listas A y B de igual número de elementos, se desea generar e imprimir una lista C conteniendo las sumas: A[i] + B[i] = C[i]

47 comentarios:

Anónimo dijo...

no sirve para nada solo observo programas mediocres.

Anónimo dijo...

tu hermana no sirve para nada!
estupido (a)

Anónimo dijo...

Información sencilla pero concreta... muy buena :)

Anónimo dijo...

Sencillo, pero Util y didactico

Anónimo dijo...

jajaj m salvaste

Luis dijo...

alguien me puede dar una mano?
me pidieron un programa en donde cargue las precipitaciones del año y muestra la menor, la mayor, la acumulada y el promedio, y mediante una funcion una opcion donde puede ingresar el numero de mes y me muestre la descripcion, por ejemplo: ingreso el 4 y el programa me muestre Abril. desde ya muchas gracias

victor_m dijo...

alguien me puede ayudar con este programa:

Una casa de cambio desea obtener estadisticas semanales (dia por dia) de la ventana de dolares, las estadisticas a obtener
son las siguientes:
dia ventas dolares
lunes xxxxxx xxxxxx
martes xxxxxx xxxxxx
miercoles xxxxxx xxxxxx
jueves xxxxxx xxxxxx
viernes xxxxxx xxxxxx
sabado xxxxxx xxxxxx
para esto se cuenta con los reportes de venta de la semana cada reporte tiene el mumero del dia en que se hizo la venta (1 a 6, 1=lunes)
y la cantidad de dolares vendidos.

nota: puede haber varias ventas de un mismo dia puede haber dias sin ventas, los reportes no estan organizados.

Anónimo dijo...

los ejercicios se me hacen bien para personas que van iniciando en la programacion... estan sencillos y fáciles de entender...

Anónimo dijo...

Muchas gracias, ejercicios muy ilustrativos para los que nos estamos iniciando en C++

Anónimo dijo...

TODOS LOS EJEMPLOS SACAN ERRORES, ALGUIEN ME PUEDE COLABORAR DICIENDOME COMO LOS CORRIJO

Henryk dijo...

Que pena por los comentarios de algunas personas sin sentido humano, así de felices han de ser cuando programan su vida...

"Si no sientes pasión por lo que haces deja de hacerlo, la vida no te lo perdonará." Henryk

Gracias, por los ejercicios.

D.r. Henryk

Beatriz dijo...

Alguien podría mostrar los 3 ejercicios resueltos? No logro realizarlos, me estoy iniciando en este tema.Muchas gracias

Anónimo dijo...

solo faltan las respuestas de los ultimos,.,.///
//*aios*//

elmer dijo...

necesito urgente 10 ejercicios de arreglos unidimensionales les agardeceria un monton si me lo mandan flad81@hotmail.com

Anónimo dijo...

ayudeme con los bidimencionales

Anónimo dijo...

me pueden ayudar a hacer mi programa que a traves de un arreglo unidimensional almacene el numero total de toneladas de cereales cosechados durante cada mes del año.proporcionando la sig.informacion
a)el promedio anual de toneladas cosechadas
b)cuantos meses tuvieron una cosecha superior al promedio anual
C)que mes tuvo la mayor cosecha

FABIAN dijo...

me pueden ayudar con los 3 ultimos ejercicios, la verdad q soy novato, y tengo como ejercicios en la escuela...

Anónimo dijo...

sera ke me pueden ayudar con el iguiente ejercicio:
reliazar un progrma ke al introducir el dia y mes de nacimiento de los 42 estudiantes del salon imprima el signo del zodiaco

Anónimo dijo...

necesito un programa kon arreglos k me ayude a realizar el juego del ahorcado k consiste en pediarle a l usuario k adivine las letras k deben de ir en una palabra introducida y despues muestre si tengo errores o si la palabra introducida es correcta xfovor lo necesiti lo mas rapido posible

Anónimo dijo...

Muy buenos ejemplos para principiantes, te felicito y lástima de comentarios que hacen algunos y no hacen nada para ayudar y colaborar, con los principiantes

Lili dijo...

Hola estoy en el primer año de informatica y todo esto de c++ es nuevo para mi y como estoy en curso por trabajadores no tengo mucho tiempo de aprender, pero con este sitio creo que voy a avanzar mucho esto es genial, aqui tengo un ejercicio para mi trabajo final de este curso y necesito ayuda, por favor ayudenme saludos lili
14. En una empresa es conocida por cada trabajador: el nombre, el salario base mensual, la evaluación de idoneidad (B, R, M) con carácter anual y las ausencias en todos los meses del año. Se sabe que si la evaluación es B y que no tiene ausencias por 9 o más meses del año y el porcentaje de ausencias en caso de que ellos tenían no supera el 10% del mes, que cobra 30% de el salario básico por concepto de estimulación. Hacer una aplicación que permite determinar:
a) ¿Cuánto de la compañía debe pagar por concepto de estimulación
b) De los trabajadores evaluados de M que de menor salario.
c) El mes con mayor cantidad de ausencias.
d) Para obtener un listado con los trabajadores que deben cobrar la estimulación y la cantidad que debe recibir el pago por este concepto, ordenada de mayor a menor.
e) Los trabajadores que no fueron estimulados para que usted / ellos no completan los requisitos de asistencia.
f) ¿Qué porcentaje se evaluaron los trabajadores de B representan?

joc dijo...

NECESITO AYUDA PARA PODER PROGRAMAS:
5. En un arreglo unidimensional de tipo real se tienen almacenadas las toneladas mensuales de cereales cosechadas durante 2 años (2009 y 2010). Escriba un programa que calcule e imprima lo siguiente: El promedio anual de toneladas cosechadas en el año 2009. ¿Cuántos meses tuvieron una cosecha inferior al promedio anual del 2009? En qué meses de ambos años se produjo un menor numero de toneladas que el promedio de los 24 meses juntos.

Anónimo dijo...

ALGUIEN ME PUEDE AYUDAR...tengo un problema en C
realizar la programacion necesaria que me permita ingresar el tamaño de 2 vectores numericos.luego a traves de un menu poder cargar los mismos, mostrar los numeros que superen el promedio, mostrar los vectores en forma inversa y por ultimo unir los 2 vectores en 1 solo.

Anónimo dijo...

1. Desarrolle un programa en C++, aplicando el concepto de arreglos en una dimensión:
La agencia de seguros Atlas desea obtener un reporte al final del día de sus 5 empleados para determinar cuál fue el empleado que obtuvo el mayor sueldo en base a sus ventas y comisiones, se registrará el nombre del empleado la edad y el sueldo que obtuvo al final del día. Desarrollar un programa en C++ que pida al usuario el nombre de los empleados, su edad y el sueldo para generar un reporte que lo muestre en pantalla de la siguiente manera: el nombre del empleado, edad, sueldo, el empleado con mayor sueldo, el sueldo del empleado que gana más y su edad.
2. Desarrolle un programa en C++, aplicando el concepto de arreglos multidimensionales:
El maestro de la clase de Matemáticas quiere obtener un reporte de sus alumnos del examen que les aplico de matemáticas, el maestro acomodó a sus alumnos en cinco 5 hileras y cada hilera con 5 asientos, el reporte que el maestro desea obtener es el promedio de los alumnos colocados por hilera y la calificación más alta y más baja. Desarrollar un programa en C++ que pida al usuario las calificaciones de los alumnos. Después el programa debe dar la opción de calcular el promedio de las calificaciones de los alumnos por hilera, obtener la calificación más alta y más baja de curso. Mostrar en pantalla el arreglo de los alumnos con sus calificaciones, el promedio de calificaciones por hilera y la calificación más alta y más baja

Anónimo dijo...

super, gran trabajo sigue asi,
:)

Anónimo dijo...

no seirve pa niuna wea

Anónimo dijo...

esta wea se la come igual q juan chamullo .....aguante 2 b

Anónimo dijo...

el gonzalo se la come

Anónimo dijo...

no pesques a los ultimos 2 comentarios andan puto weando buen post

Anónimo dijo...

al fabian le gustaaa el picoooooooooo

Anónimo dijo...

y al pablo por el ojeteeeeeeee

Anónimo dijo...

aprende a escribir feo de mierda

Anónimo dijo...

vooo po el cara perfecta la teni toda ingertada feo de mierdaa

Anónimo dijo...

gonzal oxupa welpenee del pabloo !!

Anónimo dijo...

tu mama culiao

Anónimo dijo...

pixuleishon pal barney

Anónimo dijo...

el gonzalo y el safada se la comen atraveza 8================D

Anónimo dijo...

preguntale atu mama como me la come

Anónimo dijo...

pablo gay

Anónimo dijo...

deformeitor gay

Anónimo dijo...

por favor ayúdenme urgente me pueden ayudar a hacer un programa que a traves de un arreglo unidimensional almacene el numero total de toneladas de cereales cosechados durante cada mes del año.proporcionando la sig.informacion
a)el promedio anual de toneladas cosechadas
b)cuantos meses tuvieron una cosecha superior al promedio anual
C)que mes tuvo la mayor cosecha. urgente por fa para este martes 07 de agosto

Anónimo dijo...

por favor ayúdenme urgente me pueden ayudar a hacer un programa que a traves de un arreglo unidimensional almacene el numero total de toneladas de cereales cosechados durante cada mes del año.proporcionando la sig.informacion
a)el promedio anual de toneladas cosechadas
b)cuantos meses tuvieron una cosecha superior al promedio anual
C)que mes tuvo la mayor cosecha. urgente por fa para este martes 07 de agosto. este es mi correo edduartelodigo@hotmail.com

Anónimo dijo...

esa mierda si es fiera ninguno sirve para nada y los que los resuelve menos qqqqquuuuuuuueeeeeee horror cuerda de relambe guevos maricos

Anónimo dijo...

This is really attention-grabbing, You are an excessively skilled
blogger. I have joined your feed and look forward to in search of more of your wonderful post.
Also, I have shared your website in my social networks
Also visit my webpage ... clearskinmaxreviews.co.uk

Anónimo dijo...

necesito realizar un programa unidimensional y cuente los elementos positivos, negativos y ceros que se encuentran en este

Anónimo dijo...

necesito realizar un programa que sume todos los elementos de un arreglo unidimensional e imprima su resultado

Anónimo dijo...

hola buen dia soy nuevo en esto y me dejaron hacer una practica de vector bidimensional el cual no estoy muy familiarizado con esto, prefiero el unidimensional alguien me podria ayudar..
este es el problema
Capturar un vector de nombres de 5 fábricas de ropa y una matriz de 5 x 3 , donde se representa la producción trimestral de esas 5 fábricas.
Obtener un vector donde se indique cual es el total de producción por trimestre para cada fábrica (despliegue vector de nombres de fábricas y de total de producción por fábrica).