Practicas Sistemas Informaticos
Practicas Sistemas Informaticos
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
int main() {
int max, num, resto;
printf("Introduzca el numero:");
scanf("%d", &max);
if (max <= 0) {
printf("El numero debe ser positivo!!\n");
}
else {
for (num = 1; num <= max; num++) {
resto = num % 7;
if (resto == 0) {
printf("%d es divisible por 7\n", num);
}
}
}
system("pause");
return 0;
}
PRACTICA 1
#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_DEPRECATE
int main()
{
int num, i, resto;
printf("Introduzca el numero:");
scanf_s("%d", &num);
if (num <= 0)
{
printf("el numero debe ser positivo\n");
}
else
{
for (i = 1; i <= num; i++)
{
resto=i%7;
if(resto==0)
{
printf("%d es divisible por 7\n", i);
}
}
}
system("pause");
return 0;
}
PRACTICA 2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
//DECLARACIONES DE FUNCIONES
int menu();
int desplazar(int, int);
int parImpar(int);
void operacionesLogicasBits();
int ponerACeroBit(int, int);
long factorial(long);
int numeroBits(int);
int cambiarBits(int, int, int);
void intercambiar(double *, double *);
double mediaAritmetica(double, double, double, double);
int main()
{
//DEFINICIONES DE VARIABLES
int opcion;
int x = 0, y = 0, z = 0;
long xl = 0, yl = 0;
double a = 0, b = 0, c = 0, d = 0, media = 0, *p1, *p2;
printf("PRÁCTICA 2\n");
printf("============\n");
opcion = menu();
case 2:
printf("Ejercicio 2: par o impar\n");
printf("Introduzca un número: ");
scanf("%d", &y);
x = parImpar(y); //llamar a la funcion
if (x != 0)
printf("El número %d es impar\n\n", y);
else
printf("El número %d es par\n\n", y);
break;
case 3:
printf("Ejercicio 3: operaciones lógicas a nivel de bits\n");
operacionesLogicasBits(); //llamar a la funcion
break;
case 4:
printf("Ejercicio 4: poner a cero un bit\n");
printf("Introduzca un número: ");
scanf("%d", &y);
printf("Posición del bit a poner a cero: ");
scanf("%d", &z);
x = ponerACeroBit(y, z); //llamar a la funcion
printf("El número modificado es: %d\n", x);
break;
case 5:
printf("Ejercicio 5: factorial\n");
do
{
printf("Introduzca un numero entero positivo:");
scanf("%ld", &yl);
} while (yl < 0);
xl = factorial(yl); //llamar a la funcion
if (yl < 0 || yl > 16)
printf("No es posible calcular el factorial\n");
else
printf("El factorial de %ld es: %ld\n\n", yl, xl);
break;
case 6:
printf("Ejercicio 6: número de bits\n");
do
{
printf("Introduzca un numero entero positivo:");
scanf("%d", &y);
} while (y < 0); //SIGNIFICA QUE SE REPITA MIENTRAS EL NUMERO SEA
NEGATIVO
x = numeroBits(y); //llamar a numerobits
printf("El numero de bits para representar %d es: %d\n", y, x);
break;
case 7:
printf("Ejercicio 7: cambiar bits\n");
do
{
printf("Introduzca un numero entero positivo:");
scanf("%d", &x);
} while (x < 0);
printf("Posicion del bit inicial a invertir:");
scanf("%d", &y);
printf("Numero de bits a invertir:");
scanf("%d", &z);
x = cambiarBits(x, y, z);
if (z > y)
{
printf("Numero de bits no valido");
return -1;
}
else
{
printf("El numero modificado es: %d\n", x);
return 0;
}
break;
case 8:
printf("Ejercicio 8: intercambiar\n");
printf("Introduzca el valor de d1:");
scanf("%lf", &p1);
printf("Introduzca el valor de d2:");
scanf("%lf", &p2);
intercambiar(&p1,&p2);
printf("\nValores intercambiados: d1=%lf, d2=%lf", *p1, *p2);
break;
case 9:
printf("Ejercicio 9: media aritmética\n");
printf("Numero:");
scanf("%lf", &a);
printf("Numero:");
scanf("%lf", &b);
printf("Numero:");
scanf("%lf", &c);
printf("Numero:");
scanf("%lf", &d);
media = mediaAritmetica(a, b, c, d);//llamar a mediaaritmetica
printf("Media: %.3lf\n", media);
break;
default:
printf("ERROR: Opción incorrecta.\n");
break;
}
system("pause");
opcion = menu(); //llamar a menu
}
}
//DEFINICIONES DE FUNCIONES
scanf("%d", &op);
int parImpar(int n)
{
int resultado;
resultado = n % 2;
return resultado;
}
void operacionesLogicasBits()
{
int a = 8, b = 0, c = 15, d = 93, e, r1, r2, r3, r4, r5, r6;
r1 = a & b | c;
r2 = c & 0177;
r3 = ~a | b ^ c;
r4 = e & c;
r5 = r4 & ~077;
r6 = (a&d) << 4 | (a&e) >> 4;
}
long factorial(long n)
{
long i = 0, factorial = 1;
if (n < 0 || n>16)
return -1;
else
for (i = 1; i < n; n--)
{
factorial = n*factorial;
}
return factorial;
/*
i=1;
while(i<n){
factorial=factorial*n;
n--;
}
*/
}
int numeroBits(int n)
{
int dosElevadoN = 2, nbits = 1; //2^1=2
while (dosElevadoN <= n)//do
{
dosElevadoN = dosElevadoN * 2;
nbits++;
}//while (dosElevadoN <= n);
return nbits;
}
int main()
{
int opcion = 0, base, exponente, numero;
while (opcion < 3)
{
printf("Elija una opcion:\n");
printf("1-Calcular la potencia\n");
printf("2-Calcular el factorial\n");
printf("3-Salir\n");
scanf_s("%d", &opcion);
if (opcion == 1)
{
printf("Introduzca la base:");
scanf_s("%d", &base);
do
{
printf("Introduzca el exponente:");
scanf_s("%d", &exponente);
} while (exponente < 0);
printf("El resultado es %d\n", potencia(base, exponente));
}
if (opcion == 2)
{
printf("Introduzca un numero:");
scanf_s("%d", &numero);
printf("El factorial es %d\n", factorial(numero));
}
}
return 0;
}
if (exponente == 0)
{
resultado = 1;
}
else
{
while (exponente > 1)
{
resultado *= base; //resultado= resultado*base
exponente--; //exponente= exponente - 1
}
/* for(i=1;exponente>i;exponente--)
{
resultado*=base;
}*/
}
return resultado;
}
int main()
{
int numeros[MAX], i;
for (i = 0; i < MAX; i++) // si se pone i<=MAX se imprimen 11 elementos, por eso el ultimo contiene basura,
ya que el array solo consta de 10 elementos(0-9)
{
printf("%d, ", numeros[i]);
}
printf("\n\n");
system("pause");
return 0;
}
PRACTICA 3.2.1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int valor[9] = { 500,200,100,50,20,10,5,2,1 };
int cantidad;
if (cantidad <= 0)
{
printf("ERROR:La cantidad debe ser mayor que cero.\n");
system("pause");
return -1;
}
else
{
cuenta_billetes_monedas(cantidad, valor);
system("pause");
return 0;
}
}
int main()
{
double array[MAXIMO], temp;
int i, j, n, m;
printf("\nNumeros desordenados:");
for (m = 0; m < n; m++)
{
printf("%.2lf, ", array[m]);
}
printf("\nNumeros ordenados:");
for (j = 0; j < n; j++)
{
printf("%.2lf, ", array[j]);
}
printf("\n\n");
system("pause");
return 0;
}
PRACTICA 3.2.3
#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
#define MAXIMO 100
int main()
{
double array[MAXIMO], temp;
int i, j, n, m, bajo, alto, x, central;
PRACTICA 3.2.4
“MENU.H”
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
#define SALIR 6
int Menu();
int introducir_array(int[]);
void visualizar_array(int Array[], int n_eltos);
void ordenar_insercion(int A[], int num);
int busqueda_binaria(int x, int valores[], int num);
int introducir_valor(int x, int Array[], int pos);
“MENU.C”
#include "Menu.h"
int main()
{
int Array[MAX], n_eltos = 0;
int op = 0, x, pos, resu;
while ((op = Menu()) != SALIR)
{
switch (op)
{
case 1:
n_eltos = introducir_array(Array);
break;
case 2:
visualizar_array(Array, n_eltos);
system("pause");
break;
case 3:
ordenar_insercion(Array, n_eltos);
break;
case 4:
printf("Introduzca el valor a buscar:");
scanf_s("%d", &x);
pos = busqueda_binaria(x, Array, n_eltos);
if (pos == -1)
{
printf("\nFracaso.El numero introducido no se encuentra en el array\n");
system("pause");
}
else
{
printf("\nEl numero se encuentra en la posicion %d\n", pos);
system("pause");
}
break;
case 5:
printf("Introduzca el valor a buscar: ");
scanf_s("%d", &x);
pos = busqueda_binaria(x, Array, n_eltos);
if (pos == -1)
{
printf("Fracaso. El numero introducido no se encuentra en el array\n");
}
else
{
printf("Introduzca el nuevo valor: ");
scanf_s("%d", &resu);
if (introducir_valor(x, Array, pos) == -1)
{
printf("Error, array lleno.\n");
}
else
{
printf("Intercambio realizado correctamente.\n");
}
}
system("pause");
break;
case 6:
printf("Saliendo del programa......\n\n");
break;
}
}
}
“FUNCIONES.C”
#include "Menu.h"
int Menu()
{
int op;
system("cls");
do
{
system("cls");
printf("\n");
printf("\t1.Introducir array\n");
printf("\t2.Visualizar array\n");
printf("\t3.Ordenar array\n");
printf("\t4.Buscar un elemento en el array\n");
printf("\t5.Modificar un elemento en el array\n");
printf("\t6.Salir\n");
printf("Seleccione la opcion deseada: ");
scanf_s("%d", &op);
printf("\n\n");
} while (op < 1 || op>6);
return op;
}
typedef struct
{
char ingles[MAX_CAD];
char espanyol[MAX_CAD];
}tPalabra;
int menu();
void LeeCadena(char cadena[], int max);
int anyadir_palabra(tPalabra Dicc[], int num);
void traducir_palabra(tPalabra Dicc[], int num);
void mostrar_diccionario(tPalabra Dicc[], int num);
“MAIN DICC.C”
#include "diccionario.h"
int main()
{
tPalabra Diccionario[MAX_PAL]; //la estructura ha sido renombrada a Diccionario
int num_pal = 0;
int opcion;
printf("PROGRAMA DICCIONARIO\n");
printf("====================\n");
case 2:
traducir_palabra(Diccionario, num_pal);
break;
case 3:
mostrar_diccionario(Diccionario, num_pal);
break;
}
}
}
“FUNCIONES.C”
#include "diccionario.h"
int menu()
{
int op;
do
{
system("cls");
printf("\n"
"\t1.-Anyadir palabra\n"
"\t2.-Traducir palabra\n"
"\t3.-Mostrar diccionario\n"
"\t4.-Salir\n"
"\n"
"Elija una opcion: ");
scanf("%d", &op);
while (getchar() != '\n'); //fflush(stdin)
} while ((op < 1) || (op > 4));
return op;
}
printf("ESPANYOL \t\tINGLES\n");
printf("-------- \t\t------\n");
#define MAX_CAD 20
#define MAX_ALUM 100
#define NUM_NOTAS 5
typedef struct
{
char nombre[MAX_CAD];
char DNI[10];
double nota;
}tficha;
int main();
tficha LeeAlumno();
void LeeCadena(char cadena[], int max);
int PedirDatos(tficha ficha[]);
void MuestraAlumnos(tficha ficha[], int num);
void MuestraAlumno(tficha ficha);
void ImprimirEstadistica(double suma, int cont[], int num);
void CalcularEstadistica(tficha ficha[], int num);
“MAIN.C”
#include "estadistica.h"
int main()
{
tficha ficha[MAX_ALUM];
int num = 0;
printf("Programa estadistica\n");
num = PedirDatos(ficha);
if (num > 0)
{
MuestraAlumnos(ficha, num);
CalcularEstadistica(ficha, num);
}
system("pause");
}
“ESTADISTICA.C”
#include "estadistica.h"
“ENTRADA.C”
#include "estadistica.h"
tficha LeeAlumno()
{
tficha alumnos;
printf("Nombre: ");
while (getchar() != '\n');
LeeCadena(alumnos.nombre, 50);
printf("DNI: ");
LeeCadena(alumnos.DNI, 50);
do
{
printf("Nota: ");
scanf_s("%lf", &alumnos.nota);
} while (alumnos.nota < 0 || alumnos.nota>10);
printf("\n");
return alumnos;
}
“SALIDA.C”
#include "estadistica.h"
printf("\tNOMBRE\t\tDNI\t\tNOTA\n");
printf("\t------\t\t---\t\t----\n");
for (i = 0; i < num; i++)
{
MuestraAlumno(ficha[i]);
}
}
printf("\n");
printf("La nota media de la clase es: %.2lf\n", suma / num);
if (cont[0] != 0)
printf("Suspenso: %.2lf %c\n", (((float)cont[0] / num) * 100), 37);
else
printf("Suspenso: %d %c.\n", cero, 37);
if (cont[1] != 0)
printf("Aprobado: %.2lf %c\n", (((float)cont[1] / num) * 100), 37);
else
printf("Aprobado: %d %c.\n", cero, 37);
if (cont[2] != 0)
printf("Notable: %.2lf %c\n", (((float)cont[2] / num) * 100), 37);
else
printf("Notable: %d %c.\n", cero, 37);
if (cont[3] != 0)
printf("Sobresaliente: %.2lf %c\n", (((float)cont[3] / num) * 100), 37);
else
printf("Sobresaliente: %d %c.\n", cero, 37);
if (cont[4] != 0)
printf("Matricula: %.2lf %c\n", (((float)cont[4] / num) * 100), 37);
else
printf("Matricula: %d %c.\n", cero, 37);
}
PRACTICA 5.1
“CABECERA.H”
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MemoryManager.h"
typedef enum
{
blanco, amarillo, naranja, rosa, rojo, verde, azul, morado, marrón, negro
}tColor;
typedef enum
{
camiseta, camisa, pantalon, falda, vestido, zapatos, jersey, chaqueta
}tTipoPrenda;
typedef struct
{
char ref[15];
char talla[5];
tColor color;
tTipoPrenda tipo;
char h_m;
int n_uds;
float precio;
}tPrenda;
typedef struct
{
char direccion[50];
char tfno[10];
char e_mail[50];
}tContacto;
typedef struct
{
int codigo;
tContacto contacto;
int n_prendas;
tPrenda *p_prendas;
}tTienda;
typedef struct
{
tContacto contacto; // Estructura con dirección, teléfono y correo-e de la oficina donde se gestionan las tiendas
int n_tiendas; // Número total de tiendas
tTienda *p_tiendas; // Puntero al inicio del array dinámico de las tiendas de la cadena
}tCadena;
int Menu();
“SOURCE.C”
#include "cabecera.h"
#include"MemoryManager.h"
int main()
{
int nelementos, i, k, n, *p;
p = NULL;
//Eliminar elemento
printf("Introduzca a posicion de elemento a eliminar: \n");
scanf("%d", &k);
k = EliminaElemento(&p, nelementos, k);
//Liberacion de memoria
free(p);
MemoryManager_DumpMemoryLeaks();
system("pause");
return 0;
}
nelementos = nelementos - 1;
return nelementos;
}
PRACTICA 5.2.1
“CABECERA.H”
#define MAX_CARAC 30
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MemoryManager.h"
typedef struct
{
char nombre[MAX_CARAC];
float nota;
}tficha;
“MAIN.C”
#include "cabecera.h"
int main()
{
tficha *palumno;
int nalumnos;
//Liberacion de memoria
free(palumno);
MemoryManager_DumpMemoryLeaks();
system("pause");
return 0;
}
“FUNCIONES.C”
#include "cabecera.h"
tficha LeeAlumno()
{
tficha alumnos;
printf("Nombre: ");
while (getchar() != '\n');
LeeCadena(alumnos.nombre, MAX_CARAC);
do
{
printf("Nota: ");
scanf_s("%f", &alumnos.nota);
} while (alumnos.nota < 0 || alumnos.nota>10);
printf("\n");
return alumnos;
}
printf("\tNOMBRE\t\tNOTA\n");
printf("\t------\t\t----\n");
for (i = 0; i < nalumnos; i++)
{
MuestraAlumno(palumno+i);
}
}
void MuestraAlumno(tficha *palumno)
{
printf("\t%s\t\t%f\n", palumno->nombre, palumno->nota);
}
PRACTICA 5.2.2
“CABECERA.H”
#define MAX_CARAC 30
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MemoryManager.h"
typedef struct
{
char nombre[MAX_CARAC];
float nota;
}tficha;
“MAIN.C”
#include "cabecera.h"
int main()
{
tficha *palumno;
int nalumnos;
//Liberacion de memoria
free(palumno);
MemoryManager_DumpMemoryLeaks();
system("pause");
return 0;
}
“FUNCIONES.C”
#include "cabecera.h"
printf("\tNOMBRE\t\tNOTA\n");
printf("\t------\t\t----\n");
for (i = 0; i < nalumnos; i++)
{
MuestraAlumno(palumno + i);
}
}
typedef struct
{
char *pnombre;
float nota;
}tficha;
“MAIN.C”
#include "cabecera.h"
int main()
{
tficha *palumno;
int nalumnos, nal_leidos;
//Liberacion de memoria
LiberaMemoria(palumno, nal_leidos);
MemoryManager_DumpMemoryLeaks();
system("pause");
return 0;
}
“FUNCIONES.C”
#include "cabecera.h"
printf("\tNOMBRE\t\tNOTA\n");
printf("\t------\t\t----\n");
for (i = 0; i < nalumnos; i++)
{
MuestraAlumno(palumno + i);
}
}
typedef enum
{
blanco, amarillo, naranja, rosa, rojo, verde, azul, morado, marrón, negro
}tColor;
typedef enum
{
camiseta, camisa, pantalon, falda, vestido, zapatos, jersey, chaqueta
}tTipoPrenda;
typedef struct
{
char ref[15];
char talla[5];
tColor color;
tTipoPrenda tipo;
char h_m;
int n_uds;
float precio;
}tPrenda;
typedef struct
{
char direccion[50];
char tfno[10];
char e_mail[50];
}tContacto;
typedef struct
{
int codigo;
tContacto contacto;
int n_prendas;
tPrenda *p_prendas;
}tTienda;
typedef struct
{
tContacto contacto; // Estructura con dirección, teléfono y correo-e de la oficina donde se gestionan las tiendas
int n_tiendas; // Número total de tiendas
tTienda *p_tiendas; // Puntero al inicio del array dinámico de las tiendas de la cadena
}tCadena;
int Menu();
void LeeCadena(char cadena[], char *p_mensaje, int max);
tContacto LeerContacto();
int CrearTiendas(tCadena *p_cadena);
int IniTienda(tTienda *pTienda);
int IniTiendas(tTienda *p_tiendas, int n_tiendas);
tPrenda IniPrenda();
void IniPrendasUnaTienda(tPrenda *p_prendas, int n_prendas);
void IniPrendasTiendas(tCadena cadena);
int AnyadirTienda(tCadena *p_cadena);
“MAIN.C”
#include "cabecera.h"
char Colores[10][10]={"blanco", "amarillo", "naranja", "rosa", "rojo", "verde", "azul", "morado", "marrón", "negro"};
char TiposPrendas[8][10]={"camiseta", "camisa", "pantalon", "falda", "vestido", "zapatos", "jersey", "chaqueta"};
main()
{
int op, n_tiendas=0;
tCadena cadena;
cadena.n_tiendas=0;
cadena.p_tiendas=NULL;
do
{
op=Menu();
if (op!=6)
{
switch (op)
{
case 1: // crear array de tiendas
if (CrearTiendas(&cadena)==-1)
ErrorMemoria(cadena, "las tiendas");
system("pause");
break;
case 2: //Inicializar las tiendas y crear arrays de prendas
if (IniTiendas(cadena.p_tiendas, cadena.n_tiendas)==-1)
ErrorMemoria(cadena, "las prendas");
system("pause");
break;
case 3:
//VisuTiendas(cadena.p_tiendas,cadena.n_tiendas);
VisuCadena(cadena);
system("pause");
break;
case 4: //Abrir una tienda: crearla e inicializarla
if (AnyadirTienda(&cadena)==-1)
ErrorMemoria(cadena, "las tiendas");
system("pause");
break;
}while (op!=6);
LiberaMemoria(cadena);
MemoryManager_DumpMemoryLeaks();
return 0;
}
int Menu()
{
int op;
do
{
system("cls");
printf("\n\n");
printf("\t1. Crear array de tiendas\n");
printf("\t2. Inicializar tiendas y prendas\n");
printf("\t3. Visualizar datos\n");
printf("\t4. Anyadir tienda\n");
printf("\t5. Eliminar un tipo de prenda de las tiendas\n");
printf("\t6. Salir\n");
“ENTRADADATOS.C”
#include "cabecera.h"
tPrenda IniPrenda()
{
tPrenda ropa = { 0 };
printf("\n\n");
do
{
printf("0.Camiseta, 1.Camisa, 2.Pantalon, 3.Falda, 4.Vestido, 5.Zapatos, 6.Jersey, 7.Chaqueta\n");
printf("Elige el tipo de prenda, intrduciendo su numero correspondiente: \n");
scanf("%d", &ropa.tipo);
} while (ropa.tipo < 0 || ropa.tipo>7);
do
{
printf(" 0. blanco, 1. amarillo, 2. naranja, 3. rosa, 4. rojo, 5.verde, 6. azul, 7. morado, 8. marrón,
9. negro\n");
printf("Elige el color, introduciendo su numero correspondiente :\n");
scanf("%d", &ropa.color);
} while (ropa.color < 0 || ropa.color > 9);
“VISUALIZARDATOS.C”
#include "cabecera.h"