Add files via upload

This commit is contained in:
Fernando Méndez
2019-06-20 13:06:16 +02:00
committed by GitHub
parent 989e433448
commit 2fd3b1e062
80 changed files with 2922 additions and 0 deletions

View File

@ -0,0 +1,27 @@
#include "Estudiante.h"
using namespace std;
bool cargar(tEstudiante& estudiante, std::ifstream& archivo) {
bool cargar = false;
if (!archivo.fail()) {
archivo.ignore();
getline(archivo, estudiante.nombre);
archivo >> estudiante.NIF;
archivo >> estudiante.fechaMatricula;
archivo >> estudiante.nota;
cargar = true;
}
return cargar;
}
void mostrar(tEstudiante& estudiante) {
cout << right << setw(9) << estudiante.NIF
<< setw(2) << "-" << setw(2)
<< setw(8) << estudiante.fechaMatricula
<< setw(2) << "-" << setw(2)
<< setw(3) << estudiante.nota
<< setw(2) << "-" << setw(2)
<< setw(20) << estudiante.nombre << endl;
}

View File

@ -0,0 +1,23 @@
#ifndef _ESTUDIANTE
#define _ESTUDIANTE
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
//Constantes:
//Tipos:
typedef struct tEstudiante {
std::string nombre, NIF, fechaMatricula;
int nota;
};
//Funciones:
bool cargar(tEstudiante& estudiante, std::ifstream& archivo);
void mostrar(tEstudiante& estudiante);
#endif // !_ESTUDIANTE

View File

@ -0,0 +1,63 @@
#include "ListaEstudiantes.h"
using namespace std;
bool cargar(tListaEstudiantes& lista, ifstream& archivo, int& numAlumnos) {
bool carga = false;
lista.estudiante = new tEstudiante[numAlumnos];
lista.cont = 0;
if (insertar(lista, numAlumnos, archivo)) {
carga = true;
}
return carga;
}
bool buscar(tListaEstudiantes& lista, std::string NIF, int& ini, int& fin, int& pos) {
bool encontrado = false;
if (ini <= fin) {
pos = (ini + fin) / 2;
if (NIF < lista.estudiante[pos].NIF) {
fin = pos - 1;
encontrado = buscar(lista, NIF, ini, fin, pos);
}
else if (lista.estudiante[pos].NIF < NIF) {
ini = pos + 1;
encontrado = buscar(lista, NIF, ini, fin, pos);
}
else {
encontrado = true;
}
}
return encontrado;
}
bool insertar(tListaEstudiantes& estudiante, int& numAlumnos, ifstream& archivo) {
bool insertado = false;
int ini = 0, fin = estudiante.cont - 1, pos = 0;
for (int i = 0; i < numAlumnos; i++) {
if (!buscar(estudiante, estudiante.estudiante[estudiante.cont].NIF, ini, fin, pos)) {
for (int i = estudiante.cont; i > 0; i--){
estudiante.estudiante[i] = estudiante.estudiante[i - 1];
}
if (cargar(estudiante.estudiante[pos], archivo)) {
estudiante.cont++;
insertado = true;
}
}
}
return insertado;
}
void mostrar(tListaEstudiantes& estudiante) {
for (int i = 0; i < estudiante.cont; i++){
mostrar(estudiante.estudiante[i]);
}
}
void destruir(tListaEstudiantes& estudiantes) {
delete[] estudiantes.estudiante;
}

View File

@ -0,0 +1,24 @@
#ifndef _LISTAESTUDIANTES
#define _LISTAESTUDIANTES
#include "Estudiante.h"
//Constantes:
//Tipos:
typedef struct tListaEstudiantes {
tEstudiante *estudiante; //Ordenada por NIF.
int cont;
};
//Funciones:
bool cargar(tListaEstudiantes& lista, std::ifstream& archivo, int&);
bool buscar(tListaEstudiantes& lista, std::string NIF, int& ini, int& fin, int& pos); //Binaria y recursiva.
bool insertar(tListaEstudiantes& estudiante, int&, std::ifstream&);
void mostrar(tListaEstudiantes& estudiante);
void destruir(tListaEstudiantes& estudiantes);
#endif // !_LISTAESTUDIANTES

