SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Instalación y Mantenimiento               1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                          IES “Inca Garcilaso”
                                                                         Montilla (Córdoba)

                           EJERCICIOS de C

BLOQUE 1

1.- Leer dos números enteros y escribir el mayor de los dos o un mensaje si
son iguales. (Solución).

2.- Leer un carácter y dos números enteros. Si el carácter leído es un
operador aritmético calcular la operación correspondiente, si es cualquier
otro mostrar error. Hacer el programa utilizando if-else.


3.- Hacer el mismo programa usando la instrucción switch(). (Solución)



4.- Leer un número entero y visualizar su tabla de multiplicar. (Solución)



5.- Generar enteros de 3 en 3 comenzando por el 2 hasta el valor máximo
menor que 30. Calcular la suma de los enteros generados que sean divisibles
por 5.



6.- Media de una serie de números que finaliza al introducir el 999. El 999
no debe ser tenido en cuenta para la media. (Solución)


7.- Leer un número entero positivo y averiguar si es perfecto. Un nº es
perfecto cuando es igual a la suma de sus divisores excepto el mismo.
(Solución)


8.- Leer dos números enteros a y b mayores o iguales que cero y calcular su
producto mediante sumas. (Solución)



9.- Leer un número entero y averiguar si es o no múltiplo de 9. Un número es
múltiplo de 9 si la suma de sus cifras es 9 o múltiplo de 9. (Solución)




Profesor: Angel Delgado Herrador      1
Instalación y Mantenimiento               1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                          IES “Inca Garcilaso”
                                                                         Montilla (Córdoba)
10.- Generar los N primeros términos de la serie de Fibonacci. El valor de N
(entero y positivo) deberá ser leído por teclado. En esta serie los dos
primeros números son 1, y el resto se obtiene sumando los dos anteriores:
1,1,2,3,5,8,13,21,... (Solución)



11.- Presentar en la función main() el siguiente menú de opciones:
      1.- Tabla de multiplicar (leer en main() un número y en una función
      mostrar           su           tabla         de         multiplicar).
      2.- Producto por sumas (en main() leer dos números enteros mayores
      que 0 y en una función calcular su producto mediante sumas
      sucesivas).
      3.- Mostrar números comprendidos (leer dos números enteros
      cualesquiera y en función mostrar los números comprendidos entre
      ambos, no se incluyen). (Solución)

12.- Leer por teclado un numero entero N. Escribir los números primos
comprendidos entre 1 y N. Diseñar una función que permita averiguar si un
número es o no primo. (Solución)

13.- Leer una fecha en formato dia-mes-año, averiguar si es correcta e
indicar el día siguiente. (Solución)

14.- Implementar un programa que sea capaz de calcular el resultado de
aplicar    la   fórmula    siguiente    (n   i)=    n!   /(   i!   *   (n-i)!).
Para ello se dispone de dos funciones, una de ellas lee un número por teclado
que debe ser mayor o igual que cero. Teniendo en cuenta además que n
tiene que ser necesariamente mayor que i. La otra función calcula el
factorial de un número. (Solución)

15.-Mostrar los datos de un fichero de texto usando el símbolo de
redirección        del        sistema    operativo      MS-DOS.
Ejecutar: programa<fich.txt (Solución)



BLOQUE 2

1.- Cargar una tabla de p filas y q columnas, escribir la tabla en forma de
matriz y escribir la suma de las filas y las columnas.




Profesor: Angel Delgado Herrador      2
Instalación y Mantenimiento               1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                          IES “Inca Garcilaso”
                                                                         Montilla (Córdoba)
2.- Cargar un array de m números enteros decir cual es el mayor y donde
esta.

3.- Cargar un array de n enteros y calcular la media de los que estén en
posiciones pares.(Solución)

4.- Programa: Leer en la función main() un número entero "n" mayor que 2 y
menor               o                igual           que               20.
Cargar, en una función, un array de "n" números enteros. Mostrar el vector,
en         una       sola        línea,      en       otra        función.
En main() leer otro número entero y en una función contar las veces que
aparece dicho número en el array, el resultado debe indicarse en main().
(Solución)

5.- Leer, en main(), una cadena de caracteres y llamar a un función que la
modifique. En la función se deben cambiar mayúsculas por minúsculas,
minúsculas por mayúsculas y dígitos por puntos. El resultado se escribe en la
función main(). (Solución)

6.- Leer una cadena de caracteres y cortarla en palabras escribiendo cada
palabra en una línea. Se supone que las palabras se separan sólo por blancos.
(Solución)

7.- Leer un numero n y pedir n veces tres números enteros e imprimirlos
cada vez ordenados de menor a mayor. Utilizar una función que, con ayuda
de punteros, permita ordenar dos números.(Solución)

8.- Convertir una cadena de caracteres a un valor entero mediante una
función que reciba la dirección de la cadena y la dirección de la variable que
almacenará el resultado. (Se supone que hay números el la cadena).
-Buscar el comienzo del número distinto de blanco, supondremos + o -.
-Averiguar el signo, si no es un carácter valido devuelve un error.
-Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10.
-Si la función finaliza de forma correcta devuelve un uno. (Solución)

9.- Generar los N primeros términos de la serie de Fibonacci, utilizando
para ello una función en las que se trabaja con variables estáticas.
(Solución)

10.- Cargar un array bidimensional de p*q y devolver un puntero apuntando a
la fila que mas suma. (Solución)


Profesor: Angel Delgado Herrador      3
Instalación y Mantenimiento               1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                          IES “Inca Garcilaso”
                                                                         Montilla (Córdoba)
11.- Leer por teclado un número entero largo e indicar si el número leído es
o no capicúa. Para ello debe utilizarse un array unidimensional donde
almacenaremos      cada   una   de     las   cifras  del     número    leído.
Se implementarán dos funciones, una para descomponer el número en cifras
y cargar el array, y otra para comparar las posiciones del array y
determinar si el número es capicúa. (Solución)

12.- Introducir una cadena de caracteres, e indicar si la cadena leída es o no
un palíndromo (se lee igual de izquierda a derecha, que de derecha a
izquierda). Ej: Dabale arroz a la zorra el abad (Solución)

13.- Leer por teclado un número entero mayor que 0 y menor o igual que 10
para     determinar      el    rango    de     una matriz    de     enteros.
Leer un segundo número entero, que servirá para indicar el valor de
comienzo.
Cargar, recorriendo en espiral, una matriz de enteros, a partir del segundo
valor leído, y con el rango indicado. (Solución)




Profesor: Angel Delgado Herrador      4
Instalación y Mantenimiento                   1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                              IES “Inca Garcilaso”
                                                                             Montilla (Córdoba)

    SOLUCIONES EJERCICIOS de C

BLOQUE 1

1.- Leer dos números enteros y escribir el mayor de los dos o un mensaje si
son iguales.

Solución: .


/*Leer dos números enteros y escribir el mayor de ambos o un mensaje si son
iguales.*/

#include <stdio.h>

void main()
{
 int a,b;
 printf("Dame dos numeros... ");
 scanf("%d%d",&a,&b);
 if (a>b)
    printf("El mayor numero es... %d",a);
 else
    if (b>a)
       printf("El numero mayor es.... %d",b);
    else
       printf("Los numeros son iguales");
}




2.- Leer un carácter y dos números enteros. Si el carácter leído es un
operador aritmético calcular la operación correspondiente, si es cualquier
otro mostrar error. Hacer el programa utilizando if-else.


3.- Hacer el mismo programa usando la instrucción switch().

Solución:

/* Leer un carácter y dos números enteros. Si el carácter leído es un operador
aritmético calcular la operación correspondiente, si es cualquier otro mostrar
error. Hacer el programa utilizando la instrucción switch() */

Profesor: Angel Delgado Herrador          5
Instalación y Mantenimiento                  1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                             IES “Inca Garcilaso”
                                                                            Montilla (Córdoba)
#include <stdio.h>
void main()
{
  char c;
  int a,b;
  printf("dame un caractern");
  c=getchar();
  fflush (stdin);
  printf("dame dos numerosn");
  scanf("%d %d",&a,&b);
  switch (c)
  {
   case '+':
      printf("resultado %d",a+b);
      break;
   case '-':
      printf("resultado %d",a-b);
      break;
   case '*':
      printf("resultado %d",a*b);
      break;
   case '/':
      printf("resultado %d",a/b);
      break;
   default:
      printf("error");
   }
}



4.- Leer un número entero y visualizar su tabla de multiplicar.

Solución:

/* Leer un número entero y visualizar su tabla de multiplicar. */

#include <stdio.h>
void main()
{
 int a,b;
 printf ("Introduce el número:");
 scanf("%d",&a);
 b=1;
 while (b<=10)
 {
   printf("%d * %d = %dn",a,b,a*b);
   b++;
 }
}

Profesor: Angel Delgado Herrador         6
Instalación y Mantenimiento                     1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                                IES “Inca Garcilaso”
                                                                               Montilla (Córdoba)
5.- Generar enteros de 3 en 3 comenzando por el 2 hasta el valor máximo
menor que 30. Calcular la suma de los enteros generados que sean divisibles
por 5.



6.- Media de una serie de números que finaliza al introducir el 999. El 999
no debe ser tenido en cuenta para la media.

Solución:

/* Media de una serie de números que finaliza al introducir el 999. El 999 no
debe ser tenido en cuenta para la media. */

#include <stdio.h>

void main()

{

int n,c=0,s=0;

// Típico esquema mientras.

// Se lee el primer elemento de la secuencia fuera del bucle

printf("Dame el primer nº:");

scanf("%d",&n);

while(n!=999)

{

          s+=n; // Se trata el elemento leído

              c++;

              printf("Dame el siguiente nº:"); // Se obtiene el siguiente elemento

              scanf("%d",&n);

          }

          if (c) // Sólo se podrá dividir si en la secuencia hay algún nº

              printf("nLa media de los números es %.2fn",(float)s/c);

          else
Profesor: Angel Delgado Herrador            7
Instalación y Mantenimiento                       1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                                  IES “Inca Garcilaso”
                                                                                 Montilla (Córdoba)
             printf("nNo se ha leído ningún número.n");

         }
7.- Leer un número entero positivo y averiguar si es perfecto. Un nº es
perfecto cuando es igual a la suma de sus divisores excepto el mismo.

Solución:

/* Leer un entero positivo y averiguar si es perfecto. Un nº es perfecto cuando
es igual a la suma de sus divisores excepto el mismo */

