Sei sulla pagina 1di 12

GRUPO 6

Fecha: 15 de Febrero
Tema: Solucin de Parcial

SOLUCIN PARCIAL 1
1. Declaracin de estructura school y su uso
#include
#include
#include
#include

<cstdlib>
<iostream>
<string>
<vector>

using namespace std;


/*Se crea la estructura School, como pueden ver tiene las cuatro variables que pedan al principio, el constructor
con parmetros y la funcin imprimir.*/
struct School{
/*Aqu

estn

las

variables*/
string
name;
int
icfes_code;
string
address;
int
budget;

/*Aqu est el constructor por parmetros aunque recibe las mismas variables,
ustedes podrn ver que le puse un 1 al frente por consiguiente c++ lo toma
como una variable totalmente distinta, y por qu hice esto, porque si ustedes
colocaran name = name; o sea la variable que se asigna a ella misma no
tendra sentido.
*/
School(string

name1,

int

budget

icfes_code1,

string

address1,
name
icfes_code
address

int
=
=
=

budget1){
name1;
icfes_code1,
address1;

budget1;

}
/*Aqu est la funcin que imprime un colegio. Se separan las variables por caracteres para especificar cul es

la variable que voy a imprimir a continuacin. */


void
cout<<"name: "<<name<<" icfes_code: "<<icfes_code<<" address: "<<address<<
"butget:
}

print(){
"<<budget<<endl;

};
/*Aqu
est
la
funcin
que
es
usada
para
crear
un
colegio.
Como
pueden
ver
cre
unas
variables
con
el
mismo
nombre
y
lo
nico
que
hice
fue
leerlas,
el
tipo
de
dato
de
retorno de esta funcin es School, eso significa que creo una variable llamada temp del tipo School
que es la estructura que cre arriba y lo retorno. */
School
string
int
string
int

make_school(){
name;
icfes_code;
address;
budget;

cin>>name;
cin>>icfes_code;
cin>>address;
cin>>budget;
/*Aqu creo la variable temp. Entre parntesis se asignan todas las variables
que ingresamos arriba, esto se hace para llamar al constructor de School
y como pueden ver tiene mucha similaridad a llamar a una funcin, slo que
llamamos
al
constructor.
School
/*Aqu

retornamos

la

*/

temp(name,icfes_code,address,budget);

variable

que

acabamos
de
return

crear.

*/
temp;

}
/*Aqu est el main. Como podemos ver le decimos que escriba los datos del primer colegio, creamos una variable y la
inicializamos con el retorno del llamado a la funcin de arriba, como arriba nos crea un dato school y nos lo retorna,
entonces first queda llena con esos datos, y lo mismo pasa con la segunda variable school, despus utilizamos la
funcin print() que es una funcin que hace parte de la misma estructura para imprimir los datos. */
int

main(){
School
School

first
second

=
=

make_school();
make_school();

first.print();
second.print();
system("PAUSE");
EXIT_SUCCESS;

return
}

2.

Ordenamiento

de

school

#include
#include
#include
#include

respecto

su

icfes_code
<cstdlib>
<iostream>
<string>
<vector>

using

namespace

std;

/*Me parece un poco redundante volver a escribir las estructuras usadas en el primer punto as que simplemente las voy
a dejar indicadas que sera la estructura school, y tambin voy a dejar indicada la funcin make_school(), si quieren
ver
detalladamente
esta
funcin
est
arriba
en
el
primer
punto.
*/
struct School{};
School

make_school(){}

/*Esta funcin sort() lo que hace es recibir un vector de School llamado schools y lo ordena, aqu lo que utilizo para
ordenar el vector es un mtodo llamado burbuja, tal vez
no sea muy eficiente pero es el nico que conozco, este mtodo funciona comparando cada posicin con las dems y
dejando
los
menores
en
la
menor
posicin.
*/
void

sort(vector<School>
for(int

&schools){
School
temp;
i
=
0;
i
<
schools.size();
i++){
for(int
n
=
i;
n
<
schools.size();
n++){
if(schools[i].icfes_code
>
schools[n].icfes_code){
temp
=
schools[i];
schools[i]
=
schools[n];

schools[n]

temp;
}
}
}

}
/*Este
main
dato
queda
para

lo
que
hace
guardado
en
la
llenar

es
preguntarle
al
variable
max
y
lo
el
vector

usuario
la
cantidad
de
escuelas,
siguiente
que
hago
es
empezar
un
de
escuelas.

int

este
for
*/

