Programación con C++

Expresa valores que se imprimen

Ejemplo:

Construya un diagrama de flujo tal que dado como datos la base y la altura de un rectángulo, calcule el perímetro y la superficie del mismo.

Datos: BASE, ALTU

Donde:

BASE es una variable de ripo real que representa la base de un rectángulo.

ALTU es una variable de tipo real que indica la altura del rectagulo.

Recuerde que :

La superficie de un rectángulo se calcula aplicando la siguiente formula: superficie= base * altura.

Exploca las variables

BASE, ALTU: Varuables de tipo real.

SUP: Variables de tipo real. Almacenan la superficie del rectángulo.

PER: variables de tipo real. Almacena el perímetro de rectángulo.

Explicación de las variables

Num: variables de tipo entero.

Cua: variables de tipo real. Almacena el cubo ddel numero que se ingresa.

Cub: variables de tipo real. Almacena el cubo del numero que se ingresa.

Seguimiento del algoritmo para diferentes corridas:

Construya un diagrama de flujo que resuelva el problema que tienen en una gasolinera. Los surtidores de la misma registran lo que surten en galones, pero el precio de la gasolina esta fijado en litros. El diagrama de flujo debe calcularce e imprimir lo que hay que cobrarle al cliente.

GAL variable de tipo real que representa los galones de gasolina que le surtieron a un cliente.

Consideraciones:

Cada galon tiene 3.785 litros

El predio del litro es $8.20

Explicaciones de la variable

GAL: variable de tipo real

TOTAL: variable de tipo real. Almacena el total de lo que debe pagar el cliente.

Expresa valores que se imprimen.

Expresa valores que se imprimen

Construya un diagrama de flujo tal que dado como los datos el radio y la altura de un cilindro, calcule e imprima el area y su volumen.

Consideraciones: el volumen de un cilindro lo calculamos aplicando la siguiente formula

Volumen: *radio2*altura

Donde =3.14692

La superficie del cilindro la calculamos xomo

Area= 2* * radio* altura.

Construya un diagrama de flujo que calcule e imprima el numero de segundos que hay en un determinado numero de días.

Construya un diagrama de flujo tal que dados los tres lados de un triangulo, pueda determinar su area. Este calculamos aplicanod la siguiente formula:

Area:

S=(L1+L2+L3)/2

La biblioteca de manipulación de caracteres <ctype.h> incluye varias funciones que realizan evaluaciones y manipulaciones útiles en datos de tipo carácter.

La figura anterior, muestra las funciones isdigit, isalpha, isalnum e isxdigit. La función isdigit determina si su argumento es un digito (0-9). La función isalpha determina si su argumento es una letra mayúscula (A-Z), o una letra minúscula (a-z). La función isalnum determina si su argumento es una letra mayúscula, una letra minúscula o un digito. La función isxdigit determina si su argumento es un digito hexadecimal (A-F,a-f, 0-9).

/* Uso de las funciones isdigit, isalpha, isalnum, e isxdigit */

#include <stdio.h>

#include <ctype.h>

int main()

{

printf( "%s\n%s%s\n%s%s\n\n", "De acuerdo con isdigit: ",

isdigit( '8' ) ? "8 es un " : "8 no es un ", "digito",

isdigit( '#' ) ? "# es un " : "# no es un ", "digito" );

printf( "%s\n%s%s\n%s%s\n%s%s\n%s%s\n\n",

"De acuerdo con isalpha:",

isalpha( 'A' ) ? "A es una " : "A no es una ", "letra",

isalpha( 'b' ) ? "b es una " : "b no es una ", "letra",

isalpha( '&' ) ? "& es una " : "& no es una ", "letra",

isalpha( '4' ) ? "4 es una " : "4 no es una ", "letra" );

printf( "%s\n%s%s\n%s%s\n%s%s\n\n",

"De acuerdo con isalnum:",

isalnum( 'A' ) ? "A es un " : "A no es un ",

"digito o una letra",

isalnum( '8' ) ? "8 es un " : "8 no es un ",

"digito o una letra",

isalnum( '#' ) ? "# es un " : "# no es un ",

"digito o una letra" );

printf( "%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s\n",

"De acuerdo con isxdigit:",

isxdigit( 'F' ) ? "F es un " : "F no es un ",

"digito hexadecimal",

isxdigit( 'J' ) ? "J es un " : "J no es un ",

"digito hexadecimal",

isxdigit( '7' ) ? "7 es un " : "7 no es un ",

"digito hexadecimal",

isxdigit( '$' ) ? "$ es un " : "$ no es un ",

"digito hexadecimal",

isxdigit( 'f' ) ? "f es un " : "f no es un ",

"digito hexadecimal" );

return 0; /* indica terminación exitosa */

} /* fin de main */