#include <stdio.h>

void main()
{
  int i,numero,suma=0;
  do{
    printf("Dame un numero:");
    scanf("%d",&numero);
  } while (numero<=0);

    for (i=1;i<=(numero/2);i++)
       if ((numero%i)==0)
          suma+=i;

    if (numero==suma)
       printf("El numero es perfecto.");
    else
       printf("El numero NO es perfecto.");
}




8.- Leer dos números enteros a y b mayores o iguales que cero y calcular su
producto mediante sumas.

Solución:

/* Leer dos números enteros a y b mayores o iguales que cero y calcular su
producto mediante sumas sucesivas. (Se usan, a modo de ejemplo, los tres
esquemas repetitivos existentes en C.*/

#include <stdio.h>

void main()
{
  int a,b,c,i,producto=0;


Profesor: Angel Delgado Herrador              8
Instalación y Mantenimiento                    1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                               IES “Inca Garcilaso”
                                                                              Montilla (Córdoba)
    do{
      printf("Dame un a:");
      scanf("%d",&a);
    } while (a<0);

    do{
      printf("Dame b:");
      scanf("%d",&b);
    } while (b<0);

// Suponemos que a es mayor que b en caso contrario se hace un intercambio

    if (a<b)
    {
      c=a;
      a=b;
      b=c;
    }
    printf("a=%d b=%dn",a,b);

    for (i=0;i<b;i++)
          producto+=a;
    printf("El producto con for es: %dn",producto);

    producto=0;
    i=0;
    while (i<b)
    {
      producto+=a;
      i++;
    }
    printf("El producto con while es: %dn",producto);

    producto=0;
    i=0;
    do      /* con este bucle al multiplicar por cero */
    { /* me daria "a" */
       producto+=a;
       i++;
    } while (i<b);
    printf("El producto con do-while es: %d",producto);
}

9.- Leer un número entero y averiguar si es o no múltiplo de 9. Un número es
múltiplo de 9 si la suma de sus cifras es 9 o múltiplo de 9.

Solución:

/* Leer un numero entero y averiguar si es o no múltiplo de 9. Un nº es múltiplo
de 9 si la suma de sus cifras es 9 o múltiplo de 9.
Profesor: Angel Delgado Herrador           9
Instalación y Mantenimiento                         1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                                    IES “Inca Garcilaso”
                                                                                   Montilla (Córdoba)
Ej.: 99 es múltiplo pues 9+9=18, que a su vez 1+8=9 */

#include <stdio.h>

void main()

{

int numero,sumacifras,s;

printf("Dame un numero: ");

scanf("%d",&numero);

s=numero;

while (numero>9)

{

sumacifras=(numero%10);                 //Inicializamos sumacifras con el primer resto.

while ((numero/=10)!=0)                //Mientras la parte entera de la división sea distinta
de 0

    sumacifras+=(numero%10);                //Seguimos sumando los restos

numero=sumacifras;                //Asignamos la suma de las cifras al número

}

if (numero==9)                   //Al salir si el número es igual a 9 es múltiplo

printf("El numero %d, es multiplo de 9.",s);

else

printf("El numero %d, NO es multiplo de 9.",s);

}

10.- Generar los N primeros términos de la serie de Fibonacci. El valor de N
(entero y positivo) deberá ser leído por teclado. En esta serie los dos
primeros números son 1, y el resto se obtiene sumando los dos anteriores:
1,1,2,3,5,8,13,21,...

Solución:



Profesor: Angel Delgado Herrador                  10
Instalación y Mantenimiento              1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                         IES “Inca Garcilaso”
                                                                        Montilla (Córdoba)
/* Generar los N primeros términos de la serie de Fibonacci. El valor de N
(entero y positivo) deberá ser leído por teclado. En esta serie los dos primeros
números son 1, y el resto se obtiene sumando los dos anteriores:
1,1,2,3,5,8,13,21,... */

#include <stdio.h>
void main()
{
  int n,a,b,c,aux;
  do{              // Se lle el número hasta que sea mayor que cero.
     printf("nDame un numero :");
     scanf("%d",&n);
  } while(n<=0);
  a=1;b=0;
  for(c=1;c<=n;c++)
  {
    printf("%dt",a);
    aux=a;
    a+=b;
    b=aux;
  }
}

11.- Presentar en la función main() el siguiente menú de opciones:
      1.- Tabla de multiplicar (leer en main() un número y en una función
      mostrar           su          tabla          de         multiplicar).
      2.- Producto por sumas (en main() leer dos números enteros mayores
      que 0 y en una función calcular su producto mediante sumas
      sucesivas).
      3.- Mostrar números comprendidos (leer dos números enteros
      cualesquiera y en función mostrar los números comprendidos entre
      ambos, no se incluyen).

Solución:

/* Programa: Presentar en la función main() el siguiente menú de opciones:
1.- Tabla de multiplicar (leer en main() un número y en una función mostrar su
tabla de multiplicar).
2.- Producto por sumas (en main() leer dos números enteros mayores que 0 y
en una función calcular su producto mediante sumas sucesivas).
3.- Mostrar números comprendidos (leer dos números enteros cualesquiera y
en función mostrar los números comprendidos entre ambos, no se incluyen). */

#include <stdio.h>
void tabla(int);
void producto(int,int);
void numeros(int,int);


Profesor: Angel Delgado Herrador       11
Instalación y Mantenimiento         1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                    IES “Inca Garcilaso”
                                                                   Montilla (Córdoba)
void main()
{
 int op,n,m;
 do {
   system ("cls");
   printf ("n MENÚ DE OPCIONES");
   printf ("n ================n");
   printf ("n 1.- TABLA DE MULTIPLICARn");
   printf ("n 2.- PRODUCTO POR SUMASn");
   printf ("n 3.- MOSTRAR NÚMEROS COMPRENDIDOS ENTRE DOSn");
   printf ("n 4.- SALIR nnnn");
   printf ("n ELIGE UNA OPCION : ");
   scanf ("%d",&op);
   switch (op)
   {
   case 1:
     system ("cls");
     printf ("n Dame un número : ");
     scanf ("%d",&n);
     tabla(n);       // Llamada a la función
     printf ("n");
     system("pause");
     break;
   case 2:
     system ("cls");
     do{
       printf ("n Dame un número : ");
       scanf ("%d",&n);
      }while (n < 0);
      do{
       printf ("n Dame otro número : ");
       scanf ("%d",&m);
      }while (m < 0);
      producto(n,m);
      printf ("n");
      system("pause");
      break;
   case 3:
     system ("cls");
     printf ("n Dame un n£mero : ");
     scanf ("%d",&n);
     printf ("n Dame un n£mero : ");
     scanf ("%d",&m);
     numeros(n,m);
     printf ("n");
     system("pause");
     break;
   }
  }while (op != 4);
}

Profesor: Angel Delgado Herrador   12
Instalación y Mantenimiento                 1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                            IES “Inca Garcilaso”
                                                                           Montilla (Córdoba)
void tabla(int n)
{
 int c,p=1;
 for (c=1;c<=10;c++)
 {
   p=n* c;
   printf ("n %d * %d = %d",n ,c,p);
 }
return;
}

void producto(int n, int m)
{
 int c,sum=0,aux;
 if (n > m) // Se supone n el menor, en caso de no serlo se intercambian los
valores
 {
  aux=n;
  n=m;
  m=aux;
 }
 for (c=1;c<=n;c++) sum+=m;
 printf ("n El producto por sumas es %d",sum);
 return;
}

void numeros(int n, int m)
{
 int c,aux;
 if (n > m)
 {
  aux = n;
  n = m;
  m = aux;
 }
 if (n+ 1 >= m) printf ("n No hay números n");
 else for (c=n + 1;c < m ;c++) printf ("n %d",c);
 return;
}


12.- Leer por teclado un numero entero N. Escribir los números primos
comprendidos entre 1 y N. Diseñar una función que permita averiguar si un
número es o no primo.
Solución:

/* Leer por teclado un numero entero N. Escribir los números primos comprendidos
entre 1 y N. Diseñar una función que permita averiguar si un número es o no primo. */


Profesor: Angel Delgado Herrador          13
Instalación y Mantenimiento                     1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                                IES “Inca Garcilaso”
                                                                               Montilla (Córdoba)
#include <stdio.h>

#define TRUE 1
#define FALSE 0

int primo(int);

void main()
{
  int n,i;
  printf("nDame un numero:");
  scanf("%d",&n);
  for (i=1;i<=n;i++)
    if(primo(i))
      printf(" %d ",i);
}

int primo (int n)
{
 int i;
 for (i=2;i<=(n/2);i++)
   if((n%i)==0)
      return FALSE;
 return TRUE;
}

13.- Leer una fecha en formato dia-mes-año, averiguar si es correcta e
indicar el día siguiente.
Solución:

/* Leer una fecha en formato dia-mes-año, averiguar si es correcta e indicar el día
siguiente. */

#include <stdio.h>
#define TRUE 1
#define FALSE 0

int correcta_fecha(int,int,int);
int bisiesto(int);

void main()
{
  int dia,mes,anio;
  printf("Dame una fecha:(dd-mm-aaaa)");
  scanf("%d-%d-%d",&dia,&mes,&anio);
  if (!correcta_fecha(dia,mes,anio))
     printf("nLa fecha no es correcta.");
}

int correcta_fecha(int dia,int mes,int anio)
Profesor: Angel Delgado Herrador               14
Instalación y Mantenimiento                 1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                            IES “Inca Garcilaso”
                                                                           Montilla (Córdoba)
{
 int d;
 switch (mes)
 {
   case 4:
   case 6:
   case 9:
   case 11:d=30;
              break;
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12: d=31;
              break;
   case 2: if (bisiesto(anio))
               d=29;
             else
               d=28;
             break;
   default: return FALSE;
 }
 if (dia<=d)
  {
    if (dia<d)
       dia++;
    else
    {
      dia=1;
      if (mes==12)
      {
        mes=1;
        anio++;
      }
      else
        mes++;
    }
    printf("nEl proximo dia sera:%2d-%2d-%d.",dia,mes,anio);
    return TRUE;
  }
  else
    return FALSE;
}

/* Un ano es bisiesto cuando es multiplo de 4 pero no de 100 o multiplo de 400. */
int bisiesto(int anio)
{
if ((anio%4==0 && anio%100!=0) || (anio%400==0)) return TRUE;

Profesor: Angel Delgado Herrador          15
Instalación y Mantenimiento                 1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                            IES “Inca Garcilaso”
                                                                           Montilla (Córdoba)
return FALSE;
}