main(){
max;
schools;
max;

int
vector<School>
cin
>>

/* Se hace un for de 0 hasta max(cantidad de escuelas), en este for se crea cada una usando la funcin
make_school(), eso significa que lo primero que va a hacer el compilador va a ser llamar a esa funcin,
esa funcin crea un colegio y lo retorna, el retorno se agrega al final del vector con push_back(). */
for(int

sort(schools);
for(int

//Se

0;

ordena

i=0;i<schools.size();i++){
schools[i].print();
//Se
imprime

i
<
max;
i++){
schools.push_back(make_school());
}
el

cada

vector

escuela

return

del

schools.

vector

schools.
}

system("PAUSE");
EXIT_SUCCESS;

3. Declaracin de la estructura student y grade


#include
#include
using

<iostream>
<vector>
namespace

std;

/* Se crea primero la estructura Grade porque ser llamada despus por la estructura Student, si se crea la estructura
Student antes de Grade, la primera tendr declarado un vector del tipo Grade y al no encontrarlo antes de ella se
generar
un
error.
*/
struct
{

Grade
string

aclass;

//Nombre

de

la

materia.

double value; //Valor de la nota.


//Aqu estn los constructores de la estructura.
Grade(string aclass, double value):
aclass(aclass), value(value) {}
Grade() {} //Constructor vacio.
// Esta funcin imprimir los atributos de la estructura Grade.
void print()
{
cout << aclass << ": " << value << endl;
}
};
/* Ahora procedemos a crear la estructura Student, ya teniendo el tipo de dato Grade para declarar el atributo(vector)
grades. */
struct Student
{
int n; //Numero de materias.
string name, last_name, id_type, id_number;
vector<Grade> grades; //Vector de materias.
//Constructores de la estructura Student.
Student(string name, string last_name, string id_type, string id_number, int n, vector<Grade> grades):
name(name), last_name(last_name), id_type(id_type), id_number(id_number), n(n), grades(grades) {}
Student(){}
/* Funcin que imprime los atributos, incluyendo las materias que estn dentro del vector grades. */
void print()
{
cout << name << " " << last_name << ", " << id_type << ": " << id_number << endl;
cout << "Grades: " << endl;

//Se hace un for para imprimir cada materia.


for(int i = 0; i < n; i++)
grades[i].print();
}
};
/* Ahora creamos una funcin que tendr como objetivo crear a un estudiante y retornarlo. */
Student createStudent(string name, string last_name, string id_type, string id_number, int n, vector<Grade> grades)
{
//Se usa el constructor de la estructura Student para crear al estudiante s.
Student s(name, last_name, id_type, id_number, n, grades);
//Se retorna al estudiante s.
return s;
}
int main()
{
/* Aqu vamos a crear dos instancias de estudiantes con sus respectivas materias. */
vector<Grade> s1_grades; //Vector que ser asignado para el estudiante 1(s1).
Grade g1("POO", 4); //Materia 1
Grade g2("Maths", 3.5); //Materia 2
s1_grades.push_back(g1); //Se agrega la Materia 1 al vector s1_grades.
s1_grades.push_back(g2); //Se agrega la Materia 2 al vector s1_grades.
//Se crea al estudiante 1, usando la funcin creada para tal objetivo.
Student s1 = createStudent("Laura", "Alvarez", "CC", "123", 2, s1_grades);
vector<Grade> s2_grades; //Vector que ser asignado para el estudiante 2 (s2).
Grade g3("POO", 3.5); //Materia 3
Grade g4("Maths", 4); //Materia 4
s2_grades.push_back(g3); //Se agrega la Materia 3 al vector s2_grades.
s2_grades.push_back(g4); //Se agrega la Materia 4 al vector s2_grades.
//Se crea el estudiante 2, ya teniendo creado el vector de materias.
Student s2 = createStudent("Peter", "Pan", "TI", "123", 2, s2_grades);
//Se imprimen los estudiantes.
s1.print();

s2.print();
system("PAUSE");
}

4. Buscar un estudiante por su id_number


#include <iostream>
#include <vector>
using namespace std;
/*Se utilizan las estructuras del punto anterior, as que slo escribir sus nombres. */
struct Grade
{
};
struct Student
{
};
/*Se utilizar la funcin que crea estudiantes, tambin escrita en el anterior punto. */
Student createStudent(string name, string last_name, string id_type, string id_number, int n, vector<Grade> grades)
{
Student s(name, last_name, id_type, id_number, n, grades);
return s;
}
int main()
{
int m; //m ser el nmero de estudiantes a ingresar.
cin >> m;
vector<Student> students;
/*Se hace un for que pedir los datos de los estudiantes. */
for(int i = 0; i < m; i++)
{
string name, last_name, id_type, id_number;
int n;
//Se piden los valores de las variables por consola.

cin >> name >> last_name >> id_type >> id_number >> n;
vector<Grade> grades;
/*Se hace un for que llenar el vector grades, se llena primero para despus
agregarlo ya con los datos al estudiante. */
for(int j = 0; j < n; j++)
{
string name_grade;
double value;
cin >> name_grade >> value;
Grade gr(name_grade, value);//Se crea la materia usando su constructor.
grades.push_back(gr);//Se agrega la materia gr al vector grades.
}
Student st = createStudent(name, last_name, id_type, id_number, n, grades);
students.push_back(st); //Se agrega el estudiante st al vector students.
}
string id; //Id a buscar.
cin >> id;
//Se declara un bool para saber si el programa encontr o no al estudiante.
bool found = false;
for(int i = 0; i < m; i++)
{
//Se compara el id_number de la posicin i con el id ingresado por el usuario.
if(students[i].id_number == id)
{
//Cambia el estado de found a True para saber que s encontr al estudiante.
found = true;
students[i].print();//Imprime los datos del estudiante
}
}
if (!found)//Si found est en False significa que no se encontr al estudiante.
cout << "No found";

system("PAUSE");
}

5. Nmeros que no son primos y tampoco estn en la serie Fibonacci


#include <iostream>
#include <vector>
using namespace std;
vector<int> f; //Tendr los nmeros fibonacci.
/*Se crea la funcin isPrime() que retorna un booleano. Si el nmero 'n' es primo retornar verdadero, sino retornar
falso.*/
bool isPrime (int n)
{
int cont = 0; //Contador de divisores.
for ( int i = 1; i <= n; ++i )
if ( n % i == 0 ) //Si el residuo es exacto, es divisor.
cont++;
if (cont <= 2) //Si el contador es menor o igual a 2, es primo.
return true;
return false;
}
/* Esta funcin generar el nmero fibonacci en la posicin n. */
int fibonacci (int n)
{
if (n < 2)
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
/* Se valida si el nmero es primo o est en la serie fibonacci, si es as retorna falso, sino, retornar verdadero.
*/
bool isValid (int n)

{
if ( isPrime(n) ) return false;
for ( int i = 0; i < f.size(); ++i )
if ( f[i] == n )
return false;
return true;
}
int main ()
{
int n; //Cantidad de nmeros.
cin >> n;
for ( int i = 0; i < n; ++i ) //Se llena el vector f con los nmeros de la serie fibonacci.
f.push_back(fibonacci(i));
for ( int i = 1; i <= n; ++i ) //Se valida cada nmero de 1 a n.
if ( isValid(i) )
cout << i << " "; //Si es valido, se imprime.
system("PAUSE");
return 0;
}

6. Paradigma de Programacin
Trmino paradigma. Para Kuhn, el trmino se reere a la forma en que un cientco percibe al mundo y a la estructura de teoras y suposiciones
que modicanesta percepcin.
El trmino paradigma hace nfasis en la eficacia de procesos que resuelven una determinada tarea o problema, generalmente cuando se habla
de paradigmas de programacin, sabemos que se refiere a un algoritmo, es decir, una serie de pasos lgicos que nos van a llevar a desarrollar
un trabajo o suplir una necesidad, adicionalmente un paradigma de programacin cuenta con una gramtica propia del grupo de personas que se
renen a crear el algoritmo, es decir, la gramtica en el paradigma es el lenguaje en el cual es creado un programa, cuando hablamos de
lenguaje inmediatamente debemos mencionar la semntica la cual es otro pilar de un paradigma; la semntica no es ms que la interpretacin y
funcin que un programa le da a cada palabra del cdigo, es decir palabras que en la vida cotidiana pueden no significar algo concreto en el
cdigo de programacin puede hacer una determinada funcin, til y reconocible slo en quienes conocen la gramtica.

Sin embargo hay quienes insisten que un paradigma es ms que sentencias de algoritmo con una gramtica propia y su respectiva semntica,
sino que es un conjunto de pasos sistemticos aplicables a todos los niveles de programacin.(Robert Floyd).
Dentro de los paradigmas de programacin existen varios tipos, los ms esenciales son:

Programacin imperativa
Programacin orientada a objetos
Programacin funcional
Programacin lgica

imagen (clasificacin de paradigmas)disponible en:http://es.scribd.com/doc/9174723/Paradigmas-de-Programacion

MATERIAL DE ESTUDIO ONLINE Y EXTRACLASE


1) Paradigmas de programacin y tipos de paradigma: http://es.scribd.com/doc/9174723/Paradigmas-de-Programacion
2) Serie fibonacci: http://es.wikipedia.org/wiki/Sucesi%C3%B3n_de_Fibonacci
3) Serie fibonacci C++: http://www.youtube.com/watch?v=Dq7ORUWwSMg
4) Nmeros primos c ++: http://www.youtube.com/watch?v=6mW9l0rIlC8

5) Uso del camelcase: http://es.wikipedia.org/wiki/CamelCase


6) Uso de estructuras c++: http://www.youtube.com/watch?v=9kPaqaqpqTQ