Programando con C++

//Ejemplo que lee un caracter lo revisa y nos dice si se trata de un digito

Ejercicio:

  1. Realiza un programa con C++, que compruebe si se trata de un dígito, una letra, ninguno de los dos anteriores, o un número hexadecimal

  2. Elabora un programa que indique si se trata de una letra minúscula, mayúscula

  3. Programa que convierta de minúsculas a mayúsculas y viceversa

    1. Investiga cuales son las funciones utilizadas para conversión de cadenas a enteros y números reales, cuál es la biblioteca utilizada para tal fin?

Funciones de Conversión de Cadenas

Estas Funciones convierten cadenas de dígitos a valores enteros y de punto flotante

    • atof Convierte una cadena en un double (double)

    • atoi Convierte una cadena en un entero (int)

    • atol Convierte una cadena en un entero largo (long int)

    • strtod Convierte una cadena en un numero real (double)

/* atoi */

#include <stdio.h>

#include <stdlib.h>

#include <iostream.h>

int main ()

{

int i;

char entrada [256];

cout<<"Escribe un numero: ";

cin>>entrada;

i = atoi (entrada);

cout<<"La cadena introducida es: "<<entrada<<"\nEl doble del entero es "<<i*2;

return 0;

}

Ejercicio:

  • Elabora los programas necesarios para comprobar las Funciones de Conversión a los diferentes tipos de datos

  • Convierte la cadena "1234567" a long e imprime su valor

Funciones de Entrada y Salida de la Biblioteca estándar

Las funciones de entrada y Salida estándar de la biblioteca <stdio.h> sirven para la manipulación de datos de tipo caracter y en formato cadena

/* Uso de getchar y puts */

#include <stdio.h>

int main()

{

char c; /* variable para almacenar los caracteres introducidos por el usuario */

char enunciado[ 80 ]; /* crea un arreglo de caracteres */

int i = 0; /* inicializa el contador i */

/* indica al usuario que introduzca una línea de texto */

puts( "Introduzca una linea de texto:" );

/* utiliza getchar para leer cada caracter */

while ( ( c = getchar() ) != '\n') {

enunciado[ i++ ] = c;

} /* fin de while */

enunciado[ i ] = '\0'; /* termina la cadena */

/* utiliza puts para desplegar el enunciado */

puts( "\nLa linea introducida es :" );

puts( enunciado );

return 0; /* indica terminación exitosa */

} /* fin de main */

Ejercicio

  • Lea una línea de texto del arreglo s1 desde el teclado, no utilices cin>>

  • Imprime la linea de texto almacenada en el arreglo s1, no utilices cout<<

Funciones de Manipulación de Cadenas

Utilizamos la biblioteca <string.h>, la cuál nos permite funciones útiles para manipular datos de cadena (copiar y concatenar cadenas), comparar cadenas, buscar caracteres y otras cadenas dentro de cadenas, separar cadenas en piezas lógicas) y determinar la longitud de cadenas.

/* Uso de strcpy y strncpy */

#include <string.h>

#include <iostream.h>

int main()