14.- Implementar un programa que sea capaz de calcular el resultado de
aplicar la fórmula siguiente (n i)= n! /( i! * (n-i)!).
Para ello se dispone de dos funciones, una de ellas lee un número por teclado
que debe ser mayor o igual que cero. Teniendo en cuenta además que n
tiene que ser necesariamente mayor que i. La otra función calcula el
factorial de un número.

Solución:

/* Implementar un programa que sea capaz de calcular el resultado de aplicar
la fórmula siguiente (n i)= n! /( i! * (n-i)!).
Para ello se dispone de dos funciones, una de ellas lee un número por teclado
que debe ser mayor o igual que cero. Teniendo en cuenta además que n tiene
que ser necesariamente mayor que i. La otra función calcula el factorial de un
número. */

#include <stdio.h>

int lee_numero();
long int factorial(int);

// Programa principal.
void main()
{
 int n,i;
 printf("Valor de i...n");
 i=lee_numero();
 printf("nValor de n...n");
 do
    n=lee_numero();
 while(n<i);
 printf("Resultado %d sobre %d = %d",n,i,factorial(n)/(factorial(i)*factorial(n-i)));
}

// Funciones.
int lee_numero()
{
 int a;
 do{
   printf("Escribe un valor:");
   scanf("%d",&a);
 }while(a<0);
 return a;
}

long int factorial(int x)

Profesor: Angel Delgado Herrador          16
Instalación y Mantenimiento              1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                         IES “Inca Garcilaso”
                                                                        Montilla (Córdoba)
{
 long int f=1;
 for(;x>0;x--)
   f*=x;
 return f;
}

15.-Mostrar los datos de un fichero de texto usando el símbolo de
redirección del sistema operativo MS-DOS.Ejecutar: programa<fich.txt
Solución:

/* Mostrar los datos de un fichero de texto usando el símbolo de redirección del
sistema operativo MS-DOS. Ejecutar: programa<fich.txt
También se puede generar un archivo de texto, si se usa el símbolo de
redirección > en este caso, la entrada de datos por teclado debe finalizar al
pulsar ^Z*/

#include <stdio.h>

void main()
{
char c;
while((c=getchar())!=EOF)
     putchar(c);
}


BLOQUE 2

1.- Cargar una tabla de p filas y q columnas, escribir la tabla en forma de
matriz y escribir la suma de las filas y las columnas.

2.- Cargar un array de m números enteros decir cual es el mayor y donde
esta.

3.- Cargar un array de n enteros y calcular la media de los que estén en
posiciones pares.
Solución:
/* Cargar un array de n enteros y calcular la media de los que estén en
posiciones pares. */
#include <stdio.h>
#define MAX 100
int carga_array(int[]);
float media(int[],int);
void main()
{
  int a[MAX],eltos;

Profesor: Angel Delgado Herrador       17
Instalación y Mantenimiento               1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                          IES “Inca Garcilaso”
                                                                         Montilla (Córdoba)
  eltos=carga_array(a);
  if (eltos)
printf("nLa media es %f.",media(a,eltos));
}
int carga_array(int a[])
{
int i,num;
printf("nDame un numero:");
scanf("%d",&num);
for (i=0;i<num;i++)
{
printf("Dame un elto:");
scanf("%d",&a[i]);
}
return num;
}
float media(int a[],int eltos)
{
int i,suma=0,num=0;
for (i=1;i<eltos;i+=2)
{
suma+=a[i];
num++;
}
return ((float)suma/num);
}

4.- Programa: Leer en la función main() un número entero "n" mayor que 2 y
menor o igual que 20. Cargar, en una función, un array de "n" números
enteros. Mostrar el vector, en una sola línea, en otra función. En main() leer
otro número entero y en una función contar las veces que aparece dicho
número en el array, el resultado debe indicarse en main().
Solución:
/*Programa: Leer en la funcion main() un n£mero entero "n" mayor que 2 y
menor o igual que 20. Cargar, en una funci¢n, un array de "n" n£meros enteros.
Mostrar el vector, en una sola l¡nea, en otra funci¢n. En main() leer otro n£mero
entero y en una funcion contar las veces que aparece dicho n£mero en el array,
el resultado debe indicarse en main().*/
#include <stdio.h>
void cargar(int[],int);
void mostrar(int[],int);
int contar(int[],int,int);
void main()
{
 int n,a,t[20];
 system("cls");
 do{
   printf("¨Cuántos elementos tiene la tabla?");
   scanf("%d",&n);

Profesor: Angel Delgado Herrador        18
Instalación y Mantenimiento              1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                         IES “Inca Garcilaso”
                                                                        Montilla (Córdoba)
 }while (n<3 || n>20);
 cargar(t,n);
 system("cls");
 printf("Los elementos de la tabla son...n");
 mostrar(t,n);
 printf("nnnDame el número que vas a buscar: ");
 scanf("%d",&a);
 printf("nnEl número %d aparece %d veces en la tabla.",a,contar(t,n,a));
}
void cargar(int t[],int n)
{
 int i;
 for(i=0;i<n;i++)
 {
   printf("Elemento %d: ",i+1);
   scanf("%d",&t[i]);
 }
 return;
}
void mostrar(int t[],int n)
{
 int i;
 for(i=0;i<n;i++)
   printf("%6d",t[i]);
 return;
}
int contar(int t[],int n,int a)
{
 int i,cont=0;
 for(i=0;i<n;i++)
    if (t[i]==a) cont++;
 return cont;
}

5.- Leer, en main(), una cadena de caracteres y llamar a un función que la
modifique. En la función se deben cambiar mayúsculas por minúsculas,
minúsculas por mayúsculas y dígitos por puntos. El resultado se escribe en la
función main().
Solución:

/* Leer, en main(), una cadena de caracteres y llamar a un función que la
modifique. En la función se deben cambiar mayúsculas por minúsculas,
minúsculas por mayúsculas y dígitos por puntos. El resultado se escribe en la
función main(). */

#include <stdio.h>
void modificar (char[]);



Profesor: Angel Delgado Herrador       19
Instalación y Mantenimiento               1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                          IES “Inca Garcilaso”
                                                                         Montilla (Córdoba)
void main()
{
 char cad[30];
 printf("Dame una cadena caracteres:");
 gets(cad);
 modificar(cad);
 puts(cad);
}

void modificar(char cad[])
{
 int i;
 for(i=0;cad[i]!='0';i++)
 {
   if(isupper(cad[i]))
       cad[i]=tolower(cad[i]);
   else if(islower(cad[i]))
             cad[i]=toupper(cad[i]);
         else if(isdigit(cad[i]))
                  cad[i]='.';
 }
return;
}

6.- Leer una cadena de caracteres y cortarla en palabras escribiendo cada
palabra en una línea. Se supone que las palabras se separan sólo por blancos.
Solución:

/* Leer una cadena de caracteres y cortarla en palabras escribiendo cada
palabra en una línea. Se supone que las palabras se separan sólo por blancos.
*/

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

void escribe_palabras(char[]);

void main()
{
char frase[50];

gets(frase);
escribe_palabras(frase);
}

void escribe_palabras(char frase[])
{
char palabra[10];
int i=0,j=0;
Profesor: Angel Delgado Herrador       20
Instalación y Mantenimiento                   1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                              IES “Inca Garcilaso”
                                                                             Montilla (Córdoba)

while(frase[i]!='0')
{
while(frase[i]==' ')
i++;
j=0;
while((frase[i]!=' ') && (frase[i]!='0'))
palabra[j++]=frase[i++];

palabra[j]='0';
puts(palabra);
}

}

7.- Leer un numero n y pedir n veces tres números enteros e imprimirlos
cada vez ordenados de menor a mayor. Utilizar una función que, con ayuda
de punteros, permita ordenar dos números.
Solución:

/* Leer un numero n y pedir n veces tres números enteros e imprimirlos cada
vez ordenados de menor a mayor. Utilizar una función, que con el uso de
punteros, permita ordenar dos números. */

#include <stdio.h>

void ordena (int*,int*); // función que ordena números de dos en dos

void main()
{
  int n,i,a,b,c;

    do{
      printf("dame un número:");
      scanf("%d",&n);
    }while (n<=0);

    for (i=0;i<n;i++)
    {
      printf("Dame tres números:");
      scanf("%d-%d-%d",&a,&b,&c);
      ordena(&a,&b);
      ordena(&a,&c);
      ordena(&b,&c);
      printf("%d-%d-%dn",a,b,c);
     }
}

void ordena(int *pa,int *pb)

Profesor: Angel Delgado Herrador             21
Instalación y Mantenimiento                  1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                             IES “Inca Garcilaso”
                                                                            Montilla (Córdoba)
{
    int aux;
    if (*pa>*pb)
     {
       aux=*pa;
       *pa=*pb;
       *pb=aux;
      }
    return;
}

8.- Convertir una cadena de caracteres a un valor entero mediante una
función que reciba la dirección de la cadena y la dirección de la variable que
almacenará el resultado. (Se supone que hay números el la cadena).
-Buscar el comienzo del número distinto de blanco, supondremos + o -.
-Averiguar el signo, si no es un carácter valido devuelve un error.
-Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10.
-Si la función finaliza de forma correcta devuelve un uno.
Solución:

/* Convertir una cadena de caracteres a un valor entero mediante una función
que reciba la dirección de la cadena y la dirección de la variable que
almacenará el resultado. (Se supone que hay números el la cadena).
-Buscar el comienzo de numero distinto de blanco, supondremos + o -.
-Averiguar el signo, si no es un carácter valido devuelve un error.
-Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10.
-Si la función finaliza de forma correcta devuelve un uno. */

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

int convierte(char*,float*);

void main()
{
  char cadena[50];
  float valor;
  printf("Dame una cadena:");
  gets(cadena);
  if (convierte(cadena,&valor))
     printf("El valor es:%f",valor);
  else
     puts("ERROR");
}

int convierte(char *pcadena,float *pvalor)
{
  int neg=1,error=0;
Profesor: Angel Delgado Herrador        22
Instalación y Mantenimiento                  1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                             IES “Inca Garcilaso”
                                                                            Montilla (Córdoba)
    while(*pcadena==' ')
      pcadena++;

    if (!isdigit(*pcadena))
    {
       if (*pcadena=='-')
          neg=-1;
       else
          if (*pcadena=='+')
             neg=1;
          else
             error=1;
       pcadena++;
    }

    while ((*pcadena) && (!error))
    {
      if (!isdigit(*pcadena))
         error=1;
      else
         *pvalor=*pvalor*10+((int)(*pcadena-48));
      pcadena++;
    }

    if (error) return 0;
    *pvalor=(*pvalor)*(float)neg;
    return 1;
}

