Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Programación en C/C++ (Manual FV) (página 2)




Enviado por Gabriel Mendoza



Partes: 1, 2, 3, 4

I.-
Introducción a la Programación en C

a) Introducción Teórica

Creador:

Dennis Ritchie (Laboratorios Bell) el 1972, cuando
trabajaba junto con Ken Thompson en el diseño
del sistema operativo
UNIX.

El ‘C’ se creó como herramienta para
programadores, en consecuencia su principal objetivo es
ser un lenguaje
útil.

Características:

El "C" es un lenguaje de
programación de "alto nivel" (alto nivel quiere decir
"próximo al lenguaje humano"), pero con
características de "bajo nivel" (bajo nivel=
próximo al lenguaje máquina).

Es de ALTO NIVEL porque es racional, estructurado y
fácil de aprender.

Es de BAJO NIVEL porque permite trabajar con "bits",
registros de
la C.P.U. y posiciones de memoria.

¿Porqué el "C"?

El lenguaje ‘C’ es poderoso y
flexible
: la mayor parte del sistema operativo
UNIX está escrito en ‘C’. Incluso están
escritos en ‘C’ los compiladores e
intérpretes de otros lenguajes, como FORTRAN, APL,
PASCAL, LISP,
LOGO y BASIC.

El lenguaje ‘C’ es "amistoso" porque
es lo suficientemente esrtucturado para ejercer buenos
hábitos de programación. Es el lenguaje de
programación más utilizado por el programador de
sistemas.

Estructura de un programa en
"C":

El ‘C’ es un lenguaje compilado, vamos a ver
que es esto gráficamente:

ç

CÓDIGO FUENTE: es el programa que nosotros
escribimos, se graba con la extensión
CPP

CÓDIGO OBJETO: es el programa fuente pero
traducido a lenguaje máquina (sucesión de ceros y
unos), se graba con la extensión OBJ

PROGRAMA EJECUTABLE: es el programa objeto más
las "librerías del C", se graba con la extensión
EXE. Y no necesita el programa que hemos utilizado para
crearlo, para poder
ejecutarlo.

El código
Objeto que genera un compilador de "C", es casi tan
eficiente (rápido) como si lo hubiéramos escrito en
lenguaje
ENSAMBLADOR (lenguaje de programación más
próximo al lenguaje máquina).

Relaciones del "C" con otros lenguajes de
programación:

  1. Los Primeros Programas en
    ‘C’
  • Prog001.cpp

/* Prog001.cpp */

#include <stdio.h>

void main()

