domingo, 14 de junio de 2015


ARREGLOS

Un arreglo en C++ es un conjunto de datos que se alamacenan en memoria de manera contigua con el mismo nombre. Para difenciar los elementos de un arreglo se utilizan índices detrás del nombre del arreglo y encerrados por []. El elemento 5° (quinto) de un arreglo, es representado por el índice [4], ya que los índices comienzan en 0. Esto significa que un arreglo de 10 elementos tendría los índices del 0 al 9: [0...9].

Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un índice. 

El formato para declarar un arreglo unidimensional es: 
tipo nombre_arr [ tamaño ]

Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez elementos se hace de la siguiente forma: 
int listanum[10]; 
 
La forma como pueden ser accesados los elementos de un arreglo, es de la siguiente forma: 
listanum[2] = 15; /* Asigna 15 al 3er elemento del arreglo listanum*/ num = listanum[2]; /* Asigna el contenido del 3er elemento a la variable num */ El lenguaje C no realiza comprobación de contornos en los arreglos. En el caso de que sobrepase el final durante una operación de asignación, entonces se asignarán valores a otra variable o a un trozo del código, esto es, si se dimensiona un arreglo de tamaño N, se puede referenciar el arreglo por encima de N sin provocar ningún mensaje de error en tiempo de compilación o ejecución, incluso aunque probablemente se provoque el fallo del programa. Como programador se es responsable de asegurar que todos los arreglos sean lo suficientemente grandes para guardar lo que pondrá en ellos el programa.
C permite arreglos con más de una dimensión , el formato general es: 
tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN];
Observar que para declarar cada dimensión lleva sus propios paréntesis cuadrados. 
Para acceder los elementos se procede de forma similar al ejemplo del arreglo unidimensional, esto es, 
tabladenums[2][3] = 15; /* Asigna 15 al elemento de la 3ª fila y la 4ª columna*/
num = tabladenums[25][16];
A continuación se muestra un ejemplo que asigna al primer elemento de un arreglo bidimensional cero, al siguiente 1, y así sucesivamente.

EJEMPLO 01

#include <stdio.h>
main()
{
    int t,i,num[3][4];

    for(t=0; t<3; ++t)
        for(i=0; i<4; ++i)
            num[t][i]=(t*4)+i*1;

    for(t=0; t<3; ++t)
    {
        for(i=0; i<4; ++i)
            printf("num[%d][%d]=%d  ", t,i,num[t][i]);
        printf("\n");
    }

}


EJEMPLO 02

