CI2125   TEORIA                                              semana 6
This presentation is the property of its rightful owner.
Sponsored Links
1 / 19

Tipo de dato Arreglo en C Uso del for con arreglos Arreglos de caracteres PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on
  • Presentation posted in: General

CI2125 TEORIA semana 6. Tipo de dato Arreglo en C Uso del for con arreglos Arreglos de caracteres Uso del %s en printf y scanf

Download Presentation

Tipo de dato Arreglo en C Uso del for con arreglos Arreglos de caracteres

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

CI2125 TEORIA semana 6

  • Tipo de dato Arreglo en C

  • Uso del for con arreglos

  • Arreglos de caracteres

  • Uso del %s en printf y scanf

  • No incluye algoritmos de Búsqueda nio de Ordenamiento, revisar la bibliografía los diferentes tipos: Intercambio, Selección e Inserción. (ver Pracitca5_sem6)


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

VECTORES Y MATRICES

Arreglos unidimensionales y multidimensionales en C

Un tipo de dato en C

  • Colección de variables del mismo tipo que se referencian utilizando un nombre común.

  • Un arreglo consta de posiciones de memoria contigua.

  • La dirección más baja corresponde al primer elemento y la más alta al último.

  • Un arreglo puede tener una o varias dimensiones.

  • Para acceder a un elemento en particular de un arreglo se usa un índice.


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

Memoria:

índice

x

x(0)

3

2

x(1)

4

x(2)

VECTORES

Arreglos unidimensionales en C

Ejemplo: Vector

Vector x = (3,2,4)

Declarar un arreglo unidimensional en C:

tipo nombre-arreglo[dimension];

“En C todos los arreglos usan cero como índice para el primer elemento”

“el elemento i-esimo esta en la posición i-1”

int x[3];

x[0] = 3;

x[1] = 2;

x[2] = 4;

printf(“El segundo elemento del vector x es %d “,x[1]);


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

VECTORES

Arreglos unidimensionales en C

Ejemplo, declarar un arreglo de enteros llamado listanum con diez elementos

#define N 10

int listanum[N]; /* arreglo de enteros con diez elementos

desde listanum[0] hasta listanum[9]. */

Usamos la estructura ‘for’ para acceder los elementos del arreglo

int i, k=1;

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

{ listanum[ i ] = k; k++; }

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

printf(“ elemento %d del arreglo vale %d \n”, i+1, listanum[ i ]);


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

VECTORES

Arreglos unidimensionales en C

La inicialización de un arreglo puede realizarse a través de una lista, si la lista es mas corta que el número de elementos en el arreglo, el resto se inicializa a cero.

float a[5] = {0.1, 1.2, 2.3, 3.4, 4.5 };

double b[100] = { 1.0 }; /* los 99 elementos restantes serán 0.0 */

int a[] = { 2, 3, -5, 7 }; /* equivale a a[4] = { 2, 3, -5, 7 } */

#include <stdio.h>

main()

{

int x;

int vec[10]={9,3,4,8,1,6,2,0,7,5};

for( x=0; x<10; x++)

{

if ( vec[x] == 5)

printf(“encontre un cinco\n”);

else printf(“ vec[ %d ] vale: %d \n”, x, vec[x] );

}

}

EJEMPLO


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

VECTORES

Arreglos unidimensionales en C

Problema: Escriba un programa que lea un vector de longitud máxima MAX, y determine si el vector es simétrico.

Un vector de n datos es simétrico si el contenido de la posición i_ésima coincide con el que ocupa la posición n-i_ésima, ej: v=(2,4,7,8,7,4,2) es simétrico.

#include <stdio.h>

#define MAX 7

main()