9.- Generar los N primeros términos de la serie de Fibonacci, utilizando
para ello una función en las que se trabaja con variables estáticas.
Solución:

/* Generar los N primeros términos de la serie de Fibonacci, utilizando para ello una
función en las que se trabaja con variables estáticas.*/

#include <stdio.h>

long int fibonacci(int);

void main()
{
  int n,cont;
  printf("n Cuántos números de Fibonacci??");
  scanf("%d",&n);
  for(cont=1;cont<=n;cont++)
      printf("ni=%2dt F=%ld",cont,fibonacci(cont));
}

long int fibonacci(int cont)
Profesor: Angel Delgado Herrador           23
Instalación y Mantenimiento                      1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                                 IES “Inca Garcilaso”
                                                                                Montilla (Córdoba)
{
    static long int f1=1,f2=1; // Se inicializan en la primera llamada a la función.
    long int f;
    f=(cont<3)?1:f1+f2; // if (cont<3) f=1; else f=f1+f2;
    f2=f1;                  // se denomina operador condicional
    f1=f;
    return f;
}

10.- Cargar un array bidimensional de p*q y devolver un puntero apuntando a
la fila que mas suma.
Solución:

/* Cargar un array bidimensional de p*q y devolver un puntero apuntando a la fila que
mas suma.*/

#include <stdio.h>

#define fil 5
#define col 5

void cargar_tabla(int(*)[col],int,int);
int *max_fila(int(*)[col],int,int);

void main()
{
  int p,q,array[fil][col];
  int *pfila,i;
  do{
     printf("Dame las filas:");
     scanf("%d",&p);
  }while(p<2 || p>5);
  do{
     printf("Dame las columnas:");
     scanf("%d",&q);
  }while(q<2 || q>5);
  cargar_tabla(array,p,q);
  pfila=max_fila(array,p,q);
  for (i=0;i<q;i++)
    printf(" %d ",*(pfila+i));
}

void cargar_tabla(int (*array)[col],int p,int q)
{
 int i,j;
 for(i=0;i<p;i++)
  for (j=0;j<q;j++)
  {
   printf("Dame un [%d,%d]:",i,j);
   scanf("%d",(*(array+i)+j));
Profesor: Angel Delgado Herrador               24
Instalación y Mantenimiento                      1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                                 IES “Inca Garcilaso”
                                                                                Montilla (Córdoba)
  }
 return;
}

int *max_fila(int (*array)[col],int p,int q)
{
 int i,j,suma=0,max,pos;
 for(i=0;i<p;i++)
 {
   for (j=0;j<q;j++)
     suma+=*(*(array+i)+j);
   if(!i)
    {
       max=suma; // Para no inicializar el mayor a cero si
       pos=i;        // me dan todos los números negativos
    }
   else
       if(suma>max)
        {
          max=suma;
          pos=i;
        }
      suma=0;
    }
 return (*(array+pos));
}

11.- Leer por teclado un número entero largo e indicar si el número leído es
o no capicúa. Para ello debe utilizarse un array unidimensional donde
almacenaremos       cada     una  de     las   cifras    del    número    leído.
Se implementarán dos funciones, una para descomponer el número en cifras
y cargar el array, y otra para comparar las posiciones del array y
determinar si el número es capicúa.
Solución:
/* Leer por teclado un número entero largo e indicar si el número leído es o no
capicúa. Para ello debe utilizarse un array unidimensional donde
almacenaremos        cada    una   de     las   cifras   del    número    leído.
Se implementarán dos funciones, una para descomponer el número en cifras y
cargar el array, y otra para comparar las posiciones del array y determinar si el
número                       es                    capicúa.                    */

#include                                                                               <stdio.h>

int                              descomponer_numero(long                   int,int[]);
int                                                    comparar_posiciones(int,int[]);

main()
{
 long                                           int                                             n;

Profesor: Angel Delgado Herrador               25
Instalación y Mantenimiento                    1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                               IES “Inca Garcilaso”
                                                                              Montilla (Córdoba)
 int                                                                                       t[10],c;
 system("cls");
 printf("nIntroduce      un      numero     para      ver      si         es        capicua    :");
 scanf("%ld",&n);
 c=descomponer_numero(n,t);
 if(comparar_posiciones(c,t))
                 printf("nttt             CAPICUA                           n               ");
 else
                printf("nttt            NO                 CAPICUA                         n");
}

int         descomponer_numero(long                     int                a,int           tabla[])
{
 int                                                                                      cifras=0;
 while(a!=0)
 {
                                                              tabla[cifras]=a%10;
                                                                           a=a/10;
                                                                         cifras++;
                                                                                  }
 return cifras;         //Devolvemos la cantidad de cifras que tenía el número
}


int                   comparar_posiciones(int                      c,int                   tabla[])
{
 int                                                                                           i=0;
 while(i<c)
 {
                                                                           if(tabla[i]!=tabla[c-1])
              return             0;        //Falso,           no               es         capicúa
                                                                                               i++;
                                                                                                c--;
                                                                                                   }
 return                1;                  //Verdadero,                    es             capicúa
}

12.- Introducir una cadena de caracteres, e indicar si la cadena leída es o no
un palíndromo (se lee igual de izquierda a derecha, que de derecha a
izquierda). Ej: Dabale arroz a la zorra el abad
Solución:

/* Leer por teclado una cadena de caracteres, e indicar si es o no un
palíndromo (se puede leer tanto de izquierda a derecha, como de derecha a
izquierda).
Ej: Dabale arroz a la zorra el abad */

#include<stdio.h>


Profesor: Angel Delgado Herrador             26
Instalación y Mantenimiento                         1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                                    IES “Inca Garcilaso”
                                                                                   Montilla (Córdoba)
                                                                             V#include<string.h>
#include<ctype.h>

void                                                                     quitar_blancos(char[]);
int                                                                          palindromo(char[]);


void                                                                                         main()
{
char                                                                                       cad[80];
printf("Cadena:");
gets(cad);
quitar_blancos(cad);
if(palindromo(cad)) printf("nLa             cadena leída es un                    palíndromo.");
else      printf("nLa cadena               leída  NO    es  un                    palíndromo.");
}


void                             quitar_blancos(char                                          cad[])
{
char                                                                                          a[80];
int                                                                                           i,c=0;
for(i=0;i<strlen(cad);i++)
             if(!isspace(cad[i]))         {       a[c]=cad[i];                      c++;             }
a[c]='0';
strcpy(cad,a);
return;
}

int                   palindromo(char                    cad[])
{
// Se puede hacer de cualquiera de las dos maneras siguientes...

//                                    int                                       i,k=strlen(cad)-1;
//                                                                             for(i=0;i<k;i++,k--)
//                        if(cad[i]!=cad[k])                        return                      0;

char                                                                                          a[80];
strcpy(a,cad);
strrev(a);   //   Sirve           para      darle    la    vuelta          a      una      cadena.
if(strcmp(cad,a))                                     return                                    0;
else                                           return                                           1;
}

13.- Leer por teclado un número entero mayor que 0 y menor o igual que 10
para    determinar      el    rango     de    una  matriz   de     enteros.
Leer un segundo número entero, que servirá para indicar el valor de
comienzo.Cargar, recorriendo en espiral, una matriz de enteros, a partir del
segundo valor leído, y con el rango indicado.
Profesor: Angel Delgado Herrador               27
Instalación y Mantenimiento                  1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                             IES “Inca Garcilaso”
                                                                            Montilla (Córdoba)
Solución:

/* Cargar una matriz, numérica entera, de orden N, a partir de un valor
cualquiera, introducido por teclado, y recorriéndola en espiral.
Ej: N=4 ,Vi=6 Matriz resultante:        6 7 8 9
                                      17 18 19 10
                                      16 21 20 11
                                      15 14 13 12         */

#include <stdio.h>


void mostrar(int[][10],int);
void espiral(int[][10],int,int);

void main()
{
int m[10][10],rango,a;
system("cls");
do{
printf("¨Rango de la matriz(1-10)?");
scanf("%d",&rango);
}while(rango<=0||rango>10);

printf("Valor de A:");
scanf("%d",&a);
espiral(m,rango,a);
system("cls");
printf("nDatos de la tabla...n");
mostrar(m,rango);
printf("nnPulse una tecla para acabar...");
system("pause>nul");

}

void espiral(int t[][10],int r,int n)
{
int tope,a,i,k;
if(r%2) tope=r/2+1;
else tope=r/2;
for(a=0;a<tope;a++)
 {
  for(i=a,k=a;k<r-a;k++,n++) t[i][k]=n;
  printf("n");
  for(i=a+1,k--;i<r-a;i++,n++) t[i][k]=n;
  printf("n");
  for(k--,i--;k>=a;k--,n++) t[i][k]=n;
  printf("n");
  for(k++,i--;i>a;i--,n++) t[i][k]=n;
 }

Profesor: Angel Delgado Herrador            28
Instalación y Mantenimiento         1º C.F. G.M. Explotación de Sistemas Informáticos.
de servicios de redes locales.                                    IES “Inca Garcilaso”
                                                                   Montilla (Córdoba)
return;
}

void mostrar(int t[][10],int r)
{
int i,k;
for(i=0;i<r;i++)
{
  for(k=0;k<r;k++)
    printf("%5d",t[i][k]);
  printf("n");
}
return;
}




Profesor: Angel Delgado Herrador   29

Más contenido relacionado

La actualidad más candente

Lenguaje de simulacion
Lenguaje de simulacionLenguaje de simulacion
Lenguaje de simulacionlilijessica
 
Software omegaup
Software omegaupSoftware omegaup
Software omegaupRyoga Luis
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Evelyn Anayansi
 
Lenguaje c compu 2
Lenguaje c compu 2Lenguaje c compu 2
Lenguaje c compu 2luiseldrumer
 
Creando diagramas de flujo con dfd
Creando diagramas de flujo con dfdCreando diagramas de flujo con dfd
Creando diagramas de flujo con dfdLincoln School
 
Ejercicios resueltos de c++
Ejercicios resueltos de c++Ejercicios resueltos de c++
Ejercicios resueltos de c++Jhon TRUJILLO
 