#include <stdio.h>
#include <conio.h>
main()
{
int asiento[40]={0};
int x, y;
printf("Los estados de los asientos son: LIBRE=0, VENDIDO=1.n" );
do
{
printf("nCual asiento quieres comprar?: " );
scanf("%d",&y);
if(y==0)break;
else if(y<=0 || y>=41)
printf("nAsiento fuera del rango del autobus." );
else if(asiento[y-1]==1)
printf("nAsiento ya vendido" );
else
{
asiento[y-1]=1;
{
for(x=0; x<40; x++)
{
if(!(x%4))
printf("ntAsiento %d= %d",x+1,asiento[x] );
else printf("tAsiento %d= %d",x+1,asiento[x] );
}
}
}
}
while(1);
if(asiento[40]==1)
printf(" Todos los asientos se han vendido." );
else printf("nGracias por usar este programa." );
getch();
return 0;


NOTA: Del ejemplo anterior ordenar el arreglo para que sea similar a un autobus, desarrolle nuevas ideas para que se mas facil de usar, ejemplo: numerar los puestos y colar X cuando este ocupado.

Este ejercicio tiene un valor de 5pts en la evaluacion posterior a la feria 2013. Es de manera individual y cada uno debe tener diferentes ideas variables etc.

EJEMPLO 3 

#include <stdio.h>
#include <conio.h>
main()
{
int numeros[100];
int x, y, z;
int kano;
printf(" Numeros a ordenar?: " );
scanf("%d", &x);
for(y=0; y<=x-1; y++)
{
printf(" Introduce el numero %d: ", y);
scanf("%d", &numeros[y] );
printf("n" );
}
for(y=0; y<(x-1); y++)
{
for(z=y+1; z<x; z++)
{
if(numeros[z]<numeros[y])
{
kano=numeros[z];
numeros[z]=numeros[y];
numeros[y]=kano;
}
}
}
printf(" El numerico en forma ascendente es: n" );
for(y=0; y<=x-1; y++)
{
printf(" %d ", numeros[y]);
}
printf("nn" );
printf("*-JUAN PABLO ORTEGA*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*" );
getch();
return 0;

 
EJEMPLO 4

PROMEDIO DE NOTAS DE ALUMNOS CON ARREGLO
#include <stdio.h>
#include <stdlib.h>

int main()
{
system ("color 79");
int m,cont=0,notas,cont2,temp;


printf("cuantos alumnos: ");
scanf("%d",&m);
printf ("_____________________________________|\n");
printf("\n");
int promedio[m],nota[m];
for (cont=0;cont<m;cont++)
{
nota[cont]=0;
printf("Alumno %d ",cont+1);
printf("Cuantas notas: ");
scanf("%d",&notas);

for (cont2=0;cont2<notas;cont2++){
printf("Ingrese nota %d del alumno %d: ",cont2+1,cont+1);
scanf("%d",&temp);
nota[cont]=nota[cont]+temp;}
promedio[cont]=nota[cont]/notas;

}
for (cont=0;cont<m;cont++)
{
printf("Promedio del alumno %d: %d\n",cont+1,promedio[cont]);
}

system("PAUSE");
return (0);
}

VOID
VOID que significa vacio en ingles se usa principalmente para declarar acciones, ya que cuando declaras una funcion la declaras como entero(int), caracter(char o chr) booleana(bool), como una accion no requiere na respuesta entonces tiene que estar vacia la respuesta. 
con VOID se deven declarar unicamente acciones, NO funciones!! eso esta mal si declaran un funcion con VOID esta mal y si declaras una accion con otro valor tambien, una accion NO tiene que regresar algo.


EJEMPLO 5

#include <conio.h>
#include <stdio.h>

 #define N_FILAS 25
#define N_COLUMNAS 4
#define LIBRE 0
#define OCUPADO 1


/* Función que muestra el menú del programa y retorna
el número de menú elegido por el usuario */

int mostrarMenu();

void reservarAsiento(int a[][N_COLUMNAS]);
void cancelarAsiento(int a[][N_COLUMNAS]);
void mostrarOcupacion(int a[][N_COLUMNAS]);

 int main(){

    /* Los asientos inicialmente están libres*/

    int asiento[N_FILAS][N_COLUMNAS]={0};

    int resp=mostrarMenu();

    while(resp!=4){

        switch(resp){

            case 1:

                reservarAsiento(asiento);
                break;

            case 2:

                cancelarAsiento(asiento);
                break;

            case 3:

                mostrarOcupacion(asiento);
                break;

        }
        resp=mostrarMenu();

    }
    getch();

}
    int mostrarMenu(){

    int resp;
    printf("\n\n");
    printf("1) Reservar Asiento\n");
    printf("2) Cancelar Asiento\n");
    printf("3) Mostrar Ocupacion\n");
    printf("4) Salir\n");
    scanf("%d",&resp);
    return resp;

}

void reservarAsiento(int a[][N_COLUMNAS]){

    int fila, col;

    printf("Escriba la fila del asiento a reservar: ");scanf("%d",&fila);
    printf("Escriba la columna del asiento a reservar: ");scanf("%d",&col);


    if(a[fila][col]==OCUPADO) printf("Ese asiento ya está reservado\n");
    else {

        a[fila][col]=OCUPADO;
        printf("Reserva realizada\n");

    }

}



void cancelarAsiento(int a[][N_COLUMNAS]){

    int fila, col;

   

    printf("Escriba la fila del asiento a cancelar: ");scanf("%d",&fila);
    printf("Escriba la columna del asiento a cancelar: ");scanf("%d",&col);


    if(a[fila][col]==LIBRE) printf("Ese asiento no está ocupado\n");
    else {

        a[fila][col]=LIBRE;
        printf("Cancelación realizada\n");

    }

}



void mostrarOcupacion(int a[][N_COLUMNAS]){

    int i,j;

    for(i=0;i<N_FILAS;i++){

        for(j=0;j<N_COLUMNAS;j++){

            printf("fila %d, columna %d ",i,j);
            if(a[i][j]==LIBRE) printf("Libre\n");
            else printf("Ocupado\n");

        }

    }



EJEMPLO 6

#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);
}

No hay comentarios:

Publicar un comentario