1. Introducir una frase por teclado.Imprimirla cinco veces en filas consecutivas, pero cada impresión irá desplazada cuatro columnas hacia la derecha.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
void main()
{
int c,e,f,h=0;
char a[255],b[255];
do
{
printf("Introduce una frase: ");
fgets(a,255,stdin);//Utilizar en vez de gets (variable,nºde_caracteres,stdin que es salida por pantalla)
a[strlen(a)-1]= 0;// Para quitar el salto de linia fgets siempre lo hace
f=0;
for (c=0;c<5;c=++)
{
while (e+f<strlen(a))
{
printf("%c",a[e+f]);
e++;
}
while(e<strlen(a))
{
printf("%c",a[h]);
e++;
h++;
}
f+=4;
if(f>=strlen(a))
{
f=0;
}
e=0;
h=0;
printf("\n");
}
do
{
printf("quieres escribir otra frase, escribe s o n: ");
fgets(a,255,stdin);//mala idea mezclar scanf y fgets, problemas al hacer bucles, fgets salto de linia
a[strlen(a)-1]= 0;
}
while (strcmp(a,"s") != 0 && strcmp(a,"n") != 0);//strcmp compara
}
while(strcmp(a,"n") != 0);
}
2. Simular el lanzamiento de una moneda al aire e imprimir si ha salido cara ó cruz. Repetir el proceso tantas veces como deseemos. --- Para este ejercicio necesitaremos la función random de C. Buscad informacion.
Cuidado esta hecho con linux, random diferente
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void main()
{
char a[255];
int b;
printf("Lanzamiento de moneda\n");
do
{
b=random()%2;
if (b==0)
{
printf("Ha salido cara\n");
}
else
{
printf("Ha salido cruz\n");
}
do
{
printf("quieres lanzar otra vez la moneda, escribe s o n: ");
scanf("%s",&a);
}
while (strcmp(a,"s") != 0 && strcmp(a,"n") != 0);//strcmp compara dos cadenas si sale 0 es igual
}
while(strcmp(a,"n") != 0);
}
3. Introducir dos números por teclado y mediante un menú que calcule su suma , su resta , su multiplicación y su división.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib .h>
float pedir_numero(int contador);
int validar_num(char numero[50]);
void main()
{
int contador;
float n1,n2;
char operacion[50];
do
{
printf("Calculadora introduce dos numeros:\n");
n1=pedir_numero(contador=1);
n2=pedir_numero(contador=2);
printf("Que calculo quiere realizar:\n",n1,n2);
do
{
printf("d=division, m=multiplicación, r=resta, s=suma: ");
fgets(operacion,50,stdin);
operacion[strlen(operacion)-1]= 0;
}
while(strcmp(operacion,"d") !=0 && strcmp(operacion,"m") !=0 && strcmp(operacion,"r") !=0 && strcmp(operacion,"s") !=0);
if(strcasecmp(operacion,"d")==0)
{
if(n2==0)
{
printf("Esta operacion no se puede realizar da infinito");
}
else
{
printf("%g",n1/n2);
}
}
else if(strcasecmp(operacion,"m")==0)
{
printf("%g",n1*n2);
}
else if(strcasecmp(operacion,"r")==0)
{
printf("%g",n1-n2);
}
else
{
printf("%g",n1+n2);
}
do
{
printf("\nQuieres hacer otro calculo, escribe s o n: ");
fgets(operacion,50,stdin);
operacion[strlen(operacion)-1]= 0;
}
while (strcmp(operacion,"s") != 0 && strcmp(operacion,"n") != 0);
}
while(strcmp(operacion,"n") != 0);
}
float pedir_numero(int contador)
{
int v;
float convertido;
char numero[50];
do
{
printf("Introduce el %dº numero: ",contador);
fgets(numero,50,stdin);
numero[strlen(numero)-1]= 0;
v=validar_num(numero);
}
while(v!=0);
convertido= atof(numero);//atof stdlib.h con decimales atoi sin decimales
return convertido;
}
int validar_num(char numero[50])
{
int i=0,v=0,coma=0;
while (i<strlen(numero)&&v==0)
{
if (i == 0 && numero[i] == '-' && strlen(numero) >=2)//verificar el numero negativo
{
i++;
}
else if (numero[i] == '.' && strlen(numero) >=3 && i!= 0 && i!= strlen(numero)-1 && coma == 0)//verificar la coma
{
i++;
coma++;
}
else if(isdigit(numero[i])!=0)
{
i++;
}
else
{
v=1;
}
}
return v;
}
4. Simular el lanzamiento de una moneda al aire y que pare cuando salgan 3 caras seguidas. Imprimir el número de tiradas realizadas.
Cuidado esta hecho con linux, random diferente
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void main()
{
char a[255];
int b,v=0,c;
printf("Lanzamiento de moneda\n");
do
{
b=random()%2;
if (b==0)
{
printf("Ha salido cara\n");
c++;
}
else
{
printf("Ha salido cruz\n");
c=0;
}
if(c==3)
{
printf("Han salido tres caras seguidas, el numero de tiradas son: %d\n",v);
c=0;
v=0;
}
v++;
do
{
printf("quieres lanzar otra vez la moneda, escribe s o n: ");
scanf("%s",&a);
}
while (strcmp(a,"s") != 0 && strcmp(a,"n") != 0);//strcmp compara dos cadenas si sale 0 es igual
}
while(strcmp(a,"n") != 0);
}
No hay comentarios:
Publicar un comentario