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ú

Temas - Franz1628

#1
Bueno foro acá les dejo un problema propuesto para ustedes utilizando Borland C++

(Para que puedan usar el gotoxy y clrscr  ;) )

1.a Ejemplos Estructuras Repetitivas en C++
Diseñe un programa que permita validar datos de usuario para ingresar al sistema de consultas, donde el usuario se identifica por User = "FIIS", clave = "2004E". Cuando el usuario ingresa datos de cada caracter se debe visualizar en asterisco (" * "). Los caracteres son capturados en forma automática desde el teclado. Tal como se ilustra en la siguiente figura, Asimismo por cada entrada de datos se envía el mensaje indicando el numero de intentos. Si los intentos es mayor de 3, entonces el sistema envía el mensaje "Hasta luego, gracias por venir", indicando la finalización del programa.
Ahora si los datos de usuario son correctos, el sistema permite calcular todos los divisores por numero ingresado desde el teclado. Para lo cual Ud. debe leer la cantidad de números que se encuentra comprendido en el rango de 10..20, mostrar todos sus divisores y el total de divisores, tal como se ilustra en la siguiente figura.

Saludos   ::)
#2
Programación C/C++ / Lista en C++ (Resuelto)
7 Julio 2011, 19:49 PM
Este es un ejemplo de insertar un nodo a una lista en forma ordenada pero en la parte de la funcion insertarNodo (en la parte de  "else" no veo como cambia el *cab para que se haya ingresado el NODO)

El codigo si funciona pero esa parte es la que no entiendo ,supongo que esta parte de :
neo->sgte = p->sgte;
p->sgte = neo;
"Pero esto como afectaria *cab ???"
Si alguien tiene alguna idea se lo agradecería  ;)

Código (cpp) [Seleccionar]

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

using namespace std;

typedef int TD;

struct NODO {
  TD valor;
  NODO *sgte;
};

void crearLista(NODO **cab);
void insertarNodo(NODO **cab, int dato);
void mostrarLista(NODO *cab);
int listaVacia(NODO *cab);


int main()
{
  NODO *A;
  crearLista(&A);

  insertarNodo(&A, 20);
  insertarNodo(&A, 30);
  insertarNodo(&A, 5);
  insertarNodo(&A, 80);
  insertarNodo(&A, 34);
  insertarNodo(&A, 10);

  mostrarLista(A);

  system("PAUSE");
  return 0;
}

void crearLista(NODO **cab)
{
  *cab=NULL;
}
//Inserta elmentos en forma ordenada
void insertarNodo(NODO **cab, int dato)
{
  //NODO nuevo, anterior;
  NODO *neo, *p;

  neo = (NODO*)malloc(sizeof(NODO));
  neo->valor = dato;

  // Si la lista está vacía
  if(listaVacia(*cab) || (*cab)->valor > dato) {
     //Añadimos la lista a continuación del nuevo nodo
     neo->sgte = *cab;
     //Ahora, la lista tiene un nuevo nodo
     *cab = neo;
  }
  else {
     // Buscar la posicion adecuiada para el nuevo  nodo
     p = *cab;
 
     // Busca la posicion adecuada para dato
     while(p->sgte && p->sgte->valor <= dato){
        p = p->sgte;
       
     }  

     neo->sgte = p->sgte;
     p->sgte = neo;
  }
}

void mostrarLista(NODO *cab)
{
  NODO *p = cab;

  if(listaVacia(p))
     printf("Lista vacía\n");
  else {
     while(p) {
        printf("%d -> ", p->valor);
        p = p->sgte;
    }
    printf("\n");
  }
}

int listaVacia(NODO *cab)
{
  return (cab == NULL);
}