Documentos de Académico
Documentos de Profesional
Documentos de Cultura
int main(){
char *frase; i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i
int ca,ce,ci,co,cu; 30
ca=ce=ci=co=cu=0; Pantalla: ca ce ci co cu
system(“cls”); ingrese una frase preferida: _ 0 0 0 0 0
printf("ingrese una frase preferida: "); gets(frase); Totales a=3 e=2 i=1 o=5 u=0 1 1 1 1
for (int i=0 ; i < strlen(frase); i++) 2 2 2
switch(frase[i]){ 3 3
case ‘A’: case ‘a’: ca++; break; 4
case ‘E’: case ‘e’: ce++; break; 5
case ‘I’: case ‘i’: ci++; break;
case ‘O’: case ‘o’: co++; break; Al tratarse de un arreglo se puede recorrer una cadena de texto
case ‘U’: case ‘u’: cu++; break; posición a posición y realizar cualquier proceso sobre cada
} ubicación de la cadena
printf("Totales a=%d\t e=%d\t i=%d\t o=%d\t u=%d\n",ca,ce,ci,co,cu);
system(“pause”);
return 0;
}
Gestión de búsqueda carácter a carácter:
Una palabra palíndroma es una palabra que se lee igual de izquierda a derecha como de derecha a izquierda sin considerar tildes o mayúsculas, por
ejemplo: Aérea, Ama, Ana, Anilina, Nadan, Neuquén, Ojo, Orejero, Oro, Erigiré, Radar, Rajar, Rallar, Reconocer, Rodador, Rotomotor, Rotor,
Salas, Sedes, entre otras palabras. Este programa permite el ingreso de una palabra cualquiera y muestra si es o no palíndroma:
tolower(int c): Esta función pertenece a la librería ctype.h sirve para transformar de
mayúscula a minúscula, recuerde que las variables del tipo char almacean códigos ASCII, la
C30.cpp función tolower() le suma 32 al número entero correspondiente al código ASCII del
#include <stdio.h> carácter, por ejemplo “A” tiene código ASCII 65, si le sumamos 32 dará 97 que es el código
ASCII de “a”.
#include <stdlib.h> palabra
#include <string.h> O r e j e r o
#include <ctype.h> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
int main(){
char palabra[50]; Pantalla:
iz iz iz iz de de de
int iz, de; ingrese una palabra: _
de
system("cls"); la palabra Orejero si es palíndroma
printf("ingrese una palabra: "); gets(palabra);
for (iz=0, de=strlen(palabra)-1; iz<de && de>iz ; iz++,de--)
if (tolower(palabra[iz]) != tolower(palabra[de])) break;
if (iz < de)
printf("la palabra %s no es palíndroma\n ",palabra);
else
printf("la palabra %s si es palíndroma\n ",palabra);
system("pause");
return 0;
}
Gestión de búsqueda carácter a carácter:
El siguiente programa permite contar cuantas palabras tiene una frase cualquiera :
cp frase
#include <stdio.h> 0 A m o r e s u n a d e c i s i ó n
#include <stdlib.h> 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#include <string.h> 2
int main(){ 3 i i i i i i i i i i i i i i i i i i i i i
char *frase; 4
Pantalla:
int i=0, cp=0; Ingrese una frase preferida:_
system("cls"); Hay 4 palabras en la frase
printf("Ingrese una frase preferida: "); gets(frase);
while (i<strlen(frase)) { El algoritmo utiliza 3 while() para contar las palabras, el primer while() o el
externo repetirá mientras i no llegue al final de lo escrito, la lógica aplicada
while (frase[i]!=' ') i++;
se basa en avanzar por palabra, contar y por último avanzar por espacios
if(i) cp++;
while (frase[i]==' ') i++; El segundo while() incrementará i mientras sea diferente de un espacio, es
decir avanza mientras exista la palabra
}
printf("Hay %d palabras en la frase\n ",cp); El tercer while() repetirá mientras el carácter que apunta i sea igual al
espacio en blanco, tenga en cuenta que se pueden escribir entre palabras
system("pause");
varios espacios sin notarlo
return 0;
} La condición if(i) cp++; esta ubicada porque el texto ingresado puede
empezar con un espacio y contaría una palabra demás, observe que primero
avanza al existir una palabra, pero si hay un espacio avanzará y contará como
una palabra y dará un resultado equivocado.
Estructura y organización de los arreglos
Recordemos que un arreglo es un grupo de espacios de memoria (grupos de variables) que comparten un mismo nombre y se identifican por su
ubicación (índice) con la finalidad de almacenar información del mismo tipo de dato y con el mismo propósito.
El siguiente ejemplo declara un vector de 10 elementos de tipo entero:
int A[10]; // El número de elementos se ubican en secuencia en una sola fila
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
El siguiente ejemplo declara y crea una matriz (dos índices) de 8 filas y cada una de las filas con 10 columnas, esta matriz podrá almacenar valores
con decimales:
float B[8][10]; // el primer elemento es para las filas y el segundo para las columnas
0 1 2 3 4 5 6 7 8 9
0 B[0][0] B[0][1] B[0][2] B[0][3] B[0][4] B[0][5] B[0][6] B[0][7] B[0][8] B[0][9]
1 B[1][0] B[1][1] B[1][2] B[1][3] B[1][4] B[1][5] B[1][6] B[1][7] B[1][8] B[1][9]
2 B[2][0] B[2][1] B[2][2] B[2][3] B[2][4] B[2][5] B[2][6] B[2][7] B[2][8] B[2][9]
3 B[3][0] B[3][1] B[3][2] B[3][3] B[3][4] B[3][5] B[3][6] B[3][7] B[3][8] B[3][9]
4 B[4][0] B[4][1] B[4][2] B[4][3] B[4][4] B[4][5] B[4][6] B[4][7] B[4][8] B[4][9]
5 B[5][0] B[5][1] B[5][2] B[5][3] B[5][4] B[5][5] B[5][6] B[5][7] B[5][8] B[5][9]
6 B[6][0] B[6][1] B[6][2] B[6][3] B[6][4] B[6][5] B[6][6] B[6][7] B[6][8] B[6][9]
7 B[7][0] B[7][1] B[7][2] B[7][3] B[7][4] B[7][5] B[7][6] B[7][7] B[7][8] B[7][9]
Estructura y organización de los arreglos
Para declarar una matriz de tres dimensiones (tres índices) o también conocidos como cubos, se utilizan
tres pares de corchetes:
long c[7][7][6]; //las dimensiones se representan en x (filas), y (columnas), z (nivel)
¿Cuál es el espacio físico que ocupa en memoria un arreglo?
• El vector “A” de tipo entero “int”, reserva en memoria 10 espacios, 2 byte de memoria por cada celda o
variable, el compilador reservaría 20 byte en la memoria principal.
• La matriz “B”, de tipo float, separa 4 byte por cada celda, esto reservar 8x10x4, dando como resultado
320 byte de memoria RAM.
¿Dónde se aplican los arreglos?
Vector Los vectores se los aplica para dar la secuencia de aterrizaje de un
avión, para almacenar una lista, para definir una secuencia, etc
El siguiente programa almacena 5 números enteros cualesquiera y muestra primero los números pares y después los números impares:
C31.cpp vector 4 7 6 9 8 Pantalla:
#include <stdio.h> ingresa el número 1: _
0 1 2 3 4
#include <stdlib.h>
ingresa el número 2: _
int main() Aquí el usuario i i i i i i ingresa el número 3: _
{ int i, vector[5]; ingresa los 10 5
system("cls"); números ingresa el número 4: _
for(i = 0; i < 5; i++){ ingresa el número 5: _
printf("ingresa el número %d: ",i+1); Los números pares ingresados son:
scanf("%d",&vector[i]); 4 8
6
}
Los números impares ingresados son:
printf("\nlos números pares ingresados son:\n");
7 9
for(i = 0; i < 5; i++)
if(vector[i]%2 == 0) printf("%d\t",vector[i]); Normalmente se debe utilizar un for() para desarrollar el proceso de ingreso de datos a un
vector, y otro for() para aplicar un recorrido y realizar procesos con dichos datos
printf("\nlos números impares ingresados son:\n");
for(i = 0; i < 5; i++) El contador del for() siempre se lo utiliza como índice de ubicación de cada elemento del
if(vector[i]%2 != 0) printf("%d\t",vector[i]); vector (vector[i]).
printf("\n"); En el ejemplo existe un for() para el ingreso de datos, otro for() para encontrar los números
system("pause"); pares y un último for() para encontrar los números impares.
return 0;
}
Generación de números aleatorios:
Un número aleatorio o al azar, es cualquier numero proporcionado por la computadora, recuerde que una computadora no puede pensar, por lo
que existe un mecanismo matemático que aplicado genera un número cualquiera en un rango específico, esto igual requiere de un valor que sirva
de semilla para generar otros valores, este valor es tomado de los ciclos del reloj interno de la computadora utilizando las siguientes funciones:
randomize(); Esta función que pertenece a la librería stdlib.h, sirve para generar un valor inicial por el cual se podrá generar una serie de número
al azar, para lograrlo usa el reloj interno de la computadora como semilla.
Rand(); Sirve para tomar un número al azar de una serie de valores iniciados por randomize();
rand(); //Al utilizar solo rand() de esta forma, la función devolverá un número entre 0 y 2.147’483.647.
#include <stdio.h> Para limitar el número a devolver se necesita hacer lo siguiente:
C32.cpp
#include <stdlib.h> rand()%101; //Al utilizar la función de esta forma, devolverá números entre 0 y 100.
int main() Aquí la función genera los
10+(rand()%91); //Este método le permite aplicar límite inferior y superior,
{ int i, vector[10]; 10 números uno a uno por
devuelve números entre 10 y 100
cada ciclo de repetición
system("cls");
randomize(); En el ejercicio anterior los datos eran ingresados por el teclado, en este ejercicio los
for(i = 0; i < 10; i++) vector[i]= rand()%101; datos son llenados por la computadora de forma automática, al probar este programa
printf("\nlos números pares tomados son:\n"); notará que, cada vez que se ejecuta se obtendrán siempre números diferentes
for(i = 0; i < 10; i++)
if(vector[i]%2 == 0) printf("%d\t",vector[i]); Si usted quita la función randomize del código fuente, notará que cada vez que
printf("\nlos números impares tomados son:\n"); ejecute este programa siempre le dará la misma secuencia de números.
for(i = 0; i < 10; i++)
if(vector[i]%2 != 0) printf("%d\t",vector[i]);
printf("\n");
system("pause");
return 0;
}
Ejemplo de aplicación de vectores:
El siguiente programa permite ingresar una lista de N elemento con una longitud máxima de hasta 100 elementos, el programa no debe permitir ingresar números
repetidos: C33.cpp
b b b b b
Para crear una lista de palabras, se debe generar tecnicamente una matriz como si se tratase de un vector, donde el primer índice corresponde a la
ubicación de cada fila (palabra), y el segundo índice corresponde a la posición de la columna (cada letra) de la palabra. Por ejemplo, los siguientes
son vectores, uno contiene los días de la semana y el otro vector contiene los diferentes estados civiles, observe como se puede inicializar un vector
de cadenas de caracteres:
char dia[8][10]={"Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"};
El vector es de 8 elementos de máximo 9 letras, cada elemento se encierra entre comillas dobles, y todo el contenido del vector se agrupa con llaves
char estcivil[6][13] = {{'s',111,'l','t','e','r','o'}, {'c',97,'s','a','d',111}, {'d','i','v',111,'r','c','i',97,'d','o'},{'v','i','u','d','o'}, {'u','n','i','ó','n'}};
El vector es de 6 elementos, cada elemento se encierra entre llaves, los caracteres se pueden encerrar entre apostrofes (‘’) o utilizar sus códigos numéricos
Por ejemplo, suponga que se desea crear una lista de nombres, registrarlos y extraerlos se podría realizar lo siguiente:
Cada fila de la pantalla podía tener máximo 80 caracteres y máximo 25 líneas de escritura, con el paso del tiempo de fue mejorando y ampliando la matriz
de la pantalla, lenguaje C utiliza muchas librerías que permiten administrar la pantalla y mejorar algunas presentaciones, en este curso se utilizará la
librería <conio.h> del IDE de BorlandC que cuentan con funciones como:
textcolor() que sirve para definir un color con que se mostrará el texto en pantalla, por ejemplo: textcolor(YELLOW); o textcolor(14); son iguales y sirven
para establecer el color amarillo para las letras
textbackground() que sirve para definir un color de fondo con que se mostrará el texto en pantalla, por ejemplo: textbackground (BLUE); o textbackground
(1); son iguales y sirven para establecer el color azul de fondo para las letras
gotoxy() que sirve para ubicar el cursor (Carácter que siempre esta parpadeando e indica donde se escribirá al presionar cualquier tecla) en una posición
de la matriz de la pantalla, primero la columna (x) y después la fila (y), por ejemplo, se escribirá FCI en la columna 30 fila 8:
1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7
0 1 12 13 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 80
8 FC I
cprint() es igual que el printf() que se ha estado utilizando pero este muestra con color, por ejemplo, se desea mostrar Universidad Técnica de Manabí con
fondo verde y letras amarillas:
_setcursortype() que sirve para cambiar la apariencia del cursor, por ahora se utilizará
textbackground(GREEN);
_NOCURSOR para que no se vea y _NORMALCURSOR para volverlo visible, por
textcolor(YELLOW);
ejemplo, si se desea desaparecer al cursor se usa: _setcursortype(_NOCURSOR);
cprintf(“Universidad Técnica de Manabí ”);
2 S u ma t o r i a S u s t r a c c i o n Mu l t i p l i c a c i ó n D i v i s i ó n S a l i r
#include <stdio.h> //proceso de chequear la tecla presionada Este ejercicio lo puede
#include <conio.h> switch(tecla){ descargar del aula virtual
#include <stdlib.h> case 77: if (indice==4){col=2; indice=0;} con el nombre C35.cpp
void main() else {col+=15; indice++;} y se recomienda probarlo
{ char menu[5][15]={"Sumatoria","Sustracción", break; para entender su
"Multiplicación","División","Salir"}; case 75: if (indice==0){col=62; indice=4;} funcionamiento
int tecla, col=2, i, indice=0; else {col-=15; indice--;}
int a,b; break;
clrscr(); case 13: _setcursortype(_NORMALCURSOR);
//proceso de imprimir el menú en pantalla if (indice==0){gotoxy(10,10);printf("ingrese un número:");
for (i=0;i<5;i++){ gotoxy(col,2);cprintf("%s",menu[i]); scanf("%d",&a);
col+=15;} gotoxy(10,11);printf("ingrese otro número:");
col=2;i=1; scanf("%d",&b);
//proceso de controlar el movimiento gotoxy(10,12);printf("la sumatoria da:%d\n",a+b);
do{ gotoxy(10,13);system("pause");
do{ _setcursortype(_NOCURSOR); }
textbackground(6); if (indice==1){}
gotoxy(col,2); cprintf("%s",menu[indice]); if (indice==2){}
tecla=getch(); if (indice==3){}
}while(tecla!=77 && tecla!=75 && tecla!=13); if (indice==4) i=0;
textbackground(0); }
gotoxy(col,2); cprintf("%s",menu[indice]); }while(i);
}
CONCLUSIONES
✔ Se puede gestionar las cadenas de caracteres de la misma forma que se gestiona un vector es decir carácter a
carácter de acuerdo a su posición
✔ Los caracteres son código numéricos únicos por lo que se puede pasar de mayúscula a minúscula sumando 32
y de minúscula a mayúscula restando 32.
✔ En un envío de datos se puede aplicar operaciones matemáticas sobre los códigos de caracteres de tal forma
que no sean interpretables de tal forma que se transformen en texto basura en una transmisión, el proceso
inverso lo debe hacer el receptor para que se convierta en la información original
✔ Los vectores, matrices y cubos son estructuras de almacenamiento que son muy útiles en la actualidad para la
generación secuencias de procesos, listas, imágenes digitales con capacidad de ampliarse o reducirse,
animaciones en 3D y simulaciones científicas.
✔ Los vectores de cadenas de texto en realidad son una matriz, pero lenguaje C permite administrarlos con un
solo índice como si se tratara de una vector de palabras.