{

printf("Curso de Programación
en C");

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog001.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

/* */

Todo lo que escribimos entre los símbolos anteriores son "comentarios"
para el programador, que no influyen para nada en la
ejecución del programa.

#include <stdio.h>

Ordena al compilador que incluya en el programa, las
funciones de
entrada – salida (en nuestro caso hay una:
printf).

stdio.h no es más que un fichero
"biblioteca",
que contiene una serie de funciones (instrucciones), en nuestro
caso de "entrada-salida por pantalla".

Si en nuestro programa necesitamos una raíz
cuadrada por ejemplo, deberíamos incluir
(include) otra "biblioteca" (tranquilo, ya las iremos
estudiando poco a poco).

void main()

Función o programa principal (main), que no
devuelve nada (void)

{ Inicio

printf(" ") Función
que escribe en pantalla

} Fin del programa

  • Prog002.cpp

/* Prog002.cpp */

#include <stdio.h>

void main()

{

printf("n"); /* Línea en blanco
*/

printf("Segunda Linea");

/***********************************

COMENTARIO

************************************/

printf(" continuamos en la 2ª
línean");

printf("nAhora estamos en la cuarta
línea");

/*

Hasta luego

………………………………*/

}

/* */ Todo lo que escribimos entre los
símbolos anteriores, el compilador no hace
caso.

n Es equivalente a un [Return]. Se le llama
manipulador de formato.

  1. Datos en "C"
  • Prog003.cpp

/* Prog003.cpp */

#include <stdio.h>

void main()

{

char nom[20];

printf("nEscribe tu nombre: ");

scanf("%s",nom);

printf("nHola %s",nom);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog003.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Estudio del PROG003:

En un programa, una constante es un dato que no
puede ser variado durante su ejecución.

El dato "Escribe tu nombre:" del PROG4 es una
constante, ya que cada vez que ejecutamos el programa,
aparece la misma frase: no hay posibilidad de
cambiarla.

En un programa, una variable es un dato que
sí puede cambiar mientras se ejecuta un
programa.

El dato "nom" del PROG4 es una variable, ya que
cada vez que ejecutamos el programa adquiere el valor
correspondiente a lo que escribimos ante la orden: "Escribe
tu nombre:"

  • La sentencia: char nom[20];

Define (declara) la variable "nom", cuyo
contenido serán caracteres (de ahí la palabra
char que abre la línea), en un número no
superior a 20, porque así lo especifica dicha cifra
entre corchetes.

En otras palabras, la línea en cuestión
indica al compilador que, para la ejecución del programa
debe reservar espacio en memoria para almacenar 20 datos del tipo
char, esto es, caracteres, y que en el resto del
programa dicha zona de memoria será designada como
"nom"

La definición (declaración) de variables en
un programa "C" es imprescindible: si no definimos una variable
antes de usarla, el programa no funcionará ya que al
llegar al nombre de la variable, el programa no sabrá
que hacer.

  • La sentencia: printf("nHola %s
    ",nom);

El printf en cuestión, escribe en
pantalla dos datos: Una constante "Hola" y el valor de
la variable nom.

El símbolo "%s" es un indicador de
formato
, que sirve para decir al printf, cómo
queremos que nos muestre el valor de la variable nom. La
"s" del indicador proviene de la palabra string
("cadena" en inglés).

En definitiva: printf("nHola %s ",
nom);

Escribe en pantalla:

Una línea en blanco, debida a
n

Para que el lenguaje "C" nos escriba en pantalla
(printf), el valor de una variable tipo char, es necesario
utilizar el indicador de formato: %s

  • La sentencia: scanf("%s", nom);

Inmovilizará la ejecución del programa,
hasta que nosotros escribamos alguna cosa.

Lo que escribamos se guardará en la variable de
nombre nom

Hemos de introducir el indicador de formato:
%s, correspondiente a datos "tipo carácter" para que lo que escribamos sea
interpretado como una cadena de caracteres.

Scanf igual que printf es una
función del fichero de cabecera:
stdio.h

  1. Tipos de Datos
  • Prog004.cpp

/* Prog004.cpp */

#include <stdio.h>

void main()

{

float a,b,c;

printf("nPrimer sumando: ");

scanf("%f",&a);

printf("nSegundo sumando: ");

scanf("%f",&b);

c=a+b;

printf("nnLa suma de %f y %f es
%f",a,b,c);

}

  • La sentencia: float a, b, c ;

Define (declara) 3 variables (a,b y c)
numéricas tipo float (números
reales).

El rango de valores que
puede tener cada tipo de variable (número de
dígitos) depende del compilador de "C".

En otro ejercicio veremos la forma de
descubrirlo.

  • El indicador %f

La utilización de variables float,
determina que el indicador de formato sea %f

  • El símbolo &

Una variable simple debe aparecer en el
scanf precedida del símbolo &:
scanf("%f",&b)

En el programa anterior Prog003:
scanf("%s",nom)

No estaba precedida de &, porque la
variable nom, no era una variable simple (un solo
valor), sino compuesta (llamada también array o
vector), porque tomaba un máximo de 20 valores
(caracteres).

Ya veremos más adelante, exactamente lo que
indica &

  • La sentencia: c=a+b

Es la forma de asignar el valor de una variable, a
partir del valor de otras.

  1. Asignación de variables
  • Prog005.cpp

/* Prog005.cpp */

#include <stdio.h>

void main()

{

double num;

printf("nEscribe un número=
");

scanf("%lf",&num);

printf("nEl cuadrado de %lf es
%lf",num,num*num);

printf("nEl cubo de %lf es
%lf",num,num*num*num);

}

Observa la sintáxis completa de
printf:

  • Prog006.cpp

/* Prog006.cpp */

#include <stdio.h>

void main()

{

int valor;

valor=15;

printf("Valor= %d",valor);

valor=27;

printf("nValor= %d",valor);

valor=valor+5;

printf("nValor= %d",valor);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog006.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Observa cómo podemos cambiar el valor de una
variable, durante la ejecución del programa sin
ningún tipo de problema.

La sentencia valor=valor+5; indica que el
nuevo valor es igual al antiguo valor más 5
unidades.

  1. Tipo de datos "long"
  • Prog007.cpp

/* Prog007.cpp */

#include <stdio.h>

void main()

{

int inta,intb;

long longa,longb;

inta=32500;

longa=-2000342527;

printf("El valor de inta es =
%d",inta);

printf("n Escribe un entero negativo menor de
32.768 : ");

scanf("%d",&intb);

printf("n El valor de intb es =
%d",intb);

printf("nn");

printf("n El valor de longa es =
%ld",longa);

printf("n Escribe un entero positivo menor de
2.100.000.000 = ");

scanf("%ld",&longb);

printf("n El valor de longb es =
%ld",longb);

}

long (abreviatura de signed long int =
entero largo con signo) corresponde a un número entero que
puede ser mayor (o menor) a un int.

Observa el formato correspondiente: %ld, a
diferencia del %d que correspondía a
int.

  1. Rango de Datos
  • Prog008.cpp

/* Prog008.cpp */

#include <stdio.h>

#include <values.h>

void main()

{

printf("n Escribe el máximo número
entero: %d",MAXINT);

printf("n Escribe el máximo número
entero largo: %ld",MAXLONG);

printf("n Escribe el mínimo número
float: %e",MINFLOAT);

printf("n Escribe el máximo número
float: %e",MAXFLOAT);

printf("n Escribe el mínimo número
double: %e",MINDOUBLE);

printf("n Escribe el máximo número
double: %e",MAXDOUBLE);

}

MAXINT, MAXLONG, MINFLOAT, MAXFLOAT, MINDOUBLE,
MAXDOUBLE
son constantes que están definidas en el
fichero values.h, por lo tanto para que funcione el
programa necesitamos la línea: #include
<values.h>

El código de formato %e indica que
queremos visualizar el número en notación
exponencial (científica).

La constante MAXLONG nos da el máximo
número entero (entero largo = long).

Si utilizas el compilador DJGPP observarás
que MAXINT = MAXLONG, es decir en este compilador de
‘C’, int es equivalente a
long

  1. Cadenas de caracteres: "puts –
    gets"
  • Prog009.cpp

/* Prog009.cpp */

#include <stdio.h>

void main()

{

char texto[65];

printf("Escribe tu nombre y dos apellidos:
");

scanf("%s",texto);

printf("nAcabas de escribir :
%s",texto);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog009.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Observa que el valor de la variable "texto" es todo lo
que hemos escrito antes del primer espacio.

  • Prog010.cpp

/* Prog010.cpp */

#include <stdio.h>

void main()

{

char texto[65];

puts("Escribe tu nombre y dos apellidos:
");

gets(texto);

puts("Acabas de escribir : ");

puts(texto);

}

Observa que ahora sí, escribe todo lo que hemos
escrito ante la pregunta.

La función gets(texto) es equivalente a
scanf, pero con dos diferencias fundamentales:

  • Sólo funciona para cadenas de
    caracteres
  • Abarca todo el texto que escribamos hasta que
    pulsamos la tecla [Return]. Por lo tanto es la que nos interesa
    si hay espacios en blanco.

puts es equivalente a printf, pero con dos
diferencias fundamentales:

  • Sólo funciona para cadenas de
    caracteres.
  • No podemos utilizar códigos de formato para
    "imprimir" variables.
  1. Mejoremos la salida por pantalla
  • Prog011.cpp

/* Prog011.cpp */

/* Programa que despliega un mensaje
de

bienvenida en la pantalla */

#include<stdio.h>

#include<conio.h>

void main()

{

clrscr();

/* La función anterior borra la pantalla.
Está en <conio.h>

solo tiene sentido si utilizas el
DJGPP

*/

printf("nnnnnn"); /* 6 lineas en blanco
*/

printf("tt"); /* 2 tabuladores */

printf("BIENVENIDO AL CURSO DE C
ESTANDAR");

printf("nnnnnnnn");
printf("tttt");

printf("Pulsa cualquier tecla para
terminar…n");

getch();

/* La función anterior inmoviliza la
ejecución del programa

hasta que pulsamos una tecla */

clrscr();

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog011.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Observa detenidamente los comentarios que aparecen en el
programa.

El "manipulador" n determinaba una línea
en blanco, es decir es equivalente a pulsar la tecla [Return]. El
manipulador t es equivalente a pulsar la tecla de
tabulación.

Observa que podemos colocar varias sentencias de C en
una misma línea de programa, siempre y cuando separemos
cada sentencia con un punto y coma.

  • Prog012.cpp

/* Prog012.cpp */

/*Programa que calcula el número de dias
vividos*/

#include<stdio.h>

#include<conio.h>

void main()

{

char nombre[50];

int edad;

clrscr();

printf("nnttt¿Cómo te llamas?
");

scanf("%s",nombre);

printf("nnttt¿Cuántos
años tienes? ");

scanf("%d",&edad);

edad=edad*365;

printf("nnntt%s, has vivido %d
dias",nombre,edad);

printf("nnnntttttPulsa cualquier tecla
para

terminar…n");

getch();

}

Supongo que estamos de acuerdo en que es muy
fácil mejorar la salida por pantalla del
programa.

  • Prog013.cpp

/* Prog013.cpp */

/*Programa que saca el promedio de 3
números*/

#include<stdio.h>

#include<conio.h>

void main()

{

float numero;

float promedio=0;

printf("Dame el primer número:
");

scanf("%f",&numero);

promedio+=numero;

/* La expresión anterior es equivalente
a

promedio=promedio+numero */

printf("Dame el segundo número:
");

scanf("%f",&numero);

promedio+=numero;

printf("Dame el tercer número:
");

scanf("%f",&numero);

promedio+=numero;

promedio/=3;

/* La expresión anterior es equivalente
a

promedio=promedio/3 */

clrscr();printf("nnnnnttt");

printf("El promedio es
%f",promedio);

printf("nnt");

printf("Presione cualquier tecla para
terminar…n");

getch();

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog013.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Toma nota del significado de: promedio+=numero o
promedio/=3

Es decir en la primera expresión: "el nuevo valor
de promedio es igual al valor antiguo de promedio +
el valor de numero".

En la segunda expresión: "el nuevo valor de
promedio es igual al antiguo valor de promedio
partido por 3".

AUTOEVALUACIÓN 1

  1. El siguiente programa tiene errores. Escribelo
    (grábalo con el nombre EVAL1A en
    TuCarpeta) y corrígelo para que
    funcione:
  2. #include <stdio.h>

    void main()

    {

    float radio;

    pi=3.141592

    printf("Radio= ");

    scanf("%f",radio);

    printf("nnLongitud =
    %f",2*pi*radio);

    printf("nnÁrea = %f
    ",pi*radio*radio);

    }

  3. Haz un programa que funcione de la siguiente
    forma:
  • El programa nos pregunta en qué población vivimos.
  • El programa nos pide que introduzcamos la base de un
    triángulo.
  • El programa nos pide que introduzcamos la altura de
    un triángulo.
  • El programa nos da el resultado del área del
    triángulo correspondiente.
  • El programa nos despide con la frase:
    "Adiós habitante de " y a continuación nos
    escribe la población que hemos escrito al
    principio.
  • Graba el programa con el nombre EVAL1B en
    TuCarpeta.
  1. Haz un programa que sirva para calcular un
    determinante de 2º orden.
  2. Recuerda:

    | a b |

    | c d | es igual a: a*d-c*b

    Graba el programa con el nombre EVAL1C en
    TuCarpeta.

    (Área= base x altura y Perimetro= 2veces la
    base + 2veces la altura)

    Graba el programa con el nombre EVAL1D en
    TuCarpeta.

  3. Haz un programa que sirva para calcular el área
    y el perímetro de un rectángulo.

    =================================================

    NOMBRE: (el nombre que hemos
    introducido)

    TELÉFONO: (el teléfono que hemos
    introducido)

    ==================================================

    Graba el programa con el nombre EVAL1E en
    TuCarpeta.

  4. Haz un programa que nos pide nuestro nombre y teléfono. Como resultado el programa
    nos escribe una ficha aproximadamente igual a la
    siguiente:

    Graba el programa con el nombre EVAL1F, en
    TuCarpeta.

  5. Haz un programa que nos pida un número entero
    y a continuación el programa nos escribe los 2 enteros
    siguientes al que hemos introducido.
  6. ¿Qué diferencia hay entre un programa
    con extensión CPP o OBJ
  7. Cita un programa de ordenador muy popular que
    esté escrito con el lenguaje de programación
    "C".
  8. ¿Qué quiere decir un lenguaje de
    programación de ALTO NIVEL y BAJO
    NIVEL
    ?
  9. ¿Porqué el "C" es un lenguaje de
    programación con características de ALTO
    NIVEL
    y de BAJO NIVEL?
  10. Relaciona el "C" con otros lenguajes de
    programación.
  11. Grábalo con el nombre EVAL1G en
    TuCarpeta.

  12. Vuelve a hacer el programa EVAL1E, pero en lugar
    del nombre que aparezca el nombre y apellidos

    Grábalo con el nombre EVAL1H en
    TuCarpeta.

  13. Repite el EVAL1C pero utilizando n y t, de
    forma que quede bonito.

    Grábalo con el nombre EVAL1I en
    TuCarpeta.

  14. Repite el EVAL1D pero que quede
    "bonito".
  15. Idem con el EVAL1F

Grábalo con el nombre EVAL1J en
TuCarpeta.

II.- Estructuras de
Programación

Operadores Lógicos y
Relacionales

>, >=, <, <=

== igualdad

!= diferente

&& y

| | o

! no

La Estructura IF
– ELSE

  • Prog014.cpp

/* Prog014.cpp */

#include <stdio.h>

void main()

{

float a, b;

printf("nEscribe el primer número a=
");

scanf("%f",&a);

printf("nEscribe el segundo número b=
");

scanf("%f",&b);

if (a==b) printf ("nLos dos números son
igualesn");

if (a!=b) printf("nLos dos números son
distintosn");

if (a>b) printf("nEl número %f es mayor
que %fn ",a,b);

else printf("nEl número %f no es mayor que
%fn",a,b);

if ((a>b) && (100>a))

{

printf("nEl número %f es mayor que %f
",a,b);

printf("nAdemás los dos son menores de
100");

}

else

{printf("nEl número %f no es mayor que %f
",a,b);

printf(" O uno de los dos números es mayor de
100");

}

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog014.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Ejecútalo en los siguientes casos, observando
detenidamente lo que aparece:

  1. Si a= 70 y b= 2
  2. Si a= 50 y b=30
  3. Si a= 7 y b= 11
  4. Si a= 100 y b= 50
  5. Si a= 50 y b= 100

Estudio del programa PROG014:

  • Observa el uso de los operadores relacionales y
    lógicos:

(a == b) "a" igual a "b"

(a != b) "a" diferente a "b"

((a>b) && (100>a))

"a" es mayor que "b" y además "100 es mayor que
"a"

Observa también que cada relación hemos
de encerrarla entre paréntesis.

  • Estructura de programación
    IF-ELSE

Observa en primer lugar la sintáxis diferente
entre los 4 "IF" del programa:

Los 2 primeros son iguales y más simples: IF
(condición) sentencia;

Que quiere decir: Si se cumple la
"condición" se ejecutará la
sentencia
.

El tercer "IF":

IF (condición) sentencia1 ;

else sentencia2 ;

Que quiere decir: Si se cumple la
(condición) se ejecutará la sentencia1, en caso
contrario se ejecutará la sentencia2.

El cuarto "IF" es el más completo:

IF (condición)

{

sentencia1;

sentencia2;

}

else

{

sentencia3;

sentencia4;

}

Que quiere decir: Si se cumple la
"condición" se ejcutará la sentencia1 y la
sentencia2, en caso contrario se ejecutará la 3 y la
4
.

La Estructura WHILE

  • Prog015

/* Prog015.cpp */#include <stdio.h>void
main(){int x;x=0;while (x<6) { printf("nEl valor de x es %d
",x);

x=x+1;

}

}

  • Estructura de programación
    WHILE:

While (condición)

{

sentencia1;

sentencia2;

sentencia3;

————;

————;

}

Que quiere decir: mientras se cumpla la
"condición", ejecuta las sentencias que hay entre
llaves.

  • Observemos nuestro programa:

1) Definimos una variable entera (int) de nombre:
x

2) Inicializamos el valor de la variable "x"
a 0

3)

while (x<6)

{

printf("nEl valor de x es %d ",x);

x=x+1;

}

Es decir: Mientras el valor de la variable "x"
sea inferior al número 6

Escribe en pantalla el valor de
"x"

El valor de "x" es igual al anterior valor de
"x" pero + 1

Veamos:

Inicialmente el valor de x=0, por lo tanto se cumple
la condición del "While":

En pantalla aparecerá 0

Y el nuevo valor de "x" será
1.

Cómo el valor actual de "x" es 1, se cumple
la condición:

En pantalla aparecerá 1

Y el nuevo valor de "x" será 2.

Cómo el valor actual de "x" es 2, se cumple
la condición:

En pantalla aparecerá 2

Y el nuevo valor de "x" será 3.

Cómo el valor actual de "x" es 3, se cumple
la condición:

En pantalla aparecerá 3

Y el nuevo valor de "x" será 4.

Cómo el valor actual de "x" es 4, se cumple
la condición:

En pantalla aparecerá 4

Y el nuevo valor de "x" será 5.

Cómo el valor actual de "x" es 5, se cumple
la condición:

En pantalla aparecerá 5

Y el nuevo valor de "x" será 6.

Cómo el valor actual de "x" es 6, ya no
cumplirá la condición. Es decir "saldremos
del While" y se acaba nuestro programa.

  • El contador:

La sentencia x=x+1 se llama "contador" y es
muy usada en programación como irás
viendo.

Contadores:

  • Prog016

/* Prog016.cpp */

#include <stdio.h>

void main()

{

int i,j;

i=2;

j=7;

while (i<j)

{

printf("n i= %d — j= %d
",i,j);

i++;

j–;

}

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog016.cpp
    en TuCarpeta.
  • Ejecútalo un par o tres de
    veces

Estudio del Prog016:

  • i++

Es equivalente a escribir i=i+1

  • j—

Es equivalente a escribir j=j-1

Vamos a hacer un programa que repita 10 veces
nuestro nombre. Está claro que la solución al
problema es el uso de un "contador" dentro de un
"While".

  • Prog017

/* Prog017.cpp */#include <stdio.h>void
main(){int x;char nom[20];x=1;printf("nEscribe tu nombre:
");scanf("%s",nom);

while (x<=10)

{

printf("%d – ",x);

printf("%s n",nom);

x++;

}

}

  • Prog018

/* Prog018.cpp */

#include <stdio.h>

void main()

{

double num,sum,pro;

sum=0;

pro=1;

printf("nEscribe un número diferente de
0 = ");

scanf("%lf",&num);

while (num != 0)

{

sum=sum+num;

pro=pro*num;

printf("nNúmero= %lf Suma= %lf Producto= %lf ",num,sum,pro);

printf("nNuevo número (para acabar
escribe 0)= ");

scanf("%lf",&num);

}

printf("nnnSuma Total= %lf Producto Total=
%lf",sum,pro);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog018.cpp
    en TuCarpeta.
  • Ejecútalo un par o tres de
    veces

Observa:

  • Contador SUMA:

sum = sum + num

Es la forma que conseguimos acumular en la
suma (variable sum) los diferentes valores de
num.

  • Contador PRODUCTO:

pro = pro * num

Es la forma que conseguimos acumular en el producto
(variable pro) los valores
de num.

  • Observa también que la suma hemos de
    inicializarla por cero y el producto por
    uno.

La Estructura de Programación
FOR

  • Prog019

/* Prog019.cpp */

#include <stdio.h>

void main()

{

int x;

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

{

printf("nEstructura FOR ");

printf("Ahora x= %d",x);

}

}

Estudio del PROG019:

  • La Estructura FOR:

for(valor inicial,valor final, paso)

{

sentencia 1;

sentencia 2;

————-;

————-;

}

Que quiere decir: Repite la ejecución de
las sentencias de programa que hay encerradas entre llaves,
tantas veces como te indico en "valor inicial, valor final,
paso".

  • for(x=1;x<=10;x=x+1)

Las líneas de programa de nuestro "for" se
repetiran: desde x=1 hasta x=10 de 1 en 1, es decir 10
veces.

Si escribiéramos:
for(x=23;x<=76;x=x+4), querría decir: repite
las líneas de programa desde x=23 hasta x=76 de 4 en
4.

Podríamos hacerlo más sofisticado:
for(i=-0.23;i>=-67.78;i=i-1.567). Que traducido
dice: repite las líneas de programa que hay dentro del
"for" desde 1=0.23 hasta i=-67.78 de –1.567 en
–1.567

  • Prog020

/* Prog020.cpp */

#include <stdio.h>

void main()

{

int edad,indice;

char nom[25];

printf("Escribe tu nombre: ");

scanf("%s",nom);

printf("nEscribe tu edad: ");

scanf("%d",&edad);

for(indice=1;indice<=edad;indice++)

printf("n%s",nom);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog020.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Observa:

  • Si es una sola la sentencia a repetir por el "for",
    no se encierra entre llaves (en este aspecto funciona igual
    que la estructura IF-ELSE).
  • Recuerda que indice++ es equivalente a
    indice=indice+1
  • Podemos introducir en "los límites del for" una variable (en
    nuestro caso edad)
  • Prog021

/* Prog021.cpp */

#include <stdio.h>

void main()

{

int mult;

float total;

total=0;

for(mult=11;mult<3000;mult=mult+11)

{

printf("%d-",mult);

total=total+mult;

}

printf("nnSuma= %f",total);

}

Ejecútalo varias veces hasta descubrir lo que
hace el programa.

Vamos a hacer un programa que sirva para calcular el
factorial de un número. Recuerda que el factorial
de un número x es 1*2*3*4….*x

– Prog022

/* Prog022.cpp */

#include <stdio.h>

void main()

{

int i,num;

double fa;

printf("nCálculo del factorial del
número: ");

scanf("%d",&num);

fa=1;

for(i=1;i<=num;i++) fa=fa*i;

printf("nEl Factorial de %d es
%lf",num,fa);

}

Observa la línea que contiene el for:
como sólo contiene una instrucción, puede
escribirse todo el "ciclo for" en una sóla
línea de programa.

Vamos a hacer un programa que calcule la suma de los
10 primeros múltiplos del número que
queramos.

– Prog023

/* Prog023.cpp */

#include <stdio.h>

void main()

{

int num,i;

double sum,mult;

printf("nMúltiplos de qué
número: ");

scanf("%d",&num);

sum=0;

for(i=1;i<=10;i++)

{

mult=num*i;

printf("nMúltiplo=
%lf",mult);

sum=sum+mult;

printf("nSuma Parcial=
%lf",sum);

}

printf("nSuma Total= %lf",sum);

}

Vamos a hacer un programa que calcule la tabla de
valores
de una función dada.

– Prog024

/* Prog024.cpp */

#include <stdio.h>

void main()

{

float x1,x2,paso;

float y,i;

printf("nTabla de valores para la función
Y=X*X-5*X+10");

printf("nnIntroduce el valor menor de X:
");

scanf("%f",&x1);

printf("nIntroduce el valor mayor de X:
");

scanf("%f",&x2);

printf("nIntroduce el incremento del valor de X:
");

scanf("%f",&paso);

for(i=x1;i<=x2;i=i+paso)

{

y=i*i-5*i+10;

printf("nX= %15f Y= %15f",i,y);

}

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog024.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

La notación %15f indica que la variable
correspondiente ocupará 15 espacios en
pantalla.

Al ejecutar el programa anterior, nos podemos
encontrar con una serie de problemas,
por ejemplo si introducimos en el valor menor de x (x1),
un valor que sea mayor que el introducido en la variable
x2, o también puede suceder que en la variable
paso escribamos un número negativo.

Escribe a partir del programa
Prog024:

  • Prog025

/* Prog025.cpp */

#include <stdio.h>

void main()

{

float x1,x2,paso;

float y,i;

printf("nTabla de valores para la
función Y=X*X-5*X+10");

printf("nnIntroduce el valor menor de X:
");

scanf("%f",&x1);

printf("nIntroduce el valor mayor de X:
");

scanf("%f",&x2);

if (x1>x2)

{

printf("nLo siento, vuelve a
intentarlo");

return;

}

printf("nIntroduce el incremento del valor de
X: ");

scanf("%f",&paso);

if(paso<=0)

{

printf("nLo siento, vuelve a
intentarlo");

return;

}

for(i=x1;i<=x2;i=i+paso)

{

y=i*i-5*i+10;

printf("nX= %15f Y=
%15f",i,y);

}

}

Ejecútalo varias veces, probando los casos
"conflictivos": x1>x2 o paso=0 o paso negativo.

Está claro que la sentencia return,
sirve para acabar el programa.

F) La biblioteca <math.h>

  • Prog026

/* Prog026.cpp */

#include <stdio.h>

#include <math.h>

void main()

{

double catet1,catet2,hipot;

printf("nCálculo de la hipotenusa de un
T.R.");

printf("n===================================");

printf("nnIntroduce el valor de un cateto:
");

scanf("%lf",&catet1);

printf("nIntroduce el valor del otro cateto:
");

scanf("%lf",&catet2);

hipot=sqrt(catet1*catet1+catet2*catet2);

printf("nnHIPOTENUSA:
%lf",hipot);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog026.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Estudio del PROG026:

  • En el programa utilizamos la función
    sqrt, que calcula la raíz
    cuadrada.
  • Para poder utilizar la función matemática sqrt, necesitamos
    "incluir" la biblioteca "C", que contiene las funciones
    matemáticas. En nuestro caso es la
    biblioteca: math.h, por esta razón
    necesitamos la sentencia #include
    <math.h>

Nos gustaría la posibilidad de calcular 300
hipotenusas. Vamos a mejorar el programa anterior para que sea
más cómodo calcularlas.

  • Prog027

/* Prog027.cpp */

#include <stdio.h>

#include <math.h>

void main()

{

double catet1,catet2,hipot;

char pregunta[1];

pregunta[0]='s';

while
((pregunta[0]=='s')||(pregunta[0]=='S'))

{

printf("nCálculo de la hipotenusa de un
T.R.");

printf("n===================================");

printf("nnIntroduce el valor de un cateto:
");

scanf("%lf",&catet1);

printf("nIntroduce el valor del otro cateto:
");

scanf("%lf",&catet2);

hipot=sqrt(catet1*catet1+catet2*catet2);

printf("nnHIPOTENUSA:
%lf",hipot);

printf("nnnSi quieres calcular otra
hipotenusa pulsa");

printf(" la tecla [s] y a continuación
[Return], en caso");

printf(" contrario pulsa cualquier otra
");

scanf("%s",pregunta);

}

}

  • Prog028

/* Prog028.cpp */

#include <stdio.h>

#include <math.h>

/* Programa que calcula el tipo de soluciones
*/

/* de una ecuación polinómica de
2º grado */

void main()

{

double a,b,c,discr;

/* a,b,c representan los coeficientes de la
*/

/* ecuación */

/* */

/* discr= es el discriminante de la
ecuación*/

/* discr= b*b – 4*a*c */

printf("nEscribe el coeficiente del
término de 2º grado: ");

scanf("%lf",&a);

if(a==0)

{

printf("nEste programa sólo sirve para
ecuaciones
de 2º grado");

return;

}

printf("nEscribe el coeficiente del
término de 1r. grado: ");

scanf("%lf",&b);

printf("nEscribe el termino independiente:
");

scanf("%lf",&c);

discr=b*b-4*a*c;

printf("nDiscriminante de la ecuación=
%lf",discr);

if(discr==0) printf("nnSolución
Doble");

if(discr<0) printf("nnSoluciones
Imaginarias");

if(discr>0) printf("nnSoluciones Reales y
diferentes");

}

  • Pruébalo varias veces, por ejemplo
    para:

a=1, b=1, c=1

a=0

a=2, b=-6, c=-20

a=1, b=4, c=4

  • Prog029

/* Prog029.cpp */

#include <stdio.h>

#include <math.h>

void main()

{

double A,B,C,x1,x2,Disc;

printf("Resolución de la ecuación
Ax^2+Bx+C=0 n");

printf("nEscribe los valores de A, B y
Cn");

printf("A=");scanf("%lf",&A);

printf("B=");scanf("%lf",&B);

printf("C=");scanf("%lf",&C);

if(A==0)

{

printf("nError!, esto es una ecuación de
1r. grado");

return;

}

else

{

Disc=B*B-4*A*C;

if(Disc>0)

{

x1=(-B+sqrt(Disc))/(2.0*A);

x2=(-B-sqrt(Disc))/(2.0*A);

printf("nSolución x1=
%lf",x1);

printf("nSolución x2=
%lf",x2);

}

else

if(Disc==0)

{

x1=(-B)/(2.0*A);

printf("nSolución Doble=
%lf",x1);

}

else printf("nError: Raices
Imaginarias");

}

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog029.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Observa el "anidamiento" de if –
else
.

  • Prog030

/* Prog030.cpp */

#include <stdio.h>

#include <math.h>

void main()

{

double gra,rad;

double pi=3.141592;

printf(" Grados Radianes Seno Coseno
Tangente");

for(gra=0;gra<=270;gra=gra+15)

{

rad=pi*gra/180;

printf("n%11lf %11lf %11lf %11lf
%11lf",gra,rad,sin(rad),cos(rad),tan(rad));

}

}

Observa:

  • sin(), cos(), tan() son funciones que
    contiene la biblioteca math.h
  • Como puedes observar las fórmulas anteriores
    funcionan en radianes (y double).
  • Prog031

/* Prog031.cpp */

#include <stdio.h>

#include <math.h>

void main()

{

double num;

char volver[1];

volver[0]='s';

while
((volver[0]=='s')||(volver[0]=='S'))

{

printf("nEscribe un número:
");

scanf("%lf",&num);

if (num<=0)

{

printf("nLos logaritmos de este número no
existen");

return;

}

printf("nnnEl Logaritmo Neperiano de %lf es
%lf

",num,log(num));

printf("nEl Logaritmo Decimal de %lf es
%lf

",num,log10(num));

printf("nn¿Quieres volver a comenzar
(S/N)? ");

scanf("%s",volver);

}

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog031.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

Que quede claro que las funciones log(),
log10()
están en la biblioteca math.h. Es
decir, cuando necesites utilizarlas deberás incluir en
tu programa: #include <math.h>

G) Las sentencias BREAK y CONTINUE

  • Prog032

/* Prog032.cpp */

#include <stdio.h>

void main()

{

int x;

for(x=5;x<15;x++)

{

if(x==8) break;

printf("n x= %d",x);

}

printf("nn");

for(x=5;x<15;x++)

{

if(x==8) continue;

printf("n x=%d ",x);

}

}

Estudio del PROG032:

  • La sentencia break nos obliga a salir del
    ciclo for. Por esta razón el primer "for" del
    programa, sólo escribe del 5 hasta el 7.
  • La sentencia continue salta al final del
    ciclo for y continua ejecutando el ciclo. Por esta
    razón el segundo ciclo for escribe todos los
    números del 5 al 14 exceptuando el 8.
  • Prog033

/* Prog033.cpp */

#include <stdio.h>

void main()

{

int i;

char sn[1];

char sn2[1];

printf("2");

for(i=4;i<=1000;i=i+2)

{

printf("nQuieres continuar (S/N)?
");

scanf("%s",sn);

if ((sn[0]=='n')||(sn[0]=='N'))
break;

printf("nQuieres que me salte el próximo
número par (S/N)?

");

scanf("%s",sn2);

if ((sn2[0]=='s')||(sn2[0]=='S'))
continue;

printf("n%d",i);

}

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog033.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces

H) La estructura de programación
SWITCH

  • Prog034

/* Prog034.cpp */

#include <stdio.h>

#include <math.h>

void main()

{

int x;

double num;

char sn[1];

sn[0]='s';

while ((sn[0]=='s')||(sn[0]=='S'))

{

printf("n (1) EL TRIPLE");

printf("n (2) EL CUADRADO");

printf("n (3) LOGARITMO
NATURAL");

printf("n (4) LOGARITMO
DECIMAL");

printf("n (5) SENO");

printf("n (6) COSENO");

printf("nnn Escribe el número de la
opción que desees: ");

scanf("%d",&x);

switch(x)

{

case 1:

printf("nnEscribe el número:
");

scanf("%lf",&num);

printf("nEl triple de %lf es
%lf",num,3*num);

break;

case 2:

printf("nnEscribe el número:
");

scanf("%lf",&num);

printf("nEl cuadrado de %lf es
%lf",num,num*num);

break;

case 3:

printf("nnEscribe el número:
");

scanf("%lf",&num);

printf("nEl logaritmo neperiano de %lf es
%lf",num,log(num));

break;

case 4:

printf("nnEscribe el número:
");

scanf("%lf",&num);

printf("nEl logaritmo decimal de %lf es
%lf",num,log10(num));

break;

case 5:

printf("nnEscribe el número:
");

scanf("%lf",&num);

printf("nEl seno de %lf es
%lf",num,sin(num));

break;

case 6:

printf("nnEscribe el número:
");

scanf("%lf",&num);

printf("nEl coseno de %lf es
%lf",num,cos(num));

break;

default:

printf("nnEsto no es ninguna opción
");

break;

}

printf("nnnQuieres volver a calcular (S/N)?
");

scanf("%s",sn);

}

}

  • Estructura de programación SWITCH:

switch(x)

{

case valor1:

línea de programa1;

línea de programa2;

———————–;

———————–;

break;

case valor2:

línea de programa3;

línea de programa4;

———————–;

———————–;

break;

default:

línea de programa1;

línea de programa2;

———————–;

———————–;

break;

}

Según el valor que tome la variable x,
se ejecutarán las líneas de programa del
case correspondiente. Observa que cada case
termina con break. Si la variable x no toma el
valor de ningún case, se ejecutarán las
líneas correspondientes al "default", que termina
con el correspondiente break.

  1. Otro código de formato:
    %o
  • Prog035

/* Prog035.cpp */

/* Programa que convierte un número
decimal entero a octal */

#include<stdio.h>

#include<conio.h> /* Porque utilizo:
getch() */

void main()

{

int numero;

printf("Numero entero en decimal:
");

scanf("%d", &numero);

printf("nnSu representacion en octal es
%o");

/* Observa que no es necesario escribir el nombre
de la

variable. Toma nota del código de formato
de un

número en octal: %o */

printf("nPresione cualquier tecla para
terminar…n");

getch();

}

Un número entero en decimal quiere decir en
base 10, un número en octal quiere decir en base
8

Si tubiéramos de pasar un número en base
10 a base 8 "a mano", deberíamos hacer lo siguiente, por
ejemplo con el número 85:

85: 8 = 10, resto=5

10:8 = 1, resto = 2

Iríamos dividiendo el número y sus
cocientes sucesivos por 8, hasta que no pudiéramos
más.

El número correspondiente en base 8,
serían los diferentes restos y el último
cociente, escritos al revés, en nuestro ejemplo: 85 en
base 10 = 125 en base 8. Como puedes comprobar si ejecutas el
Prog035.cpp y ante la pregunta "Número entero
en decimal:"
escribes 85

J) Más funciones de
<math.h>

  • Prog036

/* Prog036.cpp */

/* Uso de las funciones: pow y fabs de
<math.h> */

/* Programa que encuentra las raíces de
una ecuación

cuadrada, de acuerdo a las
fórmulas:

(-b±raiz(b^2-4ac))/2a */

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main()

{

float a,b,c,x1,x2;

printf("Este programa encuentra las raíces
realesn");

printf("de la ecuación de la
forman");

printf(" ax^2+bx+c=0 n");

printf("A continuación, escriba los
coeficientesn");

printf("de la
ecuación:n");

printf("a= ");

scanf("%f",&a);

printf("b= ");

scanf("%f",&b);

printf("c= ");

scanf("%f",&c);

x1=pow(b,2);

/* La función "double pow(double base,
double exp)"

es una función que se encuentra en math.h,
que

devuelve "base" elevado a "exp".
*/

x1=x1-(4*a*c);

x1=-b+sqrt(fabs(x1));

/* La función "double fabs(double num)" es
una función

que se encuentra en math.h, que devuelve el
valor

absoluto de "num" */

x1=x1/(2*a);

x2=pow(b,2);

x2=x2-(4*a*c);

x2=-b-sqrt(fabs(x2));

x2=x2/(2*a);

printf("x1= %fn",x1);

printf("x2= %fn",x2);

getch();

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog036.cpp en
    TuCarpeta.
  • Ejecútalo un par o tres de veces
  1. La función toupper
  • Prog037

/* Prog037.cpp */

#include <ctype.h> /* función
toupper */

#include <stdio.h> /* funciones printf() y
scanf() */

#include <math.h> /* función fabs()
*/

#include <conio.h> /* función
getch() */

main()

{

char respuesta;

respuesta='';

while (respuesta!='N')

{

float x;

printf("Dame un número: ");

scanf("%f",&x);

x=fabs(x);

printf("Su valor absoluto es:
%fn",x);

printf("Presione 'N' para
salir…n");

respuesta=toupper(getch());

/* La función "int toupper(int ch)" que
está

en el fichero "ctype.h", devuelve
la

mayúscula de "ch" siempre y
cuando

sea una letra. */

}

}

  • Prog038

/* Prog038.cpp */

/* Este programa elabora el ticket de entrada y
los

resumenes de recaudación de un
espectaculo.

El precio del
Ticket depende de la edad del espectador

(niño, joven, adulto o jubilado).
*/

#include <stdio.h>

#include <conio.h>

#include <ctype.h>

void main()

{

const int precio=800; /* Precio de la butaca
*/

int edad,tarifa,butacas,totalPtas;

char opcion,tecla;

totalPtas=0;butacas=0;opcion=' ';

while (opcion != 'F')

{

printf("nOpción (Ticket,
Resumen o Fin) ? n");

opcion=getche();

opcion=toupper(opcion);

/* la función 'toupper' está en
<ctype.h> y devuelve

la letra mayúscula. */

printf("nn");

if (opcion == 'T')

{

tecla=' ';

while (tecla != 'N')

{

printf("n Edad= ?
");scanf("%d",&edad);

butacas=butacas+1;

printf("n======================================");

printf("n TICKET DE ENTRADA");

if (edad<6)

{printf("n | Niño
|");tarifa=0;};

if ((edad>=6) &&
(edad<18))

{printf("n | Joven

|");tarifa=precio/2;};

if ((edad>=18) &&
(edad<65))

{printf("n | Adulto

|");tarifa=precio;};

if (edad>=65)

{printf("n | Jubilado

|");tarifa=precio/4;};

totalPtas=totalPtas+tarifa;

printf("nn Precio =
%5d",tarifa);

printf("nn=====================================");

printf("nn");

printf("Otro Ticket (S/N) ?
n");

tecla=toupper(getche());

};

};

if (opcion=='R')

{

printf("nn RESUMEN DE VENTAS");

printf("n========================================");

printf("nn %d
Butacas",butacas);

printf("nn Total recaudado =
%d",totalPtas);

printf("nn");

}

}

}

  1. La estructura de programación "do
    – while"
  • Prog039

/* Prog039.cpp */

/* El mismo Prog037, pero utilizando la
estructura

do { } while ( )

Observa:

do {

sentencia 1;

sentencia 2;

————

} while(condición); */

#include <ctype.h>

#include<conio.h>

#include<stdio.h>

#include <math.h>

void main()

{

char respuesta;

do{

float x;

printf("Dame un número:
");

scanf("%f",&x);

x=fabs(x);

printf("Su valor absoluto es:
%fn",x);

printf("Continuar…n");

respuesta=toupper(getch());

}while(respuesta!='N');

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog039.cpp
    en TuCarpeta.
  • Ejecútalo un par o tres de
    veces
  1. Cálculo en forma
    ITERATIVA
  • Prog040

/* Prog040.cpp */

/* Sucesión de FIBONACCI (forma
iterativa)

se trata de la siguiente:
0,1,1,2,3,5,8,13,…

Es decir: cada término es igual a la
suma de

los dos anteriores */

#include <stdio.h>

void main()

{

int anterior,ultimo,aux;

anterior=0;ultimo=1;

printf(" 0");

printf("n 1");

while (ultimo<=25000)

{

aux=anterior+ultimo;

anterior=ultimo;

ultimo=aux;

if (ultimo>0)
printf("n%10d",ultimo);

}

}

  • Prog041

/* Prog041.cpp */

/* Factorial de un número sin
recursividad (forma iterativa)

El factorial de 12 es
479.001.600

El factorial de 13 es
6.227.020.800

El máximo valor que puede tomar un
"long" es 2.147.483.647

Por lo tanto éste programa sólo
puede calcular hasta el

factorial de 12. */

#include <stdio.h>

void main()

{

int i,num,fin;

long fa;

long pepps;

num=2;

printf("nnFactoriales hasta el número:
"); scanf("%d",&fin);

if (fin>=13)

{

printf("n No puedo calcular
tanto");

return;

}

while(num<=fin)

{

fa=1;

for(i=1;i<=num;i++)

{

fa=fa*i;

}

 

printf("n El factorial de %d es
tt %ld",num,fa);

/* Recuerda que el manipulador"t" fuerza
un tabulador */

num++;

}

}

  1. Las funciones getche y putchar
  • Prog042

/* Prog042.cpp */

/* La función 'getche()' lee un
caracter. Espera hasta que se

pulsa una tecla y entonces devuelve su valor.
El eco de la

tecla pulsada aparece automáticamente en
la pantalla.

La función 'putchar()' imprime un
carácter en pantalla.

Estas dos funciones están en
<conio.h> */

#include <stdio.h>

#include <conio.h>

void main()

{

char c;

printf("Escribe una letra: n");

c=getche();

if (c=='A') printf("nHas escrito una
'A'");

else

printf("nNo has escrito una
'A'");

printf("nHas escrito: ");

putchar(c);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog042.cpp
    en TuCarpeta.
  • Ejecútalo un par o tres de
    veces
  • Prog043

/* Prog043.cpp */

/* Se trata de investigar si el uso de
'getche'nos sirve

para analizar cada una de las letras que
escribimos

en una frase. */

#include <stdio.h>

#include <conio.h>

void main()

{

char frase[75];

char c;

int i;

printf("nnEscribe una frase máx 74
caracteres ");

printf("y pulsa un '.' para
acabarnn");

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

{

frase[i]=getche();

if(frase[i]=='.') break;

}

printf("nnnLa frase que has escrito es:
");

printf("nn");

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

{

if (frase[i]=='.') break;

else

putchar(frase[i]);

};

printf("%c",frase[i]);

}

  • Prog044

/* Prog044.cpp */

/* Al escribir un texto que contiene "algo" entre
parentesis

me interesa que el programa dé como
resultado el texto

original pero sin el texto entre
paréntesis */

#include <stdio.h>

#include <conio.h>

void main()

{

char frase[75],frasefin[75];

char c;

int i,j;

printf("nnEscribe una frase máx 74
caracteres ");

printf("y pulsa un '.' para
acabarnn");

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

{

frase[i]=getche();

if(frase[i]=='.') break;

}

printf("nn");

/* En los espacios en blanco escribo el
carácter 'ç' */

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

if (frase[i]==' ')

{

frase[i]='ç';

};

/* Todo lo que hay entre un '(' y un ')' escribo
caracteres

en blanco. */

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

{

if (frase[i]=='.') break;

if (frase[i]=='(')

{

for(j=i;j<=74;j++)

{

if (frase[j] != ')') frase[j]='
';

else

{

frase[j]=' ';

break;

};

};

};

};

/* Elimino todos los espacios en blanco
*/

j=0;

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

{

if (frase[i] != ' ')

{

frasefin[j]=frase[i];

j=j+1;

};

};

/* Los caracteres 'ç' vuelvo a
transformarlos en espacios en blanco */

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

{

if (frasefin[i]=='ç') frasefin[i]='
';

};

/* Escribo la cadena resultante.
*/

printf("n");

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

{

if (frasefin[i]=='.') break;

else

putchar(frasefin[i]);

};

printf("%c",frasefin[i]);

}

Recuerda:

  • Escribe el programa anterior utilizando tu
    compilador.
  • Grábalo con el nombre Prog044.cpp
    en TuCarpeta.
  • Ejecútalo un par o tres de
    veces
  • Prog045

/* Prog045.cpp */

/* El programa anterior pero en el caso de
paréntesis

anidados. Es decir si escribimos un texto
entre

paréntesis, y en su interior hay otro
texto

entre paréntesis */

#include <stdio.h>

#include <conio.h>

void main()

{

char frase[75],frasefin[75];

char c;

int i,j;

printf("nnEscribe una frase máx 74
caracteres ");

printf("y pulsa un '.' para
acabarnn");

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

{

frase[i]=getche();

if(frase[i]=='.') break;

}

printf("nn");

/* En los espacios en blanco escribo el
carácter 'ç' */

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

if (frase[i]==' ')

{

frase[i]='ç';

};

/* Todo lo que hay entre un '(' y un ')' escribo
caracteres

en blanco. */

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

{

if (frase[i]=='.') break;

if (frase[i]=='(')

{

for(j=i;j<=74;j++)

{

if (frase[j] != ')') frase[j]='
';

else

{

frase[j]=' ';

break;

};

};

};

};

/* Todo lo que hay entre un ' ' y un ')' escribo
caracteres

en blanco. */

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

{

if (frase[i]=='.') break;

if (frase[i]==')')

{

for(j=i;j>=0;j=j-1)

{

if (frase[j] != ' ') frase[j]='
';

else

{

break;

};

};

};

};

/* Elimino todos los espacios en blanco
*/

j=0;

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

{

if (frase[i] != ' ')

{

frasefin[j]=frase[i];

j=j+1;

};

};

/* Los caracteres 'ç' vuelvo a
transformarlos en espacios en blanco */

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

{

if (frasefin[i]=='ç') frasefin[i]='
';

};

/* Escribo la cadena resultante.
*/

printf("n");

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

{

if (frasefin[i]=='.') break;

else

putchar(frasefin[i]);

};

printf("%c",frasefin[i]);

}

Partes: 1, 2, 3, 4
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter