Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - RGT

#1
Hola hermano,
Aquí te hice el programa y te comento línea por línea para que logres entender lo que hice.


#include <iostream>

using namespace std;

int main()
{
    //Declaración de variables
    int NUMERO = 1000, CANTIDAD_A_RESTAR = 7;

    while(NUMERO >= 0)
    {
        //Le asignamos a NUMERO el nuevo número generado
        NUMERO = NUMERO - CANTIDAD_A_RESTAR;

        //Imprimimos el nuevo valor de NUMERO
        cout << NUMERO << endl;

        //Qué pasa si NUMERO == 2 y le restas 7?, el resultado es un número menor que 0.
        //Entonces, con un IF, hacemos que se detenga y salga del WHILE
        if (NUMERO - CANTIDAD_A_RESTAR < 0)
        {
            break;
        }
    }

    return 0;
}



Fue lo primero que se me ocurrió..

Si deseas hacerlo con una función, el código es el siguiente:


#include <iostream>

using namespace std;

//Declaración de prototipos
int restar(int NUMERO, int CANTIDAD_A_RESTAR);

int main()
{
    //Declaración de variables
    int NUMERO = 1000, CANTIDAD_A_RESTAR = 7;

    while(NUMERO >= 0)
    {
        //Le asignamos a NUMERO el nuevo número generado
        NUMERO = restar(NUMERO, CANTIDAD_A_RESTAR);

        //Imprimimos el nuevo valor de NUMERO
        cout << NUMERO << endl;

        //Qué pasa si NUMERO == 2 y le restas 7?, el resultado es un número menor que 0.
        //Entonces, con un IF, hacemos que se detenga y salga del WHILE
        if (NUMERO - CANTIDAD_A_RESTAR < 0)
        {
            break;
        }
    }

    return 0;
}

int restar(int NUMERO, int CANTIDAD_A_RESTAR)
{
    return NUMERO - CANTIDAD_A_RESTAR;
}



Espero haberte ayudado amigo, cualquier pregunta, aquí estamos.
#2
Cita de: furciorifa en 12 Noviembre 2015, 20:36 PM
Dedicate a otra cosa, quizá la programación no es para tí, o ve vídeos en Inglés, colas está muy fácil, en fin.

Gracias por esas palabras. Para una persona que lleva pocas semanas en C++, if, else, do, while, for, entender esto de colas y estructuras y punteros se hace difícil al inicio. Y mas cuando tienes profesores que no te explican nada o personas como tú que te ayudan mucho con el apoyo que te ofrecen.

Se agradece de todas formas tu ayuda, aunque no fue la mejor introducción admito. Para ti pueda que sea fácil porque ya lo entiendes, y para los nuevos que?, todos deberíamos dejar esto entonces?. Creo que tu posición no es la mejor, pero en fin como dices.. Gracias.
#3
Hola amigos, gracias a la documentación en la web oficial de C++, he logrado esto:

#include <iostream>
#include <stdlib.h>     // Librería para usar la función srand()
#include <time.h>       // Librería para usar la función time()
#include <queue>        // Librería para el uso de priority_queue
#include <vector>       // Librería para el uso de vectores (Arreglos Dinámicos)

/*
    Escriba un programa para ejecutar el experimento siguiente:

    1. Genere 100 números aleatorios con valores en el rango entre 1 y 500.

    2. Conforme se genera cada número, insértelo en una cola inicialmente vacía.

    3. Si el número es de dos dígitos, tiene prioridad sobre números de tres dígitos.

    4. Después de insertar los 100 números, imprima en orden secuencial las posiciones
    de la cola donde se encuentra el número con mayor valor y el número con menor valor.
*/

using namespace std;

int main()
{
    //Declaración de variables
    int i, Numero;
    srand(time(NULL));

    priority_queue<int> numero_aleatorio;

    //Procesamiento
    for(i = 1; i <= 100; i++)
    {
        //Generamos un número aleatorio del 1 al 500
        Numero = 1 + rand() % (501 - 1);

        //Guardamos el número generado
        numero_aleatorio.push(Numero);
    }

    while (!numero_aleatorio.empty())
    {
        cout << numero_aleatorio.top() << ", ";
        numero_aleatorio.pop();
    }

    return 0;
}


El ejercicio casi esta resuelto.

Lo único que no tengo ni idea de como hacerlo es de imprimir las posiciones del numeros mayor y del numero de menor valor, segun dice el ejercicio.

Alguien puede ayudarme?.
#4
Cita de: avesudra en 11 Noviembre 2015, 22:36 PM
Las colas se suelen utilizar por ejemplo para programar un planificador de tareas de un sistema operativo. Para que el primer programa que entre a ejecutarse sea el ultimo que salga y tenga una respuesta coherente, luego hay modificaciones como las colas de prioridad, ya que si al sistema operativo se le cruza algo importante lo tiene que insertar en el lugar correcto para que se ejecute lo antes posible.

¿Has programado alguna vez en C++ o te lo han soltado así porque sí?

Manejo de memoria.
Punteros...

Solo tienes que ir creando nodos con el operador new e ir metiendo datos y enlazando los nodos unos con otros por lo menos para la de insertar.

¿No has visto nunca nada de Estructuras de Datos? Pilas, Listas, Listas doblemente enlazadas, Listas circulares...

Es que la idea de estas cosas es que intentes hacer algo aunque te falle, pero entiendo que si ves C++ por primera vez o incluso C te acojone bastante.

Un saludo.

He programado cosas en C++ en esta materia, pero nunca nada con Colas y no entiendo ni la pepa, sigo leyendo y eso pero es todo confuso.
#5
Hola, gracias por tratar de ayudarme bro.

Leyendo la documentacion, realmente no entiendo mucho.
Nunca habia visto este tema y estoy muy confundido. Ni siquiera se por que es util esto de Colas. Leyendo en internet solo veo cosas ya hechas, no hay explicaciones....

Lo que me dices que debo de hacer lo entiendo, pero como?, no se ni por donde empezar.
#6
Programación C/C++ / Ejercicio usando Colas en C++
11 Noviembre 2015, 19:58 PM
Hola amigos,
Resulta que tengo que hacer esto:

CitarEscriba un programa para ejecutar el experimento siguiente:
Genere 100 números aleatorios con valores en el rango entre 1 y 500. Conforme se genera cada número, insértelo en una cola inicialmente vacía. Si el número es de dos dígitos, tiene prioridad sobre números de tres dígitos.

Después de insertar los 100 números, imprima en orden secuencial las posiciones de la cola donde se encuentra el número con mayor valor y el número con menor valor.

Nunca hemos trabajado usando Colas, no entiendo cómo uno puede aprender de esta manera pero bueno, venga...

He investigado cómo crear una Cola y crear los números aleatorios.

Código:

#include <iostream>
#include <stdlib.h>     // Librería para usar la función srand()
#include <time.h>       // Librería para usar la función time()

using namespace std;

//Declaraciones de tipos para manejar colas en C++
typedef struct _nodo {
   int dato;
   struct _nodo *siguiente;
} tipoNodo;

typedef tipoNodo *pNodo;
typedef tipoNodo *Cola;

int main()
{
    //Declaración de variables
    int i, Numero;
    srand(time(NULL));

    //Procesamiento
    for(i = 1; i <= 100; i++)
    {
        Numero = 1 + rand() % (501 - 1);
        cout << Numero << endl;
    }

    return 0;
}


Screenshot:


Vamos bien, ahora la pregunta es:


  • Cómo inserto los números en la Cola?.
  • Cómo es eso de prioridad?.
  • Cómo hago para que el número de dos dígitos se guarde antes que los de tres dígitos?
Bueno, nunca había visto Colas, espero puedan ayudarme, gracias.
#7
el metodo compare necesita que ambas cadenas sean strings, cierto?, o una de las dos cadenas puede ser tipo char?.
#8
Hola....

No esta resuelto pero te muestro algo:

#include <iostream>
#include <fstream>  // Librería para el manejo de archivos

using namespace std;

int main()
{
   int x=100,i=0;
   float z;
   fstream archivo; // objeto de la clase ofstream

   archivo.open("datos3.txt");

   while(y<x)
   {
       i++;
       z == rand()%
       archivo << z << " ";
   }

   archivo.close();

   return 0;
}

1. Te falto agregar la librería para manejar archivos (<fstream>).
2. Dónde declaras la variable y?.

es lo primero que ví a simple vista, espero te ayude en algo.
#9
Hola amigos,

Tengo esto:
string PalabraAdivinar = golf;

//Variable usada solamente para convertir la Palabra a Adivinar de String a Char y poder usar la función strcmp()
    char PalabraAdivinarChar[PalabraAdivinar.size()] = PalabraAdivinar;

//Uso de la función strcmp()
y = strcmp(PalabraAdivinarChar, Respuesta);


Debo pasar mi cadena String a Char para poder usar esta función y me compare si la Palabra a Adivinar ya es igual a la Respuesta, o sea, lo que ingresa el usuario. Para hacer esta comparacion hago uso de la funcion strcmp(), el cual solo trabaja con variables tipo Char.

La duda mia es, la variable Char esta bien declarada?, porque me da error en CodeBlocks.

Notar que hice esto:
PalabraAdivinarChar[PalabraAdivinar.size()]

no se me ocurrió otra forma de asignarle el tamaño que necesito jeje.

espero me ayuden chicos..
#10
Cita de: class_OpenGL en  5 Noviembre 2015, 08:33 AM
En primer lugar, cuando llamas a la función ValidarNumeroIngresado(NumeroLetras), lo que haces es comprobar que el primer carácter sea un dígito. No compruebas que toda la cadena sea un número. Lo segundo, que para convertir la cadena en un entero, es mejor usar la función strtol, pues si hay algún error, será más previsible. En tercer lugar, ¿por qué no pides directamente un entero?

Código (cpp) [Seleccionar]
do {
   std::cout << "N\243mero de letras de la palabra: ";

   if(std::cin.fail()) { // Comprobamos si hay errores de entrada
       std::cin.clear();
       std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Limpiamos el buffer manejado por la clase std::cin
   }

   std::cin >> nNumLetters;
} while(std::cin.fail());


La variable nNumLetters es de tipo int

Te aconsejo mirar el tema que publiqué hace poco sobre el funcionamiento del operador std::cin>> para una mejor comprensión del código.

http://foro.elhacker.net/programacion_cc/aporte_diagrama_de_flujo_del_operador_stdcin_stdistream-t443774.0.html

Hola hermano,
Pedia el numero y lo guardaba como string para poder verificar con la funcion "isdigit" si todos los caracteres de esa cadena son numeros. Y despues lo convierto de string a int y lo guardo en una variable tipo int para seguir trabajando con ese dato.

Hice esto porque no se como validar un int de que se han ingresado solo números, no me interesan caracteres ni otras cosas....