{

/* declaración de variables */

int i;

int vec[MAX];

/* lectura de elementos del vector */

for( i=0; i<MAX; i++)

{

printf(“Dame dato del vector que ocupa posicion i = %d\n”, i+1);

scanf(“ %d”, &vec[i] );

}


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

VECTORES

Arreglos unidimensionales en C

Problema: continuación ….

/* imprime los elementos del vector */

printf(“ Elementos del vector: \n”);

for( i=0; i<MAX; i++)

printf(“ %3d ”, vec[i] );

/* determina si el vector es simétrico */

sime =1; /* asume que es simétrico,

no lo será si encuentra al menos un caso que lo niegue */

for( i=0; i<= MAX/2; i++)

if ( ! (vec[i]==vec[MAX-1-i]) )

sime =0;

/* imprime el resultado */

if (sime) printf(“ El vector es simétrico \n”);

elseprintf(“ El vector no es simétrico \n”);

}


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

Índice filas

M

M(0,0)

1

2

M(0,1)

3

M(0,2)

4

5

M(1,1)

6

7

8

M(2,1)

9

Índice columnnas

MATRICES

Arreglos bi-dimensionales en C

Ejemplo:

Matriz M(3,3) =

_ _

| 1 2 3 |

| 4 5 6 |

| 7 8 9 |

- -

En C:

int M[3][3];

M[0][0] = 1;

M[0][1] = 2;

M[0][2] = 3;

M[1][0] = 4;

M[1][1] = 5;

M[1][2] = 6;

M[2][0] = 7;

M[2][1] = 8;

M[2][2] = 9;

printf(“El elemento 2x2 de M es %d “,M[1][1]);


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

MATRICES

Arreglos bi-dimensionales en C

Usamos la estructura ‘for’ para acceder los elementos de la matriz

#define DIM1 3

#define DIM2 3

int i, j, k;

int M[DIM1][DIM2] = { 1,2,3,4,5,6,7,8,9}; /*inicializa la matriz M */

k=1;

for( i=0; i<DIM1; i++) /* se inicializa la matriz M con for’s anidados*/

for( j=0; j<DIM2; j++)

{

M[ i ][ j ] = k;

k ++;

}

for( i=0; i<DIM1; i++) /* se imprime la matriz M */

for( j=0; j<DIM2; j++)

printf(“ elemento M(%2d,%2d) vale %d \n”, i+1, j+1, M[ i ][ j ]);


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

MATRICES

Arreglos bi-dimensionales en C

Problema: Escriba un programa que lea una matriz cuadrada, la presente en pantalla, y nos escriba la suma de todos los números que no están en la diagonal

#include <stdio.h>

#define FILAS 3

#define COLUM 3

void main()

{

/* Declaracion de variables */

int M[FILAS][COLUM] /* ENTRADA se guarda en arreglo de 2 dimensiones */

int i, j, suma;

/* lectura por filas, la matriz es cuadrada */

for( i=0; i<FILAS; i++)

for( j=0; j<COLUM; j++)

scanf(“%d”,M[ i ][ j ] );


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

MATRICES

Arreglos bi-dimensionales en C

Problema: continuación …

/* escritura por filas, la matriz es cuadrada */

for( i=0; i<FILAS; i++)

{

for( j=0; j<COLUM; j++)

printf(“%5d”,M[ i ][ j ] );

printf(“\n”);

}

/* calculo de la suma */

suma = 0;

for( i=0; i<FILAS; i++) /* se imprime la matriz M */

for( j=0; j<COLUM; j++)

if( ! (i==j))

suma += M[i][j];

/* imprime suma */

printf(“La suma es: %5d”, suma );

}


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

MATRICES

Arreglos multi-dimensionales en C

Declarar un arreglo multidimensional en C:

tipo nombre-arreglo[dim-1][dim-2]…[dim-n];

Uso del for para acceder a sus elementos:

int nombre-arreglo[dim-1][dim-2]…[dim-n];

for( i=0; i<dim-1; i++)

for( j=0; j<dim-2; j++)

.

.

.

for( n=0; n<dim-n; n++)

nombre-arreglo[i][j]…[n] = 0;


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

cadena

H

o

l

a

\0

CADENAS, como arreglos de caracteres

A diferencia de otros lenguajes de programación que emplean un tipo denominado cadena string para manipular un conjunto de símbolos, en C, se debe simular mediante un arreglo de caracteres, en donde la terminación de la cadena se debe indicar con nulo.

Un nulo se especifica como '\0'. Por lo anterior, cuando se declare un arreglo de caracteres se debe considerar un carácter adicional a la cadena más larga que se vaya a guardar.

char cadena[5];

cadena[1] = ‘H’;

cadena[2] = ‘o’;

cadena[3] = ‘l’;

cadena[4] = ‘a’;

cadena[5] = ‘\0’;


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

CADENAS, como arreglos de caracteres

Al inicializar arreglos de caracteres al momento de declararlos

C automáticamente asigna el carácter nulo al final de la cadena

char nombre_arr[ 7 ] = "cadena"; char ejemplo[7];

Es equivalente a:

nombre_arr[ 0 ] = ‘c’;

nombre_arr[ 1 ] = ‘a’;

nombre_arr[ 2 ] = ‘d’;

nombre_arr[ 3 ] = ‘e’;

nombre_arr[ 4 ] = ‘n’;

nombre_arr[ 5 ] = ‘a’;

nombre_arr[ 6 ] = ‘\0’;

Sin embargo, NO SE PUEDE ASIGNAR una cadena a un arreglo

nombre-arr = “ABCD_E”; /* ERROR */

ejemplo = nombre-arr; /* ERROR */

if (opcion == “si”) /* ERROR */


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

CADENAS, como arreglos de caracteres

  • El Lenguaje C no tiene operaciones con cadenas, se usan funciones de la librería ‘string.h’ y se incluye como archivo cabecera con:

  • #include <string.h>

  • Estas funciones son:

  • strcpy(s1,s2) s1 = s2;

  • strcat(s1,s2); s1 = s1+ s2;

  • strcmp(s1,s2) compara s1 con s2

  • strlen(s) longitud de s


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

CADENAS, como arreglos de caracteres

strcpy(string_destino, string_original);

Se utiliza para copiar el contenido de un string original en un string de destino.

Ejemplo:

char nombre[30] = “nombre”;

char copia[30];

strcpy(copia,nombre);

strcpy(nombre,"pato");

strcat(string1, string2);

Encadena o agrega al final de la string1 la string2.

Ejemplo:

char nombre[30], copia[30];

strcpy(nombre,"pepe");

strcat(nombre,"lopez");


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

CADENAS, como arreglos de caracteres

strcmp(string1, string2);

Se utiliza para comparar 2 strings, esta función regresa cero si ambas strings son iguales, regresa un número mayor que cero si string 1 es mayor que string 2 y regresa un número menor que cero si string 1 es menor alfabeticamente que string 2.

Ejemplo:

char opcion[3];

if ( strcmp(opcion,"si") == 0 ) printf(“la opcion es si”);

strlen(string);

Esta función regresa la cantidad de caracteres que tiene la string.

Ejemplo:

char nombre[30];

strcpy(nombre,"juan");

printf(“La cantidad de caracteres de nombre es %d”, strlen(nombre)); /* 4 */


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

Para asignar a un arreglo de caracteres una cadena de la ‘entrada estándar’ se puede usar la función scanf con la opción %s

Nota: que no se requiere usar el operador &

De igual forma para mostrarlo en la ‘salida estándar’. ..

Ejemplo:

main()

{

char nombre[15], apellidos[30];

printf("Introduce tu nombre: ");

scanf("%s",nombre);

printf("Introduce tus apellidos: ");

scanf("%s",apellidos);

printf("Usted es %s %s\n",nombre,apellidos);

}

CADENAS, scanf printf, con convertidor %s


Tipo de dato arreglo en c uso del for con arreglos arreglos de caracteres

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define CERO 0

void main()

{

char a[6]="Hola ";

char b[6]="Mundo";

char c[20];

char d[11]="Hola ";

printf("strcmp de %s y %s devuelve %d\n",a,b,strcmp(a,b));

printf(" a es %s\n",a);

printf(" d es %s\n",d);

if ( strcmp(a,d) == CERO )

printf("a y d son iguales\n");

else printf("a y d son diferentes\n");

strcpy(c,a);

printf("c es %s\n",c);

strcat(c,b);

printf("c es %s\n",c);

printf("la longitud de a es %d\n",strlen(a));

system("PAUSE");

}

EJEMPLO

Usando la

Librería

string.h


  • Login