2. ARREGLOS UNIDIMENCIONALES
Es un tipo de dato estructurado que almacena en una sola
variable un conjunto limitado de datos o elementos del mismo
tipo. Así mismo corresponde a las localidades de memoria
contiguas donde la dirección más baja corresponde al primer
elemento y la dirección más alta al último.
• Un arreglo en lenguaje C inicia en la
posición cero, por lo tanto el i-ésimo
elemento está en la posición i-1, es
decir si el arreglo llamado a tiene n
elementos, sus nombres son
a[0], a[1],…a[n-1].
El tipo de datos almacenado en el
arreglo puede contener cualquier tipo
de dato.
3. ARREGLOS
UNIDIMENCIONALES
Un arreglo se caracteriza por:
1.
2.
3.
4.
Ser una lista de un número finito de n elementos del
mismo tipo.
Almacenar los elementos del arreglo en memoria
contigua.
Tener un único nombre de variable que representa
a todos los elementos y éstos se diferencian por un
índice o un subíndice
Acceder de manera directa o aleatoria a los
elementos individuales del arreglo, por el nombre
del arreglo y el índice o subíndice.
4. ARREGLOS
UNIDIMENCIONALES
Formato para declarar un formato unidimensional
Donde:
tipo_dato: se refiere al tipo de dato de cada
elemento del arreglo: puede ser entero, carácter,
real, etc.
identif_arreglo: es el nombre que representa a todo
el arreglo
tam_arreglo: la cantidad del elementos del arreglo
5. ARREGLOS
UNIDIMENCIONALES
Por ejemplo, para declarar un arreglo de
enteros llamado listanum con diez elementos se
hace de la siguiente forma:
int listanum[10];
En C, todos los arreglos usan cero como índice para
el primer elemento.
6. ARREGLOS
UNIDIMENCIONALES
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 */
13. ARREGLOS DE CARACTERES
Una cadena de texto es un conjunto de
caracteres. Recordemos que en C no existe el tipo
de dato cadena (string), por lo que se utiliza un
arreglo de caracteres, para poder almacenar una
cadena.
14. ARREGLOS DE CARACTERES
Cabe mencionar que un arreglo de caracteres va a
contener un carácter nulo al final (0). El compilador lo
va a aumentar automáticamente este carácter al final
de la cadena de modo que la secuencia quedaría así:
15. ARREGLOS DE CARACTERES
Si queremos almacenar una cadena de caracteres es el uso
de la palabra scanf pero si queremos almacenar una
cadena de con espacios en blanco podemos utilizar una
palabra que se llama gets y esta en la librería string.h. Esta
palabra solo se utiliza para leer cadena de caracteres y
scanf para cualquier tipo de variables.
16. 1. /*Este programa convierte una
l¡nea de texto de MAYUSCULAS
a MINUSCULAS
2. utilizando el ciclo DO-WHILE*/
3. #include <stdio.h>
4. #include <conio.h>
5. #include <string.h> /* gets*/
6. #include <ctype.h> /*tolower*/
7. main()
8. {
9. char cadena[100];
10. int TAM, car, i=0;
15. {
16. car=cadena[i];
17. if((car>=65)&&(car<=90))
18. {
19. cadena[i]=tolower(cadena[i]);
/* Convierte un carácter, en un
parámetro entero , a minúscula*/
20. }
21. i++;
22. }
23. while (i<=TAM-1);
24. printf("t %s",cadena);
11. printf("Escribe la linea de texto : 25. getch();
tnn");
26. }
12. gets(cadena);
13. TAM=strlen(cadena); /* strlen
calcula el no. de caracteres en
un cadena*/
14. do
17.
18. 1.
2.
/*Archivo:Leegets.c
Lectura de variables cadena */
6.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
7.
{
8.
char szNombre[10];
system ("cls");
printf ("n CUAL ES EL NOMBRE?-----> ");
gets (szNombre);
printf("n su nombre es -----> %sn", szNombre);
printf("n su inicial es -----> %cn", szNombre[0]);
printf("n la tercera letra de tu nombr es -----> %cn", szNombre[2]);
printf ("n");
3.
4.
5.
9.
10.
11.
12.
13.
14.
15.
system ("pause");
17. }
16.
19.
20. 1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
/* Ordenamiento de arreglo por
método de burbuja */
16.
#include <stdio.h>
17.
#include <stdlib.h>
18.
#define SIZE 10
19.
main( )
20.
{
21.
int a[SIZE]=
22.
{12,35,6,48,8,27,32,87,52,75};
int i, temporal, ciclo;
23.
printf("Los valores en el orden
original son: n");
24.
for (i=0; i< SIZE ; i++)
25.
printf("%d, ", a[i]);
/* Ordenamiento */
26.
for (ciclo=0; ciclo<SIZE; ciclo++) 27.
for (i=0; i<SIZE; 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; i++)
printf("%d, ", a[i]);
system ("pause");
}
21.
22. 1.
/* Ordenamiento de arreglo por método de
burbuja */
#include <stdio.h>
#include <stdlib.h>
main( )
{
int i, temporal, ciclo,n;
int a[n];
printf("de que tamaño es tu arreglo? n");
scanf ("%d",&n);
printf("Dame los datos de tu arreglo: n");
for (i=0; i< n ; i++)
{
printf("dato %d ---> ",i);
scanf ("%d",&a[i]);
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16. }
17. printf("Los elementos del arreglo son: n");
18.
for (i=0; i< n ; i++)
19.
printf("dato %d ---> %d n",i,a[i]);
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
/* Ordenamiento */
for (ciclo=0; ciclo<n; ciclo++)
for (i=0; i<n; 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< n; i++)
printf("dato %d---> %d n",i, a[i]);
34. system ("pause");
35. }
23. ARREGLOS
BIDIMENSIONALES
Un
arreglo puede tener más de una
dimensión, de tal manera que forme matrices
de dos, tres o aun más dimensiones.
Generalmente los arreglos no suelen
recomendarse para más de tres dimensiones,
ya que se vuelven muy difíciles de entender.
24. ARREGLOS
BIDIMENSIONALES
Conjunto de n elementos del mismo tipo
almacenados en memoria contigua en una matriz
o tabla. A diferencia de los arreglos
unidimencionales se requiere aquí de dos índices
declarados en dos pares de corchetes, donde el
primero se refiere al tamaño de las filas y el
segundo al tamaño de las columnas
25. ARREGLOS
BIDIMENSIONALES
Para declarar una tabla de 3 filas y columnas, se hará de la siguiente forma:
El No. D elementos será fila por columna por lo que quedarían así
31. /*ALMACENAR UNA MATRIZ DE n*n E IMPRIMIR LOS
ELEMENTOS Y SUMAR
LOS ELEMENTOS DE LA DIAGONAL PRINCIPAL*/
#include<stdio.h>
printf("nSuma de la diagonal principal es : %fn",
#include<stdlib.h>
suma);
main()
system ("pause");
{
}
float a[50][50],suma=0;
int i,j,n,m;
printf("n No. de filas= ");
scanf ("t %d",&n);
printf("n No. de columnas= ");
scanf ("t %d",&m);
for(i=0;i<n;i++)
{
printf("Lectura de la fila %d de la matriz A: n",i+1);
for(j=0;j<m;j++)
{
printf(" A (%d,%d)=", i+1,j+1);
scanf ("%f",&a[i][j]);
}
}
for(i=0; i<n; i++)
suma = suma+a[i][i];
32.
33. 1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
/*Diseñar un programa en C que lea una
matriz de 3*3. Sumar las columnas e
imprimir
que columna tuvo la máxima suma y la
suma de esa columna.*/
#include<stdio.h>
#include<stdlib.h>
main()
{
int
matriz[3][3],sumac,f,c,mayor=0,numc;
for(f=0;f<3;f++)
{
23.
24.
}
25.
for(c=0;c<3;c++)
{
sumac=0;
for(f=0;f<3;f++)
{
sumac+=matriz[f][c];
}
26.
27.
28.
29.
30.
31.
32.
33.
34.
for(c=0;c<3;c++)
35.
{
printf("Elemento[%d][%d]: ",f+1,c+1); 36.
37.
scanf("%d",&matriz[f][c]);
38.
}
39.
}
printf("n***DATOS DE LA MATRIZ
INTRODUCIDA***n");
for(f=0;f<3;f++)
{
for(c=0;c<3;c++)
{
printf(" %d ",matriz[f][c]);
}
printf("n");
40.
41.
printf("nSUMA
COLUMNA[%d]:%dn",c+1,sumac);
if(sumac>mayor)
{
mayor=sumac;
numc=c;
}
}
printf("nLa columna con mayor suma es:
%d y su valor es: %dn",numc+1,mayor);
system ("pause");
}