View File

@ -0,0 +1,62 @@
#include "ListaGrupos.h"
using namespace std;
bool cargar(tListaGrupos& grupos) {
bool carga = false;
ifstream archivo;
int numAlum = 0;
grupos.cont = 0;
archivo.open("notas.txt");
if (!archivo.is_open()) {
cout << "No se ha podido cargar las notas." << endl;
}
else {
while (!archivo.fail()) {
grupos.grupo[grupos.cont] = new tGrupo;
archivo >> grupos.grupo[grupos.cont]->id;
archivo >> numAlum;
if (cargar(grupos.grupo[grupos.cont]->estudiantes, archivo, numAlum)) {
grupos.cont++;
carga = true;
}
}
}
archivo.close();
return carga;
}
void mostrar(tListaGrupos& grupos) {
cout << setfill(char('-')) << setw(50) << "\n" << setfill(char(0));
for (int i = 0; i < grupos.cont; i++){
cout << "GRUPO: " << grupos.grupo[i]->id << endl;
mostrar(grupos.grupo[i]->estudiantes);
cout << setfill(char('-')) << setw(50) << "\n" << setfill(char(0));
}
}
bool buscar(tListaGrupos& grupos, std::string NIF, int& i) {
bool encontrado = false, busqueda = false;
int ini = 0, fin = grupos.grupo[i]->estudiantes.cont - 1, pos = 0;
if (!busqueda && i < grupos.cont) {
encontrado = buscar(grupos.grupo[i]->estudiantes, NIF, ini, fin, pos);
if (encontrado) {
busqueda = true;
}
else {
i++;
busqueda = buscar(grupos, NIF, i);
}
}
return busqueda;
}
void destruir(tListaGrupos grupos) {
for (int i = 0; i <= grupos.cont; i++){
destruir(grupos.grupo[i]->estudiantes);
delete grupos.grupo[i];
}
}

View File

@ -0,0 +1,27 @@
#ifndef _LISTAGRUPOS
#define _LISTAGRUPOS
#include "ListaEstudiantes.h"
//Constantes:
const int MAX_GRUPOS = 10;
//Tipos:
typedef struct tGrupo {
tListaEstudiantes estudiantes;
std::string id;
};
typedef struct tListaGrupos {
tGrupo *grupo[MAX_GRUPOS];
int cont;
};
//Funciones:
bool cargar(tListaGrupos& grupos);
void mostrar(tListaGrupos& grupos);
bool buscar(tListaGrupos& grupos, std::string NIF, int& pos); //Recursiva;
void destruir(tListaGrupos grupos);
#endif // !_LISTAGRUPOS

View File

@ -0,0 +1,9 @@
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifndef DBG_NEW
#define DBG_NEW new (_NORMAL_BLOCK , __FILE__<5F>, __LINE__<5F>)
#define new DBG_NEW
#endif
#endif // _DEBUG

View File

@ -0,0 +1,36 @@
//Examen Junio 2016 - FP
//Grupo_2
//Fernando M<>ndez Torrubiano
#include "ListaGrupos.h"
#include "checkML.h"
using namespace std;
int main() {
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //Detecta fugas de memoria.
system("chcp 1252");//Castellano.
system("cls");
tListaGrupos grupos;
string NIF;
int pos = 0;
if (cargar(grupos)) {
mostrar(grupos);
cout << endl << "Introduce un NIF: ";
cin >> NIF;
if (buscar(grupos, NIF, pos)) {
cout << "Grupo: " << grupos.grupo[pos]->id << endl;
}
else {
cout << "No se ha encontrado el alumno." << endl;
}
}
else {
cout << "FIN DEL PROGRAMA." << endl;
}
system("PAUSE");
destruir(grupos);
return 0;
}

View File

@ -0,0 +1,14 @@
A
3
nombre1 apellidos1
76541321G 15/06/01 10
nombre2 apellidos2
92648282F 15/06/06 5
nombre3 apellidos3
32154637K 15/06/03 8
B
2
nombre4 apellidos4
12345678X 15/06/01 9
nombre5 apellidos5
12225678F 15/06/01 9