Curso basico de emsamblador
Curso basico de emsambladorCurso basico de emsamblador
Curso basico de emsambladorwigido
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionBoris Salleg
 
2685008 taller-java
2685008 taller-java2685008 taller-java
2685008 taller-javajairjulian
 
Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Eloy Rodriguez
 
Aa javaaa intro
Aa javaaa introAa javaaa intro
Aa javaaa introMickeT
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matricesJohanna Marin
 

La actualidad más candente (18)

Lenguaje de simulacion
Lenguaje de simulacionLenguaje de simulacion
Lenguaje de simulacion
 
Software omegaup
Software omegaupSoftware omegaup
Software omegaup
 
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
Practicas java Nieto Ugalde Evelyn Anayansi Grupo:403
 
Lenguaje c compu 2
Lenguaje c compu 2Lenguaje c compu 2
Lenguaje c compu 2
 
Creando diagramas de flujo con dfd
Creando diagramas de flujo con dfdCreando diagramas de flujo con dfd
Creando diagramas de flujo con dfd
 
Ejercicios resueltos de c++
Ejercicios resueltos de c++Ejercicios resueltos de c++
Ejercicios resueltos de c++
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C
 
Herrera irma prueba
Herrera irma pruebaHerrera irma prueba
Herrera irma prueba
 
Curso basico de emsamblador
Curso basico de emsambladorCurso basico de emsamblador
Curso basico de emsamblador
 
Algoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacionAlgoritmo variables, constantes, tipos de datos y asignacion
Algoritmo variables, constantes, tipos de datos y asignacion
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
Solucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectoresSolucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectores
 
2685008 taller-java
2685008 taller-java2685008 taller-java
2685008 taller-java
 
Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)
 
Elemento3
Elemento3Elemento3
Elemento3
 
Aa javaaa intro
Aa javaaa introAa javaaa intro
Aa javaaa intro
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 

Destacado

Seguridad Informatica
Seguridad InformaticaSeguridad Informatica
Seguridad Informaticaebonhoure
 
Proyecto Areas Inteligencia Artificial Javier Garcia
Proyecto Areas Inteligencia Artificial Javier GarciaProyecto Areas Inteligencia Artificial Javier Garcia
Proyecto Areas Inteligencia Artificial Javier GarciaJavier García García
 
Presentacion sistemas informaticos
Presentacion sistemas informaticosPresentacion sistemas informaticos
Presentacion sistemas informaticosAna Figueroa
 
SEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICA
SEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICASEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICA
SEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICAcontiforense
 
Algoritmos+y+flujogramas
Algoritmos+y+flujogramasAlgoritmos+y+flujogramas
Algoritmos+y+flujogramasluis840
 
Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0
Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0
Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0Stephenson Prieto
 

Destacado (8)

CICLO_STI_TELECOMUNICACIONES
CICLO_STI_TELECOMUNICACIONESCICLO_STI_TELECOMUNICACIONES
CICLO_STI_TELECOMUNICACIONES
 
Seguridad Informatica
Seguridad InformaticaSeguridad Informatica
Seguridad Informatica
 
Seguridad Informatica
Seguridad InformaticaSeguridad Informatica
Seguridad Informatica
 
Proyecto Areas Inteligencia Artificial Javier Garcia
Proyecto Areas Inteligencia Artificial Javier GarciaProyecto Areas Inteligencia Artificial Javier Garcia
Proyecto Areas Inteligencia Artificial Javier Garcia
 
Presentacion sistemas informaticos
Presentacion sistemas informaticosPresentacion sistemas informaticos
Presentacion sistemas informaticos
 
SEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICA
SEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICASEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICA
SEGURIDAD INFORMÁTICA Y POLICIA INFORMÁTICA
 
Algoritmos+y+flujogramas
Algoritmos+y+flujogramasAlgoritmos+y+flujogramas
Algoritmos+y+flujogramas
 
Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0
Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0
Programación 3D y Modelado de Realidad Virtual para Internet con VRML 2.0
 

Similar a Instalación y mantenimiento de redes locales

Similar a Instalación y mantenimiento de redes locales (20)

Ejercicio en c
Ejercicio en cEjercicio en c
Ejercicio en c
 
Algoritmos y programas ing civil
Algoritmos y programas ing civil Algoritmos y programas ing civil
Algoritmos y programas ing civil
 
Clase 6
Clase 6Clase 6
Clase 6
 
Mathlab tutorial
Mathlab tutorialMathlab tutorial
Mathlab tutorial
 
Graficas con Matlab
Graficas con Matlab Graficas con Matlab
Graficas con Matlab
 
Escuela
EscuelaEscuela
Escuela
 
Clase 7
Clase 7Clase 7
Clase 7
 
Teorico2
Teorico2Teorico2
Teorico2
 
Prueba1
Prueba1Prueba1
Prueba1
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
ejercicios-resueltos.pdf
ejercicios-resueltos.pdfejercicios-resueltos.pdf
ejercicios-resueltos.pdf
 
Ejercicios resueltos
Ejercicios resueltosEjercicios resueltos
Ejercicios resueltos
 
ejercicios-resueltos (1).pdf
ejercicios-resueltos (1).pdfejercicios-resueltos (1).pdf
ejercicios-resueltos (1).pdf
 
Ejercicios resueltos2
Ejercicios resueltos2Ejercicios resueltos2
Ejercicios resueltos2
 
Guía de ejercicios de manejo de cadena de caracteres
Guía de ejercicios de manejo de cadena de caracteresGuía de ejercicios de manejo de cadena de caracteres
Guía de ejercicios de manejo de cadena de caracteres
 
cap7.pdf
cap7.pdfcap7.pdf
cap7.pdf
 
Programación modular estructurada.ppt
Programación modular estructurada.pptProgramación modular estructurada.ppt
Programación modular estructurada.ppt
 
Arreglos en PSeInt
Arreglos en PSeIntArreglos en PSeInt
Arreglos en PSeInt
 
15diagramas de flujo
15diagramas de flujo15diagramas de flujo
15diagramas de flujo
 
F unciones exel
F unciones exelF unciones exel
F unciones exel
 

Más de Brivé Soluciones

Más de Brivé Soluciones (10)

Ensayo El Laberinto de la Soledad de Octavio Paz
Ensayo El Laberinto de la Soledad de Octavio PazEnsayo El Laberinto de la Soledad de Octavio Paz
Ensayo El Laberinto de la Soledad de Octavio Paz
 
Ensayo reflexivo
Ensayo reflexivoEnsayo reflexivo
Ensayo reflexivo
 
Pcasm book-spanish
Pcasm book-spanishPcasm book-spanish
Pcasm book-spanish
 
Introduccion ensamblador
Introduccion ensambladorIntroduccion ensamblador
Introduccion ensamblador
 
Aprendiendo Java
Aprendiendo JavaAprendiendo Java
Aprendiendo Java
 
C Funciones
C FuncionesC Funciones
C Funciones
 
Ejercicios generales
Ejercicios generalesEjercicios generales
Ejercicios generales
 
52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo
 
Cursocpp
CursocppCursocpp
Cursocpp
 
Resolucion De Problemas Con Computadora
Resolucion De Problemas Con ComputadoraResolucion De Problemas Con Computadora
Resolucion De Problemas Con Computadora
 

Último

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024AndreRiva2
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicaFlor Idalia Espinoza Ortega
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 

Último (20)

ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamica
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 