{

char x[] = "Feliz cumpleanios a ti"; /* inicializa el arreglo de caracteres x */

char y[ 25 ]; /* crea el arreglo de caracteres y */

char z[ 15 ]; /* crea el arreglo de caracteres z */

/* contenido de la copia de x dentro de y */

cout<< "La cadena en el arreglo x es: "<< x<<"\nLa cadena en el arreglo y es: "<< strcpy( y, x ) ;

/* copia los primeros 17 caracteres de x dentro z. No copian el

caracter nulo */

strncpy( z, x, 17 );

z[ 17 ] = '\0'; /* termina la cadena z */

cout<<"\nLa cadena en el arreglo z es: "<< z;

return 0; /* indica terminación exitosa */

} /* fin de main */

La función strcat agrega un segundo argumento a su primer argumento, es decir, agrega una cadena a otra cadena

/* Uso de strcat y strncat */

#include <iostream.h>

#include <string.h>

int main()

{

char s1[ 20 ] = "Feliz "; /* inicializa el arreglo de caracteres s1 */

char s2[] = "Anio Nuevo "; /* inicializa el arreglo de caracteres s2 */

char s3[ 40 ] = ""; /* inicializa a vacío el arreglo de caracteres s3 */

cout<< "s1 = "<<s1<<"\ns2 = "<<s2<<"\n";

/* concatena s2 y s1 */

cout<<"strcat( s1, s2 ) = "<< strcat( s1, s2 )<<"\n" ;

/* concatena los primeros 6 caracteres de s1 a s3. Coloque '\0'

después del último caracter */

cout<<"strncat( s3, s1, 6 ) = "<< strncat( s3, s1, 6 )<<"\n" ;

/* concatena s1 a s3 */

cout<< "strcat( s3, s1 ) = "<< strcat( s3, s1 )<<"\n";

return 0; /* indica terminación exitosa */

} /* fin de main */

Ejercicio:

Elabora un programa que solicite los nombres completos de 3 de tus compañeros, y muestre todas las combinaciones posibles generadas con los mismos

Ejercicio:

(Protección a cheques) con frecuencia se utilizan las computadoras como sistemas de verificación de cheques, tales como aplicaciones de nomina o cuentas por pagar. Muchas historias extrañas circulan en torno a la impresión errónea de cheques por montos que exceden a un millón de dólares. Michos sistemas de impresión de cheques imprimen dichos montos extraños debido a errores humanos o errores de la maquina. Por supuesto, los diseñadores de sistemas hacen muchos esfuerzos paran construir controles dentro de sus sistemas para prevenir la emoción de cheques erróneos.

Otro problema serio es la alteración internacional del monto de un cheque por parte de alguien que pretende cobrar dicho cheque de manera fraudulenta. Para prevenir que el monto sea alterado, la mayoría de los sistemas computarizados d impresión de cheques emplean una técnica llamada protección de cheques.

Los cheques diseñados para la impresión por computadora contienen un número fijo de espacios en los cuales la computadora puede imprimir el monto. Suponga que un cheque contiene un número fijo de espacios en blanco en los que se supone que la computadora emprímele monto de un pago semanal. Si el monto es grande, entonces los nuevos espacios serán ocupados, por ejemplo:

11,230.60 (monto del cheque)

----------

123456789(numer4o de posiciones)

Por otro lado, si el monto es menor que $1000, entonces quedaran varios espacios en blanco. Por ejemplo:

99.87

--------------

123456789

Contiene tres espacios en blanco. Si el cheque se imprime con espacios en blanco, es mas fácil que alguien altere el monto del cheque. Para prevenir que un cheque sea alterado, muchos sistemas de impresión de chuques insertan asteriscos al principio para proteger el monto de la siguiente manera:

****99.87

---------------

123456789

Escriba un programa que introduzca el monto en el cheque y después imprima, si es necesario el monto en formato protegido con asteriscos al principio. Supongamos un total de nueve espacios disponibles para la impresión del monto.

virj

#include <ctype.h>

#include <iostream.h>

int main()

{

char a_char;

cin>>a_char;

if(isdigit(a_char))

{

cout<<"Es un digito!";

}

else

{

cout<<"No es un digito!";

}

}