|
|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - N3oDoc
Páginas: [1]
1
« en: Lunes 21 de Junio de 2010, 18:17 »
En el código que muestras estas sumando todos los números desde el 20 al 40, es decir: 20 + 21 +22 + 23 ....+ 40 Mientras que lo que se te pide es que sumes solo los pares como bien dices al principio. El código correcto sería el siguiente: #include <iostream> using namespace std; const int MAXNUMERO = 40; int main(){ int i,suma=0,producto=1; for(i=20;i<=MAXNUMERO;i++){ if(i % 2 == 0){ //si el resto de la división entre 2 da como resultado 0 significa que i es par suma = suma + i; producto = producto*i; } } printf("Suma %d nProducto %d n", suma, producto); system("pause"); return 0; }
2
« en: Lunes 21 de Junio de 2010, 01:20 »
Hola, me ayudas en estos 2 ej de Info? No pido que me lo hagas, sino, si lo entendiste, que me digas por favor que es lo que me pide en estos dos ejercicios. Gracias
1) Escribir una función que calcule el factorial de un número natural pasado como parámetro, en forma iterativa. Realizar todas las validaciones que considere necesarias.
recursivamente: int Factorial(const int n) int res; if (n == 0){ res = 1; }else{ res = n*Factorial(n-1); } return res; } 2) a) Defina un tipo de dato "tipodato" a partir del tipo nativo "float" (usando typedef) b) Defina un tipo enumerativo "tescala" que contenga los símbolos CELSIUS y FAHRENHEIT. c) Escriba una función que reciba un valor de temperatura en precisión doble, y la escala de temperaturas de destino, y realice la conversión del valor.
a.) typedef float tipodato b.) typedef enum escala{CELSIUS,FAHRENHEIT};
3
« en: Lunes 21 de Junio de 2010, 00:50 »
Estructuras repetitivas • También llamadas bucles o iteraciones. • Permiten alterar el flujo del programa para repetir grupos de acciones. • Ejecutan un conjunto de operaciones: a) Un número de veces determinado a priori. b) Un número de veces indeterminado a priori. Introducción a los Computadores 35 Tema 3. Estruc. control • Una condición de control (expresión lógica) permite controlar el número de repeticiones.
El bucle MIENTRAS (while) • Las acciones dentro del bucle se repiten un número de veces indeterminado a priori. MIENTRAS CondControl HACER // Acciones FINMIENTRAS
Características del bucle MIENTRAS • Condición de control del bucle → expresión lógica. • Las sentencias que forman el cuerpo del bucle se ejecutan 0 o más veces. • Denominado también bucle pre-prueba (se evalúa la condición antes de ejecutar sus sentencias). • Si la condición es VERDADERO el bucle se sigue ejecutando. • Algunos ejemplos de bucles con nombre: Introducción a los Computadores 37 Tema 3. Estruc. control – Bucle controlado por contador – Bucle controlado por centinela – Bucle contador
Bucle controlado por contador • Se ejecuta un número determinado de veces. • Se utiliza una variable de control del bucle (vcb). • Componentes del bucle: – Inicialización – Evaluación – Incremento
Bucle controlado por centinela • Centinela → valor especial de una variable que controla el final del bucle. • Es necesario actualizar el centinela en cada iteración. • La primera evaluación de la condición exige una lectura adelantada de la variable de control del bucle.
Bucle contador • Útil cuando se quiere contar el número de veces que se ejecuta el bucle. • La expresión lógica no depende del contador.
El bucle REPETIR (do..while) • Las acciones dentro del bucle se repiten un número de veces indeterminado a priori.
Características del bucle REPETIR • Condición de control del bucle → expresión lógica. • Las sentencias que forman el cuerpo del bucle se ejecutan 1 o más veces. • Denominado también bucle post-prueba (se evalúa la condición después de ejecutar sus sentencias). • Si la condición es FALSO el bucle se sigue ejecutando. Introducción a los Computadores 42 Tema 3. Estruc. control • Menos general que el bucle MIENTRAS → hay ciertos bucles que no pueden implementarse con REPETIR.
El bucle PARA (for) • Se emplea cuando el número de veces que se repite el bucle se conoce a priori.
Cómo se ejecuta un bulce PARA • La variable de control del bucle (VCB) se incrementa (o decrementa, según el paso sea positivo o negativo) automáticamente. • El valor de la VCB puede usarse, pero no cambiarse dentro del bucle. • La VCB queda indefinida al salir del bucle. • La VCB puede ser de cualquier tipo ordinal. Introducción a los Computadores 44 Tema 3. Estruc. control • El bucle se ejecuta en su totalidad. • Los valores de inicial (vi) y final (vf) se evalúan una sola vez, al principio del bucle.
Espero que te sirva de ayuda. Un saludo.
4
« en: Domingo 20 de Junio de 2010, 22:39 »
Me he aferrado al programa de N3oDoc, no por que el otro estuviera mal si no es que hay varias cosas que para mi nivel todavia desconosco. He pasado el programa de N3oDoc a C, pero esta linea me da problemas:
En C++:
cout << "la suma de a y b es": << Suma(a,b); En C:
printf("La suma de a + b es", suma(a,b)); El error está en que me equivoque y puse los : fuera de las comillas. Así estaría correcto: cout << "la suma de a y b es:" << Suma(a,b);
5
« en: Domingo 20 de Junio de 2010, 14:03 »
Al crear una clase, cuando creas una instancia de dicha clase inicializas los atributos de la clase mediante el constructor de dicha clase. De esta manera solo necesitas implementar un método para modificar dichos atributos cada vez que quieras modificar algun atributo. Un ejemplo de la clase podría ser la siguiente: //cabecera de la clase Ejercito, archivo Ejercito.hpp class Ejercito{ public: struct unidad{ int x; int y; int w; int h; int color; int tipoUnidad; int numeroUnidad; bool movimiento; }; typedef unidad TUnidad; Ejercito(); ~Ejercito(); void InsertarUnidad(const TUnidad unidad); void EliminarUnidad(const int pos); TUnidad VisualizarUnidad(); int Longitud(); void CambiarValor(const int pos, const TUnidad unidad); private: struct TNodo{ TUnidad unidad; TNodo *sig; }; typedef TNodo *TLista; TLista lista; };
//Implementación de los métodos de la clase Ejercito, archivo CEjercito.cpp #include <stdlib.h> #include "Ejercito.hpp" #include <iostream> using namespace std; Ejercito::Ejercito(){ lista = NULL; } Ejercito::~Ejercito(){ TLista ptr; while(lista != NULL){ ptr =lista; lista =lista->sig; delete ptr; } } void Ejercito::InsertarUnidad(const TUnidad unidad){ TLista nuevo,ant,ptr; nuevo = new TNodo; nuevo->sig = NULL; nuevo->unidad = unidad; if(lista == NULL){ //lista vacia, insertar primero lista = nuevo; }else{ ptr = lista; ant = NULL; while(ptr != NULL && unidad.numeroUnidad > ptr->unidad.numeroUnidad){ ant = ptr; ptr = ptr->sig; } if(ant == NULL){ //primer nodo nuevo->sig = lista; lista = nuevo; }else{ ant->sig = nuevo; nuevo->sig = ptr; } } } void Ejercito::EliminarUnidad(const int pos){ { TLista ptr,ant; int posact = 1; bool borrado = false; if(lista != NULL){ if(pos <= Longitud()){ ptr = lista; while(posact != pos){ ant = ptr; ptr = ptr->sig; posact++; } if( pos == 1){ //primera posicion a borrar lista = lista->sig; }else{ if(pos == Longitud()){ //ultima posicion ant->sig = NULL; }else{ //posicion intermedia ant->sig = ptr->sig; } } delete ptr; borrado = true; } } return borrado; } Ejercito::TUnidad Ejercito::VisualizarUnidad(const int pos, bool &ok) { TUnidad unidad; TLista ptr; int posact = 1; ok = false; if(lista != NULL){ if(pos <= Longitud()){ ptr = lista; while(posact != pos){ posact++; ptr = ptr->sig; } ok = true; unidad = ptr->unidad; } } return unidad; } int Ejercito::Longitud() { int longitud = 0; TLista ptr; ptr = lista; while(ptr != NULL){ ptr = ptr->sig; longitud++; } return longitud; } //y el método para modificar los valores de la Unidad podrían ser: void Ejercito::CambiarValor(const int pos, const TUnidad unidad){ TLista ptr; int posact = 1; if(l != NULL){ if(pos > 0 && pos <= Longitud()){ ptr = lista; while(ptr->sig != lista && posact != pos){ ptr = ptr->sig; posact++; } ptr->unidad= unidad; } } }
6
« en: Domingo 20 de Junio de 2010, 13:51 »
Yo supongo que será implementar una función que te sume dos números, algo así como: #include <iostream> using namespace std; int Suma(const int a, const int b){ return (a + b); } int main(){ int a,b; cout << "Introduce el numero a:"; cin >> a; cout << "Introduce el numero b:"; cin >> b; cout << "la suma de a y b es": << Suma(a,b); system("pause"); return 0; }
7
« en: Sábado 19 de Junio de 2010, 02:32 »
Deberías crear una clase y eso no te pasaría, porque inicializas los valores con el costructor.
8
« en: Viernes 18 de Junio de 2010, 21:20 »
De hecho es más probable que sea así. Pero yo utlizaría solo dos variables: Una para las edades menores que 25 y otra para las edades comprendidas entre 90 y 60.
9
« en: Viernes 18 de Junio de 2010, 21:08 »
Voy a ponertelo más complicado, partiendo de que la implementación de la cola la tienes que crear tu: Aquí te dejo dicha implementación: Aqui tienes la cabecera CCola.hpp class CCola{ public: typedef int TpElemento; static const int MAXCOLA = 100; CCola();//constructor CCola(CCola &otracola); ~CCola(); void Encolar(const TpElemento elem); void Desencolar(); TpElemento Frente(); TpElemento Final(); bool EstaVacia(); bool EstaLLena(); private: int numelems; int frente; int final; TpElemento datos[MAXCOLA]; //aqui guardas la edad de cada elemento de la cola };
Aquí tienes la implementación CCola.cpp: #include <cstdlib> #include <iostream> #include <fstream> #include <math.h> #include <conio2.h> #include "cola.hpp" using namespace std; CCola::CCola(){ frente = 1; final = 0; numelems = 0; } CCola::CCola(CCola &otracola){ int i; frente = otracola.frente; final = otracola.final; numelems = otracola.numelems; for(i=0;i<=MAXCOLA;i++){ datos[i] = otracola.datos[i]; } } CCola::~CCola(){} bool CCola::EstaVacia(){ return numelems == 0; } bool CCola::EstaLLena(){ return numelems == MAXCOLA; } void CCola::Desencolar(){ if(!EstaVacia()){ frente = (frente % MAXCOLA) + 1; numelems = numelems - 1; } } void CCola::Encolar(const TpElemento elem){ if(!EstaLLena()){ final = (final % MAXCOLA) + 1; numelems = numelems + 1; datos[final] = elem; } } CCola::TpElemento CCola::Final(){ //precondicion la cola no debe estar vacia return datos[final]; } CCola::TpElemento CCola::Frente(){ //precondicion la cola no debe estar vacia return datos[frente]; }
ahora lo único que tienes que hacer es crear un proyecto, incluir los dos archivos .hpp y .cpp, y desde tu programa main.cpp hacer un include de la clase cola: #include "CCola.hpp" luego se supone que dentro de un bucle debes meter la edad de las 100 personas dentro de la cola, vas encolando. Puedes usar la siguiente función para encolar personas con una edad aleatoria en la cola: void aleat (CCola &cola,int inf, int sup) { cola.Encolar(rand()%(sup - inf + 1) + inf); }
y finalmente vas desencolando por el frente comparando la edad, vas almacenando en una variable el numero de personas con edad > 25 años, y en otra variable el numero de personas de edades entre 60 y 90 años.
10
« en: Viernes 18 de Junio de 2010, 20:57 »
Un arbol binario en c++ es un poco diferente si lo comparamos con los arboles binarios en pesudolenguaje. Como bien sabes todo arbol binario se compone de 3 elementos, que a su vez son arboles. la clase en c++ sería la siguiente: esta sería la cabecera de la clase: (arbolbin.hpp) class CArbolBin{ public: typedef ... TpElemento //cualquier tipo de datos CArbolBin(); //constructor ~CArbolBin(); //destructor TpElemento Raiz(); CArbolBin Izq(); CArbolBin Der(); bool ArbolVacio(); void Componer(TpElemento x, CArbolBin izq, CArbolBin der); private: struct TNodoAbin{ TpElemento elem; TNodoAbin *izq; TNodoAbin *der; }; typedef TNodoAbin *TArbol; TArbol ptraiz; }; Despues habría que implementar los métodos de la clase.
Páginas: [1]
|
|
|