Instalación y mantenimiento de redes locales

  • 1. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) EJERCICIOS de C BLOQUE 1 1.- Leer dos números enteros y escribir el mayor de los dos o un mensaje si son iguales. (Solución). 2.- Leer un carácter y dos números enteros. Si el carácter leído es un operador aritmético calcular la operación correspondiente, si es cualquier otro mostrar error. Hacer el programa utilizando if-else. 3.- Hacer el mismo programa usando la instrucción switch(). (Solución) 4.- Leer un número entero y visualizar su tabla de multiplicar. (Solución) 5.- Generar enteros de 3 en 3 comenzando por el 2 hasta el valor máximo menor que 30. Calcular la suma de los enteros generados que sean divisibles por 5. 6.- Media de una serie de números que finaliza al introducir el 999. El 999 no debe ser tenido en cuenta para la media. (Solución) 7.- Leer un número entero positivo y averiguar si es perfecto. Un nº es perfecto cuando es igual a la suma de sus divisores excepto el mismo. (Solución) 8.- Leer dos números enteros a y b mayores o iguales que cero y calcular su producto mediante sumas. (Solución) 9.- Leer un número entero y averiguar si es o no múltiplo de 9. Un número es múltiplo de 9 si la suma de sus cifras es 9 o múltiplo de 9. (Solución) Profesor: Angel Delgado Herrador 1
  • 2. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) 10.- Generar los N primeros términos de la serie de Fibonacci. El valor de N (entero y positivo) deberá ser leído por teclado. En esta serie los dos primeros números son 1, y el resto se obtiene sumando los dos anteriores: 1,1,2,3,5,8,13,21,... (Solución) 11.- Presentar en la función main() el siguiente menú de opciones: 1.- Tabla de multiplicar (leer en main() un número y en una función mostrar su tabla de multiplicar). 2.- Producto por sumas (en main() leer dos números enteros mayores que 0 y en una función calcular su producto mediante sumas sucesivas). 3.- Mostrar números comprendidos (leer dos números enteros cualesquiera y en función mostrar los números comprendidos entre ambos, no se incluyen). (Solución) 12.- Leer por teclado un numero entero N. Escribir los números primos comprendidos entre 1 y N. Diseñar una función que permita averiguar si un número es o no primo. (Solución) 13.- Leer una fecha en formato dia-mes-año, averiguar si es correcta e indicar el día siguiente. (Solución) 14.- Implementar un programa que sea capaz de calcular el resultado de aplicar la fórmula siguiente (n i)= n! /( i! * (n-i)!). Para ello se dispone de dos funciones, una de ellas lee un número por teclado que debe ser mayor o igual que cero. Teniendo en cuenta además que n tiene que ser necesariamente mayor que i. La otra función calcula el factorial de un número. (Solución) 15.-Mostrar los datos de un fichero de texto usando el símbolo de redirección del sistema operativo MS-DOS. Ejecutar: programa<fich.txt (Solución) BLOQUE 2 1.- Cargar una tabla de p filas y q columnas, escribir la tabla en forma de matriz y escribir la suma de las filas y las columnas. Profesor: Angel Delgado Herrador 2
  • 3. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) 2.- Cargar un array de m números enteros decir cual es el mayor y donde esta. 3.- Cargar un array de n enteros y calcular la media de los que estén en posiciones pares.(Solución) 4.- Programa: Leer en la función main() un número entero "n" mayor que 2 y menor o igual que 20. Cargar, en una función, un array de "n" números enteros. Mostrar el vector, en una sola línea, en otra función. En main() leer otro número entero y en una función contar las veces que aparece dicho número en el array, el resultado debe indicarse en main(). (Solución) 5.- Leer, en main(), una cadena de caracteres y llamar a un función que la modifique. En la función se deben cambiar mayúsculas por minúsculas, minúsculas por mayúsculas y dígitos por puntos. El resultado se escribe en la función main(). (Solución) 6.- Leer una cadena de caracteres y cortarla en palabras escribiendo cada palabra en una línea. Se supone que las palabras se separan sólo por blancos. (Solución) 7.- Leer un numero n y pedir n veces tres números enteros e imprimirlos cada vez ordenados de menor a mayor. Utilizar una función que, con ayuda de punteros, permita ordenar dos números.(Solución) 8.- Convertir una cadena de caracteres a un valor entero mediante una función que reciba la dirección de la cadena y la dirección de la variable que almacenará el resultado. (Se supone que hay números el la cadena). -Buscar el comienzo del número distinto de blanco, supondremos + o -. -Averiguar el signo, si no es un carácter valido devuelve un error. -Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10. -Si la función finaliza de forma correcta devuelve un uno. (Solución) 9.- Generar los N primeros términos de la serie de Fibonacci, utilizando para ello una función en las que se trabaja con variables estáticas. (Solución) 10.- Cargar un array bidimensional de p*q y devolver un puntero apuntando a la fila que mas suma. (Solución) Profesor: Angel Delgado Herrador 3
  • 4. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) 11.- Leer por teclado un número entero largo e indicar si el número leído es o no capicúa. Para ello debe utilizarse un array unidimensional donde almacenaremos cada una de las cifras del número leído. Se implementarán dos funciones, una para descomponer el número en cifras y cargar el array, y otra para comparar las posiciones del array y determinar si el número es capicúa. (Solución) 12.- Introducir una cadena de caracteres, e indicar si la cadena leída es o no un palíndromo (se lee igual de izquierda a derecha, que de derecha a izquierda). Ej: Dabale arroz a la zorra el abad (Solución) 13.- Leer por teclado un número entero mayor que 0 y menor o igual que 10 para determinar el rango de una matriz de enteros. Leer un segundo número entero, que servirá para indicar el valor de comienzo. Cargar, recorriendo en espiral, una matriz de enteros, a partir del segundo valor leído, y con el rango indicado. (Solución) Profesor: Angel Delgado Herrador 4
  • 5. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) SOLUCIONES EJERCICIOS de C BLOQUE 1 1.- Leer dos números enteros y escribir el mayor de los dos o un mensaje si son iguales. Solución: . /*Leer dos números enteros y escribir el mayor de ambos o un mensaje si son iguales.*/ #include <stdio.h> void main() { int a,b; printf("Dame dos numeros... "); scanf("%d%d",&a,&b); if (a>b) printf("El mayor numero es... %d",a); else if (b>a) printf("El numero mayor es.... %d",b); else printf("Los numeros son iguales"); } 2.- Leer un carácter y dos números enteros. Si el carácter leído es un operador aritmético calcular la operación correspondiente, si es cualquier otro mostrar error. Hacer el programa utilizando if-else. 3.- Hacer el mismo programa usando la instrucción switch(). Solución: /* Leer un carácter y dos números enteros. Si el carácter leído es un operador aritmético calcular la operación correspondiente, si es cualquier otro mostrar error. Hacer el programa utilizando la instrucción switch() */ Profesor: Angel Delgado Herrador 5
  • 6. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) #include <stdio.h> void main() { char c; int a,b; printf("dame un caractern"); c=getchar(); fflush (stdin); printf("dame dos numerosn"); scanf("%d %d",&a,&b); switch (c) { case '+': printf("resultado %d",a+b); break; case '-': printf("resultado %d",a-b); break; case '*': printf("resultado %d",a*b); break; case '/': printf("resultado %d",a/b); break; default: printf("error"); } } 4.- Leer un número entero y visualizar su tabla de multiplicar. Solución: /* Leer un número entero y visualizar su tabla de multiplicar. */ #include <stdio.h> void main() { int a,b; printf ("Introduce el número:"); scanf("%d",&a); b=1; while (b<=10) { printf("%d * %d = %dn",a,b,a*b); b++; } } Profesor: Angel Delgado Herrador 6
  • 7. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) 5.- Generar enteros de 3 en 3 comenzando por el 2 hasta el valor máximo menor que 30. Calcular la suma de los enteros generados que sean divisibles por 5. 6.- Media de una serie de números que finaliza al introducir el 999. El 999 no debe ser tenido en cuenta para la media. Solución: /* Media de una serie de números que finaliza al introducir el 999. El 999 no debe ser tenido en cuenta para la media. */ #include <stdio.h> void main() { int n,c=0,s=0; // Típico esquema mientras. // Se lee el primer elemento de la secuencia fuera del bucle printf("Dame el primer nº:"); scanf("%d",&n); while(n!=999) { s+=n; // Se trata el elemento leído c++; printf("Dame el siguiente nº:"); // Se obtiene el siguiente elemento scanf("%d",&n); } if (c) // Sólo se podrá dividir si en la secuencia hay algún nº printf("nLa media de los números es %.2fn",(float)s/c); else Profesor: Angel Delgado Herrador 7
  • 8. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) printf("nNo se ha leído ningún número.n"); } 7.- Leer un número entero positivo y averiguar si es perfecto. Un nº es perfecto cuando es igual a la suma de sus divisores excepto el mismo. Solución: /* Leer un entero positivo y averiguar si es perfecto. Un nº es perfecto cuando es igual a la suma de sus divisores excepto el mismo */ #include <stdio.h> void main() { int i,numero,suma=0; do{ printf("Dame un numero:"); scanf("%d",&numero); } while (numero<=0); for (i=1;i<=(numero/2);i++) if ((numero%i)==0) suma+=i; if (numero==suma) printf("El numero es perfecto."); else printf("El numero NO es perfecto."); } 8.- Leer dos números enteros a y b mayores o iguales que cero y calcular su producto mediante sumas. Solución: /* Leer dos números enteros a y b mayores o iguales que cero y calcular su producto mediante sumas sucesivas. (Se usan, a modo de ejemplo, los tres esquemas repetitivos existentes en C.*/ #include <stdio.h> void main() { int a,b,c,i,producto=0; Profesor: Angel Delgado Herrador 8
  • 9. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) do{ printf("Dame un a:"); scanf("%d",&a); } while (a<0); do{ printf("Dame b:"); scanf("%d",&b); } while (b<0); // Suponemos que a es mayor que b en caso contrario se hace un intercambio if (a<b) { c=a; a=b; b=c; } printf("a=%d b=%dn",a,b); for (i=0;i<b;i++) producto+=a; printf("El producto con for es: %dn",producto); producto=0; i=0; while (i<b) { producto+=a; i++; } printf("El producto con while es: %dn",producto); producto=0; i=0; do /* con este bucle al multiplicar por cero */ { /* me daria "a" */ producto+=a; i++; } while (i<b); printf("El producto con do-while es: %d",producto); } 9.- Leer un número entero y averiguar si es o no múltiplo de 9. Un número es múltiplo de 9 si la suma de sus cifras es 9 o múltiplo de 9. Solución: /* Leer un numero entero y averiguar si es o no múltiplo de 9. Un nº es múltiplo de 9 si la suma de sus cifras es 9 o múltiplo de 9. Profesor: Angel Delgado Herrador 9
  • 10. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) Ej.: 99 es múltiplo pues 9+9=18, que a su vez 1+8=9 */ #include <stdio.h> void main() { int numero,sumacifras,s; printf("Dame un numero: "); scanf("%d",&numero); s=numero; while (numero>9) { sumacifras=(numero%10); //Inicializamos sumacifras con el primer resto. while ((numero/=10)!=0) //Mientras la parte entera de la división sea distinta de 0 sumacifras+=(numero%10); //Seguimos sumando los restos numero=sumacifras; //Asignamos la suma de las cifras al número } if (numero==9) //Al salir si el número es igual a 9 es múltiplo printf("El numero %d, es multiplo de 9.",s); else printf("El numero %d, NO es multiplo de 9.",s); } 10.- Generar los N primeros términos de la serie de Fibonacci. El valor de N (entero y positivo) deberá ser leído por teclado. En esta serie los dos primeros números son 1, y el resto se obtiene sumando los dos anteriores: 1,1,2,3,5,8,13,21,... Solución: Profesor: Angel Delgado Herrador 10
  • 11. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) /* Generar los N primeros términos de la serie de Fibonacci. El valor de N (entero y positivo) deberá ser leído por teclado. En esta serie los dos primeros números son 1, y el resto se obtiene sumando los dos anteriores: 1,1,2,3,5,8,13,21,... */ #include <stdio.h> void main() { int n,a,b,c,aux; do{ // Se lle el número hasta que sea mayor que cero. printf("nDame un numero :"); scanf("%d",&n); } while(n<=0); a=1;b=0; for(c=1;c<=n;c++) { printf("%dt",a); aux=a; a+=b; b=aux; } } 11.- Presentar en la función main() el siguiente menú de opciones: 1.- Tabla de multiplicar (leer en main() un número y en una función mostrar su tabla de multiplicar). 2.- Producto por sumas (en main() leer dos números enteros mayores que 0 y en una función calcular su producto mediante sumas sucesivas). 3.- Mostrar números comprendidos (leer dos números enteros cualesquiera y en función mostrar los números comprendidos entre ambos, no se incluyen). Solución: /* Programa: Presentar en la función main() el siguiente menú de opciones: 1.- Tabla de multiplicar (leer en main() un número y en una función mostrar su tabla de multiplicar). 2.- Producto por sumas (en main() leer dos números enteros mayores que 0 y en una función calcular su producto mediante sumas sucesivas). 3.- Mostrar números comprendidos (leer dos números enteros cualesquiera y en función mostrar los números comprendidos entre ambos, no se incluyen). */ #include <stdio.h> void tabla(int); void producto(int,int); void numeros(int,int); Profesor: Angel Delgado Herrador 11
  • 12. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) void main() { int op,n,m; do { system ("cls"); printf ("n MENÚ DE OPCIONES"); printf ("n ================n"); printf ("n 1.- TABLA DE MULTIPLICARn"); printf ("n 2.- PRODUCTO POR SUMASn"); printf ("n 3.- MOSTRAR NÚMEROS COMPRENDIDOS ENTRE DOSn"); printf ("n 4.- SALIR nnnn"); printf ("n ELIGE UNA OPCION : "); scanf ("%d",&op); switch (op) { case 1: system ("cls"); printf ("n Dame un número : "); scanf ("%d",&n); tabla(n); // Llamada a la función printf ("n"); system("pause"); break; case 2: system ("cls"); do{ printf ("n Dame un número : "); scanf ("%d",&n); }while (n < 0); do{ printf ("n Dame otro número : "); scanf ("%d",&m); }while (m < 0); producto(n,m); printf ("n"); system("pause"); break; case 3: system ("cls"); printf ("n Dame un n£mero : "); scanf ("%d",&n); printf ("n Dame un n£mero : "); scanf ("%d",&m); numeros(n,m); printf ("n"); system("pause"); break; } }while (op != 4); } Profesor: Angel Delgado Herrador 12
  • 13. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) void tabla(int n) { int c,p=1; for (c=1;c<=10;c++) { p=n* c; printf ("n %d * %d = %d",n ,c,p); } return; } void producto(int n, int m) { int c,sum=0,aux; if (n > m) // Se supone n el menor, en caso de no serlo se intercambian los valores { aux=n; n=m; m=aux; } for (c=1;c<=n;c++) sum+=m; printf ("n El producto por sumas es %d",sum); return; } void numeros(int n, int m) { int c,aux; if (n > m) { aux = n; n = m; m = aux; } if (n+ 1 >= m) printf ("n No hay números n"); else for (c=n + 1;c < m ;c++) printf ("n %d",c); return; } 12.- Leer por teclado un numero entero N. Escribir los números primos comprendidos entre 1 y N. Diseñar una función que permita averiguar si un número es o no primo. Solución: /* Leer por teclado un numero entero N. Escribir los números primos comprendidos entre 1 y N. Diseñar una función que permita averiguar si un número es o no primo. */ Profesor: Angel Delgado Herrador 13
  • 14. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) #include <stdio.h> #define TRUE 1 #define FALSE 0 int primo(int); void main() { int n,i; printf("nDame un numero:"); scanf("%d",&n); for (i=1;i<=n;i++) if(primo(i)) printf(" %d ",i); } int primo (int n) { int i; for (i=2;i<=(n/2);i++) if((n%i)==0) return FALSE; return TRUE; } 13.- Leer una fecha en formato dia-mes-año, averiguar si es correcta e indicar el día siguiente. Solución: /* Leer una fecha en formato dia-mes-año, averiguar si es correcta e indicar el día siguiente. */ #include <stdio.h> #define TRUE 1 #define FALSE 0 int correcta_fecha(int,int,int); int bisiesto(int); void main() { int dia,mes,anio; printf("Dame una fecha:(dd-mm-aaaa)"); scanf("%d-%d-%d",&dia,&mes,&anio); if (!correcta_fecha(dia,mes,anio)) printf("nLa fecha no es correcta."); } int correcta_fecha(int dia,int mes,int anio) Profesor: Angel Delgado Herrador 14
  • 15. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) { int d; switch (mes) { case 4: case 6: case 9: case 11:d=30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: d=31; break; case 2: if (bisiesto(anio)) d=29; else d=28; break; default: return FALSE; } if (dia<=d) { if (dia<d) dia++; else { dia=1; if (mes==12) { mes=1; anio++; } else mes++; } printf("nEl proximo dia sera:%2d-%2d-%d.",dia,mes,anio); return TRUE; } else return FALSE; } /* Un ano es bisiesto cuando es multiplo de 4 pero no de 100 o multiplo de 400. */ int bisiesto(int anio) { if ((anio%4==0 && anio%100!=0) || (anio%400==0)) return TRUE; Profesor: Angel Delgado Herrador 15
  • 16. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) return FALSE; } 14.- Implementar un programa que sea capaz de calcular el resultado de aplicar la fórmula siguiente (n i)= n! /( i! * (n-i)!). Para ello se dispone de dos funciones, una de ellas lee un número por teclado que debe ser mayor o igual que cero. Teniendo en cuenta además que n tiene que ser necesariamente mayor que i. La otra función calcula el factorial de un número. Solución: /* Implementar un programa que sea capaz de calcular el resultado de aplicar la fórmula siguiente (n i)= n! /( i! * (n-i)!). Para ello se dispone de dos funciones, una de ellas lee un número por teclado que debe ser mayor o igual que cero. Teniendo en cuenta además que n tiene que ser necesariamente mayor que i. La otra función calcula el factorial de un número. */ #include <stdio.h> int lee_numero(); long int factorial(int); // Programa principal. void main() { int n,i; printf("Valor de i...n"); i=lee_numero(); printf("nValor de n...n"); do n=lee_numero(); while(n<i); printf("Resultado %d sobre %d = %d",n,i,factorial(n)/(factorial(i)*factorial(n-i))); } // Funciones. int lee_numero() { int a; do{ printf("Escribe un valor:"); scanf("%d",&a); }while(a<0); return a; } long int factorial(int x) Profesor: Angel Delgado Herrador 16
  • 17. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) { long int f=1; for(;x>0;x--) f*=x; return f; } 15.-Mostrar los datos de un fichero de texto usando el símbolo de redirección del sistema operativo MS-DOS.Ejecutar: programa<fich.txt Solución: /* Mostrar los datos de un fichero de texto usando el símbolo de redirección del sistema operativo MS-DOS. Ejecutar: programa<fich.txt También se puede generar un archivo de texto, si se usa el símbolo de redirección > en este caso, la entrada de datos por teclado debe finalizar al pulsar ^Z*/ #include <stdio.h> void main() { char c; while((c=getchar())!=EOF) putchar(c); } BLOQUE 2 1.- Cargar una tabla de p filas y q columnas, escribir la tabla en forma de matriz y escribir la suma de las filas y las columnas. 2.- Cargar un array de m números enteros decir cual es el mayor y donde esta. 3.- Cargar un array de n enteros y calcular la media de los que estén en posiciones pares. Solución: /* Cargar un array de n enteros y calcular la media de los que estén en posiciones pares. */ #include <stdio.h> #define MAX 100 int carga_array(int[]); float media(int[],int); void main() { int a[MAX],eltos; Profesor: Angel Delgado Herrador 17
  • 18. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) eltos=carga_array(a); if (eltos) printf("nLa media es %f.",media(a,eltos)); } int carga_array(int a[]) { int i,num; printf("nDame un numero:"); scanf("%d",&num); for (i=0;i<num;i++) { printf("Dame un elto:"); scanf("%d",&a[i]); } return num; } float media(int a[],int eltos) { int i,suma=0,num=0; for (i=1;i<eltos;i+=2) { suma+=a[i]; num++; } return ((float)suma/num); } 4.- Programa: Leer en la función main() un número entero "n" mayor que 2 y menor o igual que 20. Cargar, en una función, un array de "n" números enteros. Mostrar el vector, en una sola línea, en otra función. En main() leer otro número entero y en una función contar las veces que aparece dicho número en el array, el resultado debe indicarse en main(). Solución: /*Programa: Leer en la funcion main() un n£mero entero "n" mayor que 2 y menor o igual que 20. Cargar, en una funci¢n, un array de "n" n£meros enteros. Mostrar el vector, en una sola l¡nea, en otra funci¢n. En main() leer otro n£mero entero y en una funcion contar las veces que aparece dicho n£mero en el array, el resultado debe indicarse en main().*/ #include <stdio.h> void cargar(int[],int); void mostrar(int[],int); int contar(int[],int,int); void main() { int n,a,t[20]; system("cls"); do{ printf("¨Cuántos elementos tiene la tabla?"); scanf("%d",&n); Profesor: Angel Delgado Herrador 18
  • 19. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) }while (n<3 || n>20); cargar(t,n); system("cls"); printf("Los elementos de la tabla son...n"); mostrar(t,n); printf("nnnDame el número que vas a buscar: "); scanf("%d",&a); printf("nnEl número %d aparece %d veces en la tabla.",a,contar(t,n,a)); } void cargar(int t[],int n) { int i; for(i=0;i<n;i++) { printf("Elemento %d: ",i+1); scanf("%d",&t[i]); } return; } void mostrar(int t[],int n) { int i; for(i=0;i<n;i++) printf("%6d",t[i]); return; } int contar(int t[],int n,int a) { int i,cont=0; for(i=0;i<n;i++) if (t[i]==a) cont++; return cont; } 5.- Leer, en main(), una cadena de caracteres y llamar a un función que la modifique. En la función se deben cambiar mayúsculas por minúsculas, minúsculas por mayúsculas y dígitos por puntos. El resultado se escribe en la función main(). Solución: /* Leer, en main(), una cadena de caracteres y llamar a un función que la modifique. En la función se deben cambiar mayúsculas por minúsculas, minúsculas por mayúsculas y dígitos por puntos. El resultado se escribe en la función main(). */ #include <stdio.h> void modificar (char[]); Profesor: Angel Delgado Herrador 19
  • 20. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) void main() { char cad[30]; printf("Dame una cadena caracteres:"); gets(cad); modificar(cad); puts(cad); } void modificar(char cad[]) { int i; for(i=0;cad[i]!='0';i++) { if(isupper(cad[i])) cad[i]=tolower(cad[i]); else if(islower(cad[i])) cad[i]=toupper(cad[i]); else if(isdigit(cad[i])) cad[i]='.'; } return; } 6.- Leer una cadena de caracteres y cortarla en palabras escribiendo cada palabra en una línea. Se supone que las palabras se separan sólo por blancos. Solución: /* Leer una cadena de caracteres y cortarla en palabras escribiendo cada palabra en una línea. Se supone que las palabras se separan sólo por blancos. */ #include <stdio.h> #include <ctype.h> #include <string.h> void escribe_palabras(char[]); void main() { char frase[50]; gets(frase); escribe_palabras(frase); } void escribe_palabras(char frase[]) { char palabra[10]; int i=0,j=0; Profesor: Angel Delgado Herrador 20
  • 21. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) while(frase[i]!='0') { while(frase[i]==' ') i++; j=0; while((frase[i]!=' ') && (frase[i]!='0')) palabra[j++]=frase[i++]; palabra[j]='0'; puts(palabra); } } 7.- Leer un numero n y pedir n veces tres números enteros e imprimirlos cada vez ordenados de menor a mayor. Utilizar una función que, con ayuda de punteros, permita ordenar dos números. Solución: /* Leer un numero n y pedir n veces tres números enteros e imprimirlos cada vez ordenados de menor a mayor. Utilizar una función, que con el uso de punteros, permita ordenar dos números. */ #include <stdio.h> void ordena (int*,int*); // función que ordena números de dos en dos void main() { int n,i,a,b,c; do{ printf("dame un número:"); scanf("%d",&n); }while (n<=0); for (i=0;i<n;i++) { printf("Dame tres números:"); scanf("%d-%d-%d",&a,&b,&c); ordena(&a,&b); ordena(&a,&c); ordena(&b,&c); printf("%d-%d-%dn",a,b,c); } } void ordena(int *pa,int *pb) Profesor: Angel Delgado Herrador 21
  • 22. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) { int aux; if (*pa>*pb) { aux=*pa; *pa=*pb; *pb=aux; } return; } 8.- Convertir una cadena de caracteres a un valor entero mediante una función que reciba la dirección de la cadena y la dirección de la variable que almacenará el resultado. (Se supone que hay números el la cadena). -Buscar el comienzo del número distinto de blanco, supondremos + o -. -Averiguar el signo, si no es un carácter valido devuelve un error. -Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10. -Si la función finaliza de forma correcta devuelve un uno. Solución: /* Convertir una cadena de caracteres a un valor entero mediante una función que reciba la dirección de la cadena y la dirección de la variable que almacenará el resultado. (Se supone que hay números el la cadena). -Buscar el comienzo de numero distinto de blanco, supondremos + o -. -Averiguar el signo, si no es un carácter valido devuelve un error. -Si el carácter es un digito se pasa a decimal ((ascii)numero-48)*10. -Si la función finaliza de forma correcta devuelve un uno. */ #include <stdio.h> #include <ctype.h> #include <string.h> int convierte(char*,float*); void main() { char cadena[50]; float valor; printf("Dame una cadena:"); gets(cadena); if (convierte(cadena,&valor)) printf("El valor es:%f",valor); else puts("ERROR"); } int convierte(char *pcadena,float *pvalor) { int neg=1,error=0; Profesor: Angel Delgado Herrador 22
  • 23. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) while(*pcadena==' ') pcadena++; if (!isdigit(*pcadena)) { if (*pcadena=='-') neg=-1; else if (*pcadena=='+') neg=1; else error=1; pcadena++; } while ((*pcadena) && (!error)) { if (!isdigit(*pcadena)) error=1; else *pvalor=*pvalor*10+((int)(*pcadena-48)); pcadena++; } if (error) return 0; *pvalor=(*pvalor)*(float)neg; return 1; } 9.- Generar los N primeros términos de la serie de Fibonacci, utilizando para ello una función en las que se trabaja con variables estáticas. Solución: /* Generar los N primeros términos de la serie de Fibonacci, utilizando para ello una función en las que se trabaja con variables estáticas.*/ #include <stdio.h> long int fibonacci(int); void main() { int n,cont; printf("n Cuántos números de Fibonacci??"); scanf("%d",&n); for(cont=1;cont<=n;cont++) printf("ni=%2dt F=%ld",cont,fibonacci(cont)); } long int fibonacci(int cont) Profesor: Angel Delgado Herrador 23
  • 24. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) { static long int f1=1,f2=1; // Se inicializan en la primera llamada a la función. long int f; f=(cont<3)?1:f1+f2; // if (cont<3) f=1; else f=f1+f2; f2=f1; // se denomina operador condicional f1=f; return f; } 10.- Cargar un array bidimensional de p*q y devolver un puntero apuntando a la fila que mas suma. Solución: /* Cargar un array bidimensional de p*q y devolver un puntero apuntando a la fila que mas suma.*/ #include <stdio.h> #define fil 5 #define col 5 void cargar_tabla(int(*)[col],int,int); int *max_fila(int(*)[col],int,int); void main() { int p,q,array[fil][col]; int *pfila,i; do{ printf("Dame las filas:"); scanf("%d",&p); }while(p<2 || p>5); do{ printf("Dame las columnas:"); scanf("%d",&q); }while(q<2 || q>5); cargar_tabla(array,p,q); pfila=max_fila(array,p,q); for (i=0;i<q;i++) printf(" %d ",*(pfila+i)); } void cargar_tabla(int (*array)[col],int p,int q) { int i,j; for(i=0;i<p;i++) for (j=0;j<q;j++) { printf("Dame un [%d,%d]:",i,j); scanf("%d",(*(array+i)+j)); Profesor: Angel Delgado Herrador 24
  • 25. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) } return; } int *max_fila(int (*array)[col],int p,int q) { int i,j,suma=0,max,pos; for(i=0;i<p;i++) { for (j=0;j<q;j++) suma+=*(*(array+i)+j); if(!i) { max=suma; // Para no inicializar el mayor a cero si pos=i; // me dan todos los números negativos } else if(suma>max) { max=suma; pos=i; } suma=0; } return (*(array+pos)); } 11.- Leer por teclado un número entero largo e indicar si el número leído es o no capicúa. Para ello debe utilizarse un array unidimensional donde almacenaremos cada una de las cifras del número leído. Se implementarán dos funciones, una para descomponer el número en cifras y cargar el array, y otra para comparar las posiciones del array y determinar si el número es capicúa. Solución: /* Leer por teclado un número entero largo e indicar si el número leído es o no capicúa. Para ello debe utilizarse un array unidimensional donde almacenaremos cada una de las cifras del número leído. Se implementarán dos funciones, una para descomponer el número en cifras y cargar el array, y otra para comparar las posiciones del array y determinar si el número es capicúa. */ #include <stdio.h> int descomponer_numero(long int,int[]); int comparar_posiciones(int,int[]); main() { long int n; Profesor: Angel Delgado Herrador 25
  • 26. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) int t[10],c; system("cls"); printf("nIntroduce un numero para ver si es capicua :"); scanf("%ld",&n); c=descomponer_numero(n,t); if(comparar_posiciones(c,t)) printf("nttt CAPICUA n "); else printf("nttt NO CAPICUA n"); } int descomponer_numero(long int a,int tabla[]) { int cifras=0; while(a!=0) { tabla[cifras]=a%10; a=a/10; cifras++; } return cifras; //Devolvemos la cantidad de cifras que tenía el número } int comparar_posiciones(int c,int tabla[]) { int i=0; while(i<c) { if(tabla[i]!=tabla[c-1]) return 0; //Falso, no es capicúa i++; c--; } return 1; //Verdadero, es capicúa } 12.- Introducir una cadena de caracteres, e indicar si la cadena leída es o no un palíndromo (se lee igual de izquierda a derecha, que de derecha a izquierda). Ej: Dabale arroz a la zorra el abad Solución: /* Leer por teclado una cadena de caracteres, e indicar si es o no un palíndromo (se puede leer tanto de izquierda a derecha, como de derecha a izquierda). Ej: Dabale arroz a la zorra el abad */ #include<stdio.h> Profesor: Angel Delgado Herrador 26
  • 27. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) V#include<string.h> #include<ctype.h> void quitar_blancos(char[]); int palindromo(char[]); void main() { char cad[80]; printf("Cadena:"); gets(cad); quitar_blancos(cad); if(palindromo(cad)) printf("nLa cadena leída es un palíndromo."); else printf("nLa cadena leída NO es un palíndromo."); } void quitar_blancos(char cad[]) { char a[80]; int i,c=0; for(i=0;i<strlen(cad);i++) if(!isspace(cad[i])) { a[c]=cad[i]; c++; } a[c]='0'; strcpy(cad,a); return; } int palindromo(char cad[]) { // Se puede hacer de cualquiera de las dos maneras siguientes... // int i,k=strlen(cad)-1; // for(i=0;i<k;i++,k--) // if(cad[i]!=cad[k]) return 0; char a[80]; strcpy(a,cad); strrev(a); // Sirve para darle la vuelta a una cadena. if(strcmp(cad,a)) return 0; else return 1; } 13.- Leer por teclado un número entero mayor que 0 y menor o igual que 10 para determinar el rango de una matriz de enteros. Leer un segundo número entero, que servirá para indicar el valor de comienzo.Cargar, recorriendo en espiral, una matriz de enteros, a partir del segundo valor leído, y con el rango indicado. Profesor: Angel Delgado Herrador 27
  • 28. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) Solución: /* Cargar una matriz, numérica entera, de orden N, a partir de un valor cualquiera, introducido por teclado, y recorriéndola en espiral. Ej: N=4 ,Vi=6 Matriz resultante: 6 7 8 9 17 18 19 10 16 21 20 11 15 14 13 12 */ #include <stdio.h> void mostrar(int[][10],int); void espiral(int[][10],int,int); void main() { int m[10][10],rango,a; system("cls"); do{ printf("¨Rango de la matriz(1-10)?"); scanf("%d",&rango); }while(rango<=0||rango>10); printf("Valor de A:"); scanf("%d",&a); espiral(m,rango,a); system("cls"); printf("nDatos de la tabla...n"); mostrar(m,rango); printf("nnPulse una tecla para acabar..."); system("pause>nul"); } void espiral(int t[][10],int r,int n) { int tope,a,i,k; if(r%2) tope=r/2+1; else tope=r/2; for(a=0;a<tope;a++) { for(i=a,k=a;k<r-a;k++,n++) t[i][k]=n; printf("n"); for(i=a+1,k--;i<r-a;i++,n++) t[i][k]=n; printf("n"); for(k--,i--;k>=a;k--,n++) t[i][k]=n; printf("n"); for(k++,i--;i>a;i--,n++) t[i][k]=n; } Profesor: Angel Delgado Herrador 28
  • 29. Instalación y Mantenimiento 1º C.F. G.M. Explotación de Sistemas Informáticos. de servicios de redes locales. IES “Inca Garcilaso” Montilla (Córdoba) return; } void mostrar(int t[][10],int r) { int i,k; for(i=0;i<r;i++) { for(k=0;k<r;k++) printf("%5d",t[i][k]); printf("n"); } return; } Profesor: Angel Delgado Herrador 29