Sie sind auf Seite 1von 26

partado 2.5.

1: Crear un programa que pida al usuario que teclee cuatro letras y


las muestre en pantalla juntas, pero en orden inverso, y entre comillas dobles. Por
ejemplo si las letras que se teclean son a, l, o, h, escribiría "hola".

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 2.5.1 */
/* s020501.c */
/* */
/* Pedir al usuario 4 */
/* letras, mostrarlas en */
/* orden inverso y entre */
/* comillas */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>

int main()
{
char letra1, letra2, letra3, letra4;

printf("Introduce la primera letra: ");


scanf("%c%c", &letra1);
printf("Introduce la segunda letra: ");
scanf("%c%c", &letra2);
printf("Introduce la tercera letra: ");
scanf("%c%c", &letra3);
printf("Introduce la cuarta letra: ");
scanf("%c%c", &letra4);

printf("Al reves quedan como \"%c%c%c%c\"",


letra4, letra3, letra2, letra1 );
return 0;
}

Apartado 3.1.1a: Crear un programa que pida al usuario un número entero y diga
si es par (pista: habrá que comprobar si el resto que se obtiene al dividir entre dos
es cero: if (x % 2 == 0) ...

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 3.1.1a */
/* s030101a.c */
/* */
/* Ver si un numero es */
/* par */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>

int main()
{
int x;

printf("Escribe un numero: ");


scanf("%d", &x);

if (x%2 == 0)
printf("Es un numero par.");
if (x%2 != 0)
printf("Es un numero impar.");

return 0;
}

Apartado 3.1.1b: Crear un programa que pida al usuario dos números enteros y
diga cual es el mayor de ellos.

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 3.1.1c: Crear un programa que pida al usuario dos números enteros y
diga si el primero es múltiplo del segundo (pista: igual que antes, habrá que ver si
el resto de la división es cero: a % b == 0).

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 3.1.3a: Crear un programa que multiplique dos números enteros de la


siguiente forma: pedirá al usuario un primer número entero. Si el número que se
que teclee es 0, escribirá en pantalla "El producto de 0 por cualquier número es 0".
Si se ha tecleado un número distinto de cero, se pedirá al usuario un segundo
número y se mostrará el producto de ambos.

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */
Apartado 3.1.3b: Crear un programa que pida al usuario dos números reales. Si el
segundo no es cero, mostrará el resultado de dividir entre el primero y el segundo.
Por el contrario, si el segundo número es cero, escribirá "Error: No se puede dividir
entre cero".

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 3.1.3b */
/* s030103b.c */
/* */
/* Dividir... solo si es */
/* posible */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>

int main()
{
float x, y;

printf("Escribe un numero: ");


scanf("%f", &x);
printf("Escribe otro numero: ");
scanf("%f", &y);

if (y==0)
printf("Error: No se puede dividir entre
cero.");

if (y!=0)
printf("El resultado de su division es %f",
x/y);
return 0;
}

Apartado 3.1.4a: Crear un programa que multiplique dos números enteros de la


siguiente forma: pedirá al usuario un primer número entero. Si el número que se
que teclee es 0, escribirá en pantalla "El producto de 0 por cualquier número es 0".
Si se ha tecleado un número distinto de cero, se pedirá al usuario un segundo
número y se mostrará el producto de ambos. (Variante con "else")

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 3.1.4b: Crear un programa que pida al usuario dos números reales. Si el
segundo no es cero, mostrará el resultado de dividir entre el primero y el segundo.
Por el contrario, si el segundo número es cero, escribirá "Error: No se puede dividir
entre cero". (Variante con "else")

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 3.1.4b */
/* s030104b.c */
/* */
/* Dividir... solo si es */
/* posible (usa "else") */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>

int main()
{
float x, y;

printf("Escribe un numero: ");


scanf("%f", &x);
printf("Escribe otro numero: ");
scanf("%f", &y);

if (y==0)
printf("Error: No se puede dividir entre
cero.");
else
printf("El resultado de su division es %f",
x/y);

return 0;
}

Apartado 3.1.5a: Crear un programa que pida una letra al usuario y diga si se
trata de una vocal.

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 3.1.5a */
/* s030105a.c */
/* */
/* Ver si una letra es */
/* una vocal */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/
#include <stdio.h>

int main()
{
char x;

printf("Introduce una letra en minusculas: ");


x = getchar();
if ( (x=='a') || (x=='e') || (x=='i')
|| (x=='o') || (x=='u') )
printf("Es una vocal.");
else
printf("No es una vocal.");

return 0;
}

Apartado 3.1.5b: Crear un programa que pida al usuario dos números enteros y
diga "Uno de los números es positivo", "Los dos números son positivos" o bien
"Ninguno de los números es positivo", según corresponda.

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 3.1.5c: Crear un programa que pida al usuario tres números reales y
muestre cuál es el mayor de los tres.

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */
Apartado 3.1.5d: Crear un programa que pida al usuario dos números enteros
cortos y diga si son iguales o, en caso contrario, cuál es el mayor de ellos.

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 3.1.9a: Crear un programa que use el operador condicional para


mostrar un el valor absoluto de un número de la siguiente forma: si el número es
positivo, se mostrará tal cual; si es negativo, se mostrará cambiado de signo.

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 3.1.9b: Crear un programa que use el operador condicional para dar a
una variable llamada "iguales" (entera) el valor 1 si los dos números que ha
tecleado el usuario son iguales, o el valor 0 si son distintos.

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 3.1.9c: Usar el operador condicional para calcular el mayor de dos


números.

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 3.1.9c */
/* s030109c.c */
/* */
/* Mayor de dos numeros */
/* con operador condic. */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>

int main()
{

int a, b, mayor;

printf("Escribe un numero: ");


scanf("%d", &a);
printf("Escribe otro numero: ");
scanf("%d", &b);

mayor = (a>b) ? a : b;

printf("El mayor es %d", mayor);

return 0;
}

Apartado 3.2.1a: Crear un programa que pida al usuario su contraseña


(numérica). Deberá terminar cuando introduzca como contraseña el número 4567,
pero volvérsela a pedir tantas veces como sea necesario.

/* Ejercicio sin resolver por ahora */


Apartado 3.2.1b: Crea un programa que escriba en pantalla los números del 1 al
10, usando "while".

/* Ejercicio sin resolver por ahora */

Apartado 3.2.1c: Crea un programa que escriba en pantalla los números pares
del 26 al 10 (descendiendo), usando "while".

/* Ejercicio sin resolver por ahora */

Apartado 3.2.1d: Crear un programa calcule cuantas cifras tiene un número


entero positivo (pista: se puede hacer dividiendo varias veces entre 10).

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 3.2.1d */
/* s030201d.c */
/* */
/* Cantidad de cifras de */
/* un entero */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>

int main()
{
int numero;
int cifras = 1;
printf("Introduce un numero: ");
scanf("%d", &numero);

while(numero >= 10)


{
numero /= 10;
cifras ++;
}
printf("El numero tiene %d cifras\n", cifras);

return 0;
}

Apartado 5.1.3b: Crear un programa que pida al usuario 10 números y luego los
muestre en orden inverso (del último al primero).

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.1.4b */
/* s050104b.c */
/* */
/* Pedir 10 datos reales */
/* y mostrarlos al reves */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>

int main()
{
float datos[10];
int i;
/* Pido los datos */
printf(" Introduzca los 10 datos \n");
for (i=0; i<10; i++)
scanf("%f", &datos[i]);

/* Y muestro los datos al reves */


printf("Los numeros introducidos, al reves, son: ");
for (i=9; i>=0; i--)
printf("%f ", datos[i]);

return 0;
}

Apartado 5.2.3a: Un programa que te pida tu nombre y lo muestre en pantalla


separando cada letra de la siguiente con un espacio. Por ejemplo, si tu nombre es
"Juan", debería aparecer en pantalla "J u a n".

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.2.3a */
/* s050203a.c */
/* */
/* Espacios entre las */
/* letras de una cadena */
/* */
/* Aportado por: */
/* Pablo Rampa */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
#include <string.h>

int main()
{
int i;
char nombre[30];

printf("Escriba su nombre ");


scanf("%s", nombre);
for (i=0; i<strlen(nombre); i++)
printf("%c ", nombre[i]);

return 0;
}

Apartado 5.2.3b: Un programa que te pida tu nombre y lo muestre en pantalla


separando al revés. Por ejemplo, si tu nombre es "Juan", debería aparecer en
pantalla "nauJ".

/* Queda propuesto, por ser muy parecido a otros ya


resueltos */

Apartado 5.2.4a: Un programa que te pida una frase y la muestre en pantalla sin
espacios. Por ejemplo, si la frase es "Hola, como estás", debería aparecer en
pantalla "Hola,comoestás".

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.2.4a */
/* s050204a.c */
/* */
/* Cadena sin espacios */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
#include <string.h>

int main()
{
char frase[80];
int i;

printf("Escriba una frase ");


gets(frase);

for(i=0; i < strlen(frase); i++)


if (frase[i] != ' ')
printf("%c",frase[i]);

return 0;
}

Apartado 5.2.4b: Un programa que te pida tu nombre (usando "gets") y una cifra
numérica, y escriba tu nombre tantas veces como indique esa cifra numérica.

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.2.4b */
/* s050204b.c */
/* */
/* Cadena repetida, gets */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
#include <string.h>

int main()
{
char frase[80];
int cantidad;
int i;

printf("Dime tu nombre: ");


gets(frase);

printf("Cuantas veces lo escribimos? ");


scanf("%d", &cantidad);

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


printf("%s\n",frase);

return 0;
}

Apartado 5.2.4c: Un programa similar al anterior, pero que pida en primer lugar la
cifra numérica y después tu nombre (con "gets"), y luego escriba el nombre tantas
veces como indique esa cifra numérica.

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.2.4c */
/* s050204c.c */
/* */
/* Cadena repetida (2), */
/* con gets */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
#include <string.h>

int main()
{
char frase[80];
int cantidad;
int i;

printf("Cuantas veces escribimos el texto? ");


scanf("%d", &cantidad);
getchar(); /* Para absorber el \n */

printf("Dime el texto: ");


gets(frase);

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


printf("%s\n",frase);

return 0;
}

Apartado 5.2.5: Un programa que te pida una palabra, y la almacene en la


variable llamada "texto". Luego deberá pedir una segunda palabra, y añadirla al
final de "texto". Finalmente, deberá pedir una tercera palabra, y guardarla en la
variable "texto" y en otra variable llamada "texto2".

/* Ejercicio sin resolver por ahora */

Apartado 5.2.6a: Crear un programa que pida al usuario su contraseña. Deberá


terminar cuando introduzca como contraseña la palabra "clave", pero volvérsela a
pedir tantas veces como sea necesario.

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.2.6a */
/* s050206a.c */
/* */
/* Pedir clave de acceso */
/* de forma repetitiva */
/* */
/* Aportado por: */
/* Pablo Rampa */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
#include <string.h>

int main()
{
char intento[10];
char palabraClave[]="clave";

do
{
printf("Escriba su clave: ");
gets(intento);
}
while (strcmp(intento, palabraClave) != 0);

printf("Acceso concedido... Sea Ud. bienvenido!");

return 0;
}

Apartado 5.4a: Un programa que pida 10 nombres y los memorice. Después


deberá pedir que se teclee un nombre y dirá si se encuentra o no entre los 10 que
se han tecleado antes. Volverá a pedir otro nombre y a decir si se encuentra entre
ellos, y así sucesivamente hasta que se teclee "fin".

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.4a */
/* s0504a.c */
/* */
/* Buscar nombre en un */
/* array */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
#include <string.h>

int main()
{
int i;
char nombres[10][80];
char nombreBuscar[80];
int encontrado;

printf("\n Escriba 10 nombres: \n");

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


gets(nombres[i]);

do
{
printf("Escriba nombre a buscar, o \"fin\" para
terminar: ");
gets(nombreBuscar);
encontrado = 0;

if (strcmp(nombreBuscar, "fin") != 0)
{
for (i=0; i<10; i++)
{
if (strcmp(nombreBuscar, nombres[i])
== 0)
encontrado = 1;
}
if (encontrado == 1)
printf("Este nombre se encuentra en la
lista\n");
else
printf("Este nombre no se encuentra en
la lista\n");
}
}
while (strcmp(nombreBuscar, "fin") != 0);

return 0;
}

Apartado 5.5.2b: Un programa que permita guardar datos de "imágenes" (ficheros


de ordenador que contengan fotografías o cualquier otro tipo de información
gráfica). De cada imagen se debe guardar: nombre (texto), ancho en píxeles (por
ejemplo 2000), alto en píxeles (por ejemplo, 3000), tamaño en Kb (por ejemplo
145,6). El programa debe ser capaz de almacenar hasta 700 imágenes (deberá
avisar cuando su capacidad esté llena). Debe permitir las opciones: añadir una
ficha nueva, ver todas las fichas (número y nombre de cada imagen), buscar la
ficha que tenga un cierto nombre.

/*-------------------------*/
/* Solucion al ejercicio */
/* propuesto 5.5.2b */
/* s050502b.c */
/* */
/* Guardar hasta 700 */
/* imagenes */
/* */
/* Aportado por: */
/* Pablo Rampa */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*-------------------------*/

#include <stdio.h>
#include <string.h>

struct
{
char nombre[40];
int ancho;
int alto;
float tamanyoKB;
} imagen[700];
int main()
{
int numeroFichas=0; /* Número de fichas que ya
tenemos */
int opcion; /* La opcion del menu que elija
el usuario */
int i; /* Para bucles */
char textoTemporal[80]; /* Para busquedas */
int encontrado;

do
{
/* Menu principal */
puts("Escoja una opción:");
puts("1.- Añadir datos de una imagen");
puts("2.- Ver nombres de todas las imagenes");
puts("3.- Buscar imagen por nombre");
puts("0.- Salir");

scanf("%d", &opcion);
getchar(); /* Para absorver el \n */

switch(opcion)
{
case 1: /* Añadir un dato nuevo */
if (numeroFichas < 700) /* Si queda hueco
*/
{
printf("Nombre de la imagen: ");
gets(imagen[numeroFichas].nombre);
printf("Anchura de la imagen en Pixeles:
");
scanf("%d", &imagen[numeroFichas].ancho);
printf("Altura de la imagen en Pixeles: ");
scanf("%d", &imagen[numeroFichas].alto);
printf("Tamanyo en KB: ");
scanf("%f",
&imagen[numeroFichas].tamanyoKB);
/* Y ya tenemos una ficha más */
numeroFichas++;
} else /* Si no hay hueco para más fichas,
avisamos */
printf("Máximo de fichas alcanzado
(700)!\n");
break;
case 2: /* Mostrar todos */
for (i=0; i<numeroFichas; i++)
printf("Numero: %d, nombre: %s\n",
i, imagen[i].nombre);
break;
case 3: /* Buscar una */
printf("Nombre a buscar? ");
gets(textoTemporal);
encontrado = 0;
for (i=0; i<numeroFichas; i++)
if (strcmp(imagen[i].nombre,
textoTemporal) == 0)
{
printf("Nombre: %s; Ancho: %d; Alto:
%d; Tamanyo: %f Kb\n",
imagen[i].nombre, imagen[i].ancho,
imagen[i].alto,
imagen[i].tamanyoKB);
encontrado = 1;
}
if (!encontrado)
puts("No encontrado");
break;
}
} while (opcion != 0); /* Si la opcion es 5,
terminamos */

return 0;
}

He estado haciendo un programa en C que me ida ingresar 'n' elementos en un arreglo,


posteriormente buscar un elemento dentro de él, borrar un elemento dentro de él, y agregar un
elemento al final del arreglo.

El problema que tengo es con la última acción, la cual es agregar un elemento al final del
arreglo.

Lo que ocurre es que, al agregar el elemento al arreglo, el elemento anterior a ese es


completamente diferente al que inicialmente estaba.

Espero puedan ayudarme.

#include <stdio.h>

void buscarElemento(int a[], int size_busca, int element_Busqueda);


void borrarElemento(int b[], int size_borra, int element_Borrar);
void agregarElemento(int c[], int size_agrega, int element_Agregar);

int main()
{
int n; // Variable que determinará el número de elementos del arreglo.
int i; // Variable para recorrer el arreglo.
int elemento_Bus;
int elemento_Borr;
int elemento_Agre;

printf("Ingresa el numero de elementos del arreglo: ");


scanf("%d",&n);

int array[n]; // Creamos un arreglo de enteros, el número de elementos del arreglo


// será el número asignado a la variable 'n'.

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


{
printf("Ingresa el elemento numero %d del arreglo: ", (i+1) );
scanf("%d",&array[i]);
}

printf("\n\n");

printf("Ingresa el elemento a buscar en el arreglo: ");


scanf("%d",&elemento_Bus);
buscarElemento(array, n, elemento_Bus);

printf("Ingresa el elemento a borrar en el arreglo: ");


scanf("%d",&elemento_Borr);

borrarElemento(array, n, elemento_Borr);

printf("\n");

printf("Ingresa el elemento a agregar en el arreglo: ");


scanf("%d",&elemento_Agre);

agregarElemento(array, n, elemento_Agre);

printf("\n");

system("pause");
return 0;
}

void buscarElemento(int a[], int size_busca, int element_Busqueda)


{
int j;
int b = 0;
int hold1,hold2;
int cont = -1;

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


{
if(element_Busqueda == a[j])
{
hold1 = a[j];
hold2 = j;
b = 1;
}
}

if(b==1)
{
printf("El elemento encontrado es %d y se encuentra en la posicion %d.\n",hold1,hold2);
}
else
{
printf("Elemento no encontrado.\n");
}
}

void borrarElemento(int b[], int size_borra, int element_Borrar)


{
int j;
int c = 0;

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


{
if(element_Borrar == b[j])
{
b[j] = b[j+1];

for(j=j+1; j<size_borra; j++)


{
b[j] = b[j+1];
}
--size_borra;
c = 1;
}
}

if(c == 1)
{
printf("El arreglo sin el elemento borrado anteriormente es:");

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


{
printf("%3d",b[j]);
}
}
else
{
printf("Ese elemento NO se encuentra en el arreglo.\n");
}
}

void agregarElemento(int c[], int size_agrega, int element_Agregar)


{
int j;

c[size_agrega] = element_Agregar;

size_agrega++;

printf("El arreglo con el elemento agregado es: ");

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


{
printf("%3d",c[j]);
}
}
20. Que lea una cadena y la muestre al revés.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int indice,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);
for(x = 0;x < 50;x++)
{
if (frase[x]=='\0')
{
indice=x;
break;
}
}

printf("La frase al reves es: \n\n");

for(x = indice-1;x >=0;x--)


{
printf("%c",frase[x]);
}

printf("\n\n");

system("PAUSE");
return 0;
}

Das könnte Ihnen auch gefallen