Está en la página 1de 6

Universidad Simón Bolívar

Dpto. de Computación y Tecnología de la Información

CI-2125, Computación I
Práctica 5
ARREGLOS

1. Escriba un programa que inicializa un arreglo de enteros con diez valores y lo


imprime en formato de tabla.

SOLUCIÓN:
//Inicialización de un arreglo
#include <iostream.h>
#include <iomanip.h>

int main()
{
int i, n[ 10 ];

for ( i = 0; i < 10; i++ ) //Inicializa el arreglo


n[ i ] = i+1;

printf("Elemento \t Valor \n" );


for ( i = 0; i < 10; i++ ) //imprime el arreglo

printf("%5d \t\t %3d \n", i, n[i]);

return 0;
}

2. Escriba un programa que calcule y almacene el cuadrado de los primeros 100


números positivos.

SOLUCIÓN:

#include <stdio.h>

int main ( )
{
int cuadrado[101];
int i; /* indice del for */

for ( i=1; i<=100; i++){


cuadrado[i] = i*i;
}
for ( i=1; i<=100; i++)
printf(" El cuadrado de %d es %d \n",i, cuadrado[i]);

-1-
CI-2125, Computación I Práctica 5
}

3. Escriba un programa que dada una cadena de caracteres fija, imprima la cadena
completa, imprima el tercer carácter de la cadena y la subcadena a partir del cuarto
carácter.

SOLUCIÓN:
#include <stdio.h>

void main() {

char cadena[7]; /* Define una cadena de caracteres */

cadena[0]='L';
cadena[1]='e';
cadena[2]='t';
cadena[3]='r';
cadena[4]='a';
cadena[5]='s';
cadena[6]= '\0'; /* Caracter nulo, significa el fin del texto */

printf("La cadena es: %s\n", cadena);


printf("El tercer caracter de la cadena es: %c\n", cadena[2]);
printf("La subcadena es a partir del cuarto carácter es: %s\n",
&cadena[3]);
}

4. Escriba un programa que llene una matriz de 3 X 3 de valores reales, luego


 Calcule la suma de cada fila y la almacena en un vector
 Calcule la suma de cada columna y la almacena en otro vector.

#include <stdio.h>
#define N 3

void main ( )
{
float matriz[N][N]; // Entrada
float sum_fila[N], sum_colum[N]; // Salidas
int i,j;

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


sum_fila[i]= 0.0;
sum_colum[i]= 0.0;
}
/* Lee los datos para la matriz */
printf("Introduzca los %d elementos de la matriz por fila\n", N*N);
for ( i=0; i<N; i++)

-2-
CI-2125, Computación I Práctica 5
for (j=0; j<N; j++)
scanf("%f", &matriz[i][j]);

/* Suma las filas */


for ( i=0; i<N; i++)
for (j=0; j<N; j++)
sum_fila[i] = sum_fila[i]+matriz[i][j] ;

/* Suma las columnas */


for ( j=0; j<N; j++)
for (i=0; i<N; i++)
sum_colum[j] = sum_colum[j] + matriz[i][j] ;

/* Imprime las sumas de cada fila y de cada columna */


for (i=0; i<N; i++)
printf("La suma de la fila %d es: %5.2f y la suma de la columna
%d es: %5.2f \n", i,sum_fila[i],i, sum_colum[i]);
}

5. Revise el siguiente programa y explique cuál es el resultado.

#include <stdio.h>
#define FILAS 3
#define COLUMNAS 4
void main ( )
{
int i,j,;
int M[FILAS][COLUMNAS];
/* lectura por filas */
for ( i=0; i<FILAS; i++)
for ( j=0; j< COLUMNAS; j++)
scanf(“%d”, &M[i][j]);
/* escribe por columnas */
for ( j=0; j<COLUMNAS; j++)
{
for ( i=0; i< FILAS; i++)
printf(“%5d”,M[i][j]);
printf(“\n”);
}
}

SOLUCIÓN: El programa lee por fila una matriz de 3 por 4, tres filas y cuatro columnas, y la
escribe por columnas.

6. Corra el siguiente programa y explique lo que sucede

#include <stdio.h>

-3-
CI-2125, Computación I Práctica 5
int main()
{
int c;
char nombre[4][7]={'F','u','l','a','n','o','\0',
'J','u','a','n','\0',' ',' ',
'P','e','d','r','o','\0',' ',
'E','l','i','s','a','\0',' '};
/* Caracter nulo, significa el fin del texto */

printf ("Esto es un mensaje personalizado. \n\n");


for (c = 0; c < 4; c++){
printf("Hola %s \n\n",nombre[c]);
}
return 0;
}

SOLUCIÓN:
Saluda a cada uno de los nombres. El programa escribe:

Hola Fulano salta dos líneas, escribe


Hola Juan salta 2 líneas, escribe
Hola Pedro salta 2 líneas, escribe
Hola Elisa y salta 2 líneas.

7. El siguiente programa ordena los valores dados de un arreglo de diez elementos en


orden ascendente.
Analice el programa e indique¿ cuál será la salida del programa?
// Este programa ordena los valores de un arreglo
// en orden ascendente

#include<stdio.h>
int main()
{
const int dimensionArreglo = 10;
int a[ dimensionArreglo ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };
int i, temp;
printf("\nDatos en orden original\n");
for ( i = 0; i < dimensionArreglo; i++ )
printf("%4d",a[ i ]);
for ( int pass = 0; pass < dimensionArreglo - 1; pass++ ) //pases
for ( i = 0; i < dimensionArreglo - 1; i++ ) // un pase
if ( a[ i ] > a[ i + 1]) { // una comparación
temp = a [ i ]; // un intercambio

-4-
CI-2125, Computación I Práctica 5
a[ i ] = a[ i + 1 ];
a[ i + 1 ] = temp;
}
printf("\nDatos en orden ascendente\n");
for ( i = 0; i < dimensionArreglo; i++ )
printf("%4d",a[ i ]);
printf("\n");
return 0;
}
SOLUCIÓN:
La técnica utilizada es similar al ordenamiento de burbuja u ordenamiento por hundimiento,
pues los valores más pequeños gradualmente “burbujean” hacia la parte más alta del arreglo
como las burbujas de aire ascienden en el agua, mientras que los valores más grandes se
hunden al fondo del arreglo.
La técnica consiste en pasar varias veces por el arreglo.
 Con cada paso, se comparan pares sucesivos de elementos.
 Si uno de los pares está en orden ascendente ( o son idénticos los valores) se queda tal
cual.
 Si está en orden descendente se intercambian sus valores en el arreglo.

La salida es: 2 4 6 8 10 12 37 45 68 89

-5-
CI-2125, Computación I Práctica 5

-6-

También podría gustarte