• Lunes 8 de Diciembre de 2025, 00:48

Mostrar Mensajes

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
C/C++ / Re: Duda con planteo del problema
« 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:
Código: C++
  1.  
  2. #include <iostream>
  3. using namespace std;
  4. const int MAXNUMERO = 40;
  5. int main(){
  6.    int i,suma=0,producto=1;
  7.    for(i=20;i<=MAXNUMERO;i++){
  8.       if(i % 2 == 0){ //si el resto de la división entre 2 da como resultado 0 significa que i es par
  9.          suma = suma + i;
  10.          producto = producto*i;
  11.       }
  12.    }
  13.    printf("Suma %d nProducto %d n", suma, producto);
  14.    system("pause");
  15.    return 0;
  16.  }
  17.  
  18.  

2
C/C++ / Re: que me pide en este ejercicio de C?
« en: Lunes 21 de Junio de 2010, 01:20 »
Cita de: "SergioG"
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;
}

Cita de: "SergioG"
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
C/C++ / Re: Recursos teoricos de C sobre bucles
« 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
C/C++ / Re: ¿Que ha de pedir este ejercicio en C?
« en: Domingo 20 de Junio de 2010, 22:39 »
Cita de: "tocinonaro"
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++:
Citar
cout << "la suma de a y b es": << Suma(a,b);
En C:
Citar
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
Visual C++ / Re: Problema con Lista Enlazada
« 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:

Código: C++
  1.  
  2. //cabecera de la clase Ejercito, archivo Ejercito.hpp
  3. class Ejercito{
  4.    public:
  5.    struct unidad{
  6.      int x;
  7.      int y;
  8.      int w;
  9.      int h;
  10.      int color;
  11.      int tipoUnidad;
  12.      int numeroUnidad;
  13.      bool movimiento;
  14.    };
  15.    typedef unidad TUnidad;
  16.    
  17.    Ejercito();
  18.    ~Ejercito();
  19.    void InsertarUnidad(const TUnidad unidad);
  20.    void EliminarUnidad(const int pos);
  21.    TUnidad VisualizarUnidad();
  22.    int Longitud();
  23.    void CambiarValor(const int pos, const TUnidad unidad);
  24.      
  25.    private:
  26.       struct TNodo{
  27.          TUnidad unidad;
  28.          TNodo *sig;
  29.       };
  30.       typedef TNodo *TLista;
  31.       TLista lista;
  32. };
  33.  
  34.  

//Implementación de los métodos de la clase Ejercito, archivo CEjercito.cpp

Código: C++
  1.  
  2. #include <stdlib.h>
  3. #include "Ejercito.hpp"
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. Ejercito::Ejercito(){
  9.    lista = NULL;
  10. }
  11.  
  12. Ejercito::~Ejercito(){
  13.    TLista ptr;
  14.    while(lista != NULL){
  15.       ptr =lista;
  16.       lista =lista->sig;
  17.       delete ptr;
  18.    }
  19. }
  20.  
  21. void Ejercito::InsertarUnidad(const TUnidad unidad){
  22.    TLista nuevo,ant,ptr;
  23.    nuevo = new TNodo;
  24.    nuevo->sig = NULL;
  25.    nuevo->unidad = unidad;
  26.    if(lista == NULL){ //lista vacia, insertar primero
  27.       lista = nuevo;
  28.    }else{
  29.       ptr = lista;
  30.       ant = NULL;
  31.       while(ptr != NULL && unidad.numeroUnidad > ptr->unidad.numeroUnidad){
  32.          ant = ptr;
  33.          ptr = ptr->sig;
  34.       }
  35.       if(ant == NULL){ //primer nodo
  36.          nuevo->sig = lista;
  37.          lista = nuevo;
  38.       }else{
  39.          ant->sig = nuevo;
  40.          nuevo->sig = ptr;
  41.       }
  42.    }
  43. }
  44.  
  45.  
  46. void Ejercito::EliminarUnidad(const int pos){
  47. {
  48.   TLista ptr,ant;
  49.   int posact = 1;
  50.   bool borrado = false;
  51.   if(lista != NULL){
  52.       if(pos <= Longitud()){
  53.          ptr = lista;
  54.          while(posact != pos){
  55.             ant = ptr;
  56.             ptr = ptr->sig;
  57.             posact++;
  58.          }
  59.          if( pos == 1){ //primera posicion a borrar
  60.             lista = lista->sig;
  61.          }else{
  62.             if(pos == Longitud()){ //ultima posicion
  63.                ant->sig = NULL;
  64.             }else{  //posicion intermedia
  65.                ant->sig = ptr->sig;
  66.             }
  67.          }
  68.          delete ptr;
  69.          borrado = true;
  70.       }
  71.    }
  72.    return borrado;
  73. }  
  74.  
  75. Ejercito::TUnidad Ejercito::VisualizarUnidad(const int pos, bool &ok)
  76. {
  77.    TUnidad unidad;
  78.    TLista ptr;
  79.    int posact = 1;
  80.    ok = false;
  81.    
  82.    if(lista != NULL){
  83.       if(pos <= Longitud()){
  84.          ptr = lista;
  85.          while(posact != pos){
  86.             posact++;
  87.             ptr = ptr->sig;
  88.          }
  89.          ok = true;
  90.          unidad = ptr->unidad;
  91.       }
  92.    }  
  93.    return unidad;
  94. }
  95.  
  96.  
  97. int Ejercito::Longitud()
  98. {
  99.    int longitud = 0;
  100.    TLista ptr;
  101.    ptr = lista;
  102.    while(ptr != NULL){
  103.       ptr = ptr->sig;
  104.       longitud++;
  105.    }  
  106.    return longitud;
  107. }
  108.  
  109. //y el método para modificar los valores de la Unidad podrían ser:
  110.  
  111. void Ejercito::CambiarValor(const int pos, const TUnidad unidad){
  112.    TLista ptr;
  113.    int posact = 1;
  114.    if(l != NULL){
  115.       if(pos > 0 && pos <= Longitud()){
  116.          ptr = lista;
  117.          while(ptr->sig != lista && posact != pos){
  118.             ptr = ptr->sig;
  119.             posact++;
  120.          }
  121.          ptr->unidad= unidad;
  122.       }
  123.    }    
  124. } 
  125.  
  126.  

6
C/C++ / Re: ¿Que ha de pedir este ejercicio en C?
« 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:

Código: C++
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int Suma(const int a, const int b){
  6.    return (a + b);
  7. }
  8.  
  9. int main(){
  10.    int a,b;
  11.    cout << "Introduce el numero a:";
  12.    cin >> a;
  13.    cout << "Introduce el numero b:";
  14.    cin >> b;
  15.    cout << "la suma de a y b es": << Suma(a,b);
  16.    system("pause");
  17.    return 0;
  18. }
  19.  
  20.  

7
Visual C++ / Re: Problema con Lista Enlazada
« 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
C/C++ / Re: COLA EN C++
« 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
C/C++ / Re: COLA EN C++
« 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
Código: C++
  1.  
  2. class CCola{
  3.    public:
  4.       typedef int TpElemento;  
  5.       static const int MAXCOLA = 100;
  6.       CCola();//constructor
  7.       CCola(CCola &otracola);
  8.       ~CCola();
  9.       void Encolar(const TpElemento elem);
  10.       void Desencolar();
  11.       TpElemento Frente();
  12.       TpElemento Final();
  13.       bool EstaVacia();
  14.       bool EstaLLena();
  15.       private:
  16.          int numelems;
  17.          int frente;
  18.          int final;
  19.          TpElemento datos[MAXCOLA]; //aqui guardas la edad de cada elemento de la cola
  20. };
  21.  
  22.  

Aquí tienes la implementación CCola.cpp:

Código: C++
  1.  
  2. #include <cstdlib>
  3. #include <iostream>
  4. #include <fstream>
  5. #include <math.h>
  6. #include <conio2.h>
  7. #include "cola.hpp"
  8.  
  9. using namespace std;
  10.  
  11. CCola::CCola(){
  12.    frente = 1;
  13.    final = 0;
  14.    numelems = 0;
  15. }
  16.  
  17. CCola::CCola(CCola &otracola){
  18.    int i;
  19.    frente = otracola.frente;
  20.    final = otracola.final;
  21.    numelems = otracola.numelems;
  22.    for(i=0;i<=MAXCOLA;i++){
  23.       datos[i] = otracola.datos[i];
  24.    }
  25. }
  26.  
  27. CCola::~CCola(){}
  28.  
  29. bool CCola::EstaVacia(){
  30.    return numelems == 0;
  31. }
  32.  
  33. bool CCola::EstaLLena(){
  34.    return numelems == MAXCOLA;
  35. }
  36.  
  37. void CCola::Desencolar(){  
  38.    if(!EstaVacia()){
  39.       frente = (frente % MAXCOLA) + 1;
  40.       numelems = numelems - 1;
  41.    }  
  42. }
  43.  
  44. void CCola::Encolar(const TpElemento elem){
  45.    if(!EstaLLena()){
  46.       final = (final % MAXCOLA) + 1;
  47.       numelems = numelems + 1;
  48.       datos[final] = elem;
  49.    }
  50. }
  51.  
  52. CCola::TpElemento CCola::Final(){ //precondicion la cola no debe estar vacia
  53.    return datos[final];
  54. }
  55.  
  56. CCola::TpElemento CCola::Frente(){ //precondicion la cola no debe estar vacia
  57.    return datos[frente];
  58. }
  59.  
  60.  

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:

Código: C++
  1.  
  2.  
  3. void aleat (CCola &cola,int inf, int sup)
  4. {
  5.  cola.Encolar(rand()%(sup - inf + 1) + inf);
  6. }
  7.  
  8.  

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
C/C++ / Re: arboles b+ xfavor
« 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)
Código: C++
  1.  
  2. class CArbolBin{
  3.    public:
  4.       typedef ... TpElemento //cualquier tipo de datos
  5.       CArbolBin();  //constructor
  6.       ~CArbolBin(); //destructor
  7.       TpElemento Raiz();
  8.       CArbolBin Izq();
  9.       CArbolBin Der();
  10.       bool ArbolVacio();
  11.       void Componer(TpElemento x, CArbolBin izq, CArbolBin der);
  12.       private:
  13.       struct TNodoAbin{
  14.          TpElemento elem;
  15.          TNodoAbin *izq;
  16.          TNodoAbin *der;
  17.       };
  18.       typedef TNodoAbin *TArbol;
  19.       TArbol ptraiz;
  20. };
  21.  
  22. Despues habría que implementar los métodos de la clase.
  23.  
  24.  

Páginas: [1]