Dev - C++ - leer celda especifica en c++

   
Vista:

leer celda especifica en c++

Publicado por martzone (5 intervenciones) el 24/06/2009 03:49:00
Hola gente, necesito de urge ayuda sobre un trabajo espcial de semestre. necesito crear listas doblemente enlazadas y a la vez leer celdas especifica en c++: me explico mejor tengo todas las letras del alfabeto y con cada una hay 10 palabras independientemente, como enlazo esto y leo un archivo que contenga estas 10 palabras, tiene que ser impreso en visual c++, solo una letra en especifico, la que el usuario elija. Ayundenme.......
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:leer celda especifica en c++

Publicado por kamaleon (6 intervenciones) el 24/06/2009 05:55:15
explica mejor tu problema , ya que tu info deja muchos vacios. asi podre ayudarte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer celda especifica en c++

Publicado por martzone (5 intervenciones) el 24/06/2009 22:39:51
Necesito crear un programa de listas enlazadas:
el cual tenga nodos para lograr buscar este archivo "A" y su contenido el cual esta en un archivo externo data.dat, es decir cargue, busque el directorio raiz "A" y depliegue su contenido en este caso: avaro,agua,alcohol, etc y asi con todas las letras del abecedario

elija la letra del abecedario:
A
la letra es A y sus palabras son:
avaro
agua
alcohol
listar adelante:
avaro
agua
alcoho
listar atras:
alcohol
agua
avaro

Espero me comprendas...
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer celda especifica en c++

Publicado por kamaleon (6 intervenciones) el 25/06/2009 21:54:16
weno yo entendi asi:
1) Tendras en un archivo de texto data.dat las palabras:

----------------------------------
agua
ave
ala
...
...
..
bebe
baso
baber
....
....
....
zaza
zeze
----------------------------------
2) el usuairo ingresara uan letra ( puede ser desde la A hasta la Z)
3) dependiendo de la letra cargara del archivo data.dat sus correspondientes palabras. en el csaos de que ingrese "A", debera cargar A CADA NODO DE LA LISTA LAS PALABRAS QUE LE CORRESPONDEN.

ejemplo:

usuario ingreso letra : "A".

se cargara en 10 nodos sus 10 palabras: (para el caso del archivo data.dat las 10 primeras palabras)

primer nodo almacenara : agua
siguiente nodo almacenara : ave
siguiente nodo almacenara : ala
-----
----

despues solo se recorrera lso nodos de primer al ultimo y vicevresa.

de esa manera yo tengo uno avansado al 95%, pero kiero tu confirmacion si eso lo q pides.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

leer celda especifica en c++

Publicado por martzone (5 intervenciones) el 26/06/2009 01:54:15
Si, es muy parecido,
si tienes eso enviame, que bacan, acolitate
MIl gracias man me has salvado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer celda especifica en c++

Publicado por KAMALEON (6 intervenciones) el 28/06/2009 04:16:23
ACA ESTA EL CODIGO, PERO DEBES SABER Q HAY QDARLES AJUSTES, Y DEBES TENER LISTO TU ARCHIVO DATA.DAT CON ALMENOS 10 PALABRAS.

ELPROGRAAM BOTA LOS RESULTADOS OK, PRO AL FINAL TIEEN UN PEKEÑO ERROR Q POR FALTA D ETIEM NO PUDE VERLO, ESO KEDARA PARA TI.

RECUERDA , DEBERAS TENER EL ARCHIVO DATA.DAT EN LA MISMA CARPETA QUE LA APLICACION.

#include "iostream"

class Nodito {

public:

char palabra[20];
Nodito *despues;
Nodito *antes;

};

int CodigoAscii,PosicionInicial,PosicionFinal,PosicionActual;

void main()
{

char letra[1];

std::cout<<"ingressar letra: "; //solo debe ser en mayuscula
std::cin>>letra;
std::cout<<" ";

CodigoAscii=int(letra[0]);

// si ingresa otro caracter diferente de [A - Z]salimos

if (!((CodigoAscii >= 65) && (CodigoAscii<=90))) return ;
PosicionInicial=(CodigoAscii-65)*10+1;
PosicionFinal=PosicionInicial+10;


std::cout<<"la letra " <<letra << " y sus palabritas son: "<<" ";

Nodito *PrimerNodito;
Nodito *UltimoNodito;
Nodito *NoditoAnterior;
Nodito *NoditoActual;

NoditoAnterior=NULL;
PrimerNodito=NULL;
UltimoNodito=NULL;

char cadena[10]="";
FILE *fichero;
fichero = fopen("data.dat", "r+");
if(fichero != NULL)
{
while (!feof(fichero))
{
fgets(cadena, 10, fichero);

PosicionActual++;
if(PosicionActual==PosicionFinal) break;
if(PosicionActual>=PosicionInicial)
{


std::cout<<cadena ;
std::cout<<" ";

//--vamos cargando cada palabra en cada nodo del la la lista doblemete enlasada

NoditoActual=new Nodito;

strcpy(NoditoActual->palabra,cadena);
if (NoditoAnterior==NULL) //si no hay nodoanteiorr este es el primer nodo creado
{
NoditoActual->antes =NULL;
NoditoActual->despues =NULL;

PrimerNodito=NoditoActual; //guardamos la direccion delprimer nodo,
NoditoAnterior= NoditoActual;
}

else
{
NoditoActual->antes =NoditoAnterior;
NoditoActual->despues =NULL;
NoditoAnterior->despues= NoditoActual;
NoditoAnterior= NoditoActual;
}
UltimoNodito=NoditoActual;
//------------
}


}
fclose(fichero);
}

//hasta este momento ya desplegamos por pantalla las 10 palabras.
// y llenamos tbm dichas palabras en la lista doblemente enlazada.
//Ahora procedemos a mostrarlas por pantalla pero recorriendo
//la lista de principio a fin y viceversa.

Nodito *Nodin;

//---delprimero al ultimo nodo------------------------------------

Nodin=PrimerNodito;

std::cout<<"Listar Adelante" ;
std::cout<<" ";


if(Nodin==NULL) return;

while (Nodin!=NULL)
{

std::cout<<Nodin->palabra ;
std::cout<<" ";
Nodin=Nodin->despues;
}

//----del ultimo hacia el primer nodo-------------------------------
Nodin=UltimoNodito;

std::cout<<"Listar Atras" ;
std::cout<<" ";

if(Nodin==NULL) return;

while (Nodin!=NULL)
{

std::cout<<Nodin->palabra ;
std::cout<<" ";
Nodin=Nodin->antes ;
}

system("pause");

}


SALUDOS DESDE CHIMBOTE - PERU
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

leer celda especifica en c++

Publicado por martzone (5 intervenciones) el 29/06/2009 22:44:04
Gracias man,
Me acolito mucho tu programa, este es el resultado,chekalo y me cuentas que tal te parece:
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include <stdlib.h>

class nodo
{
public:
char valor[40];
nodo *siguiente;
nodo *anterior;
nodo *lado;
nodo(char *v, nodo *sig=NULL, nodo *ant=NULL, nodo *lad=NULL)
{
strcpy(valor,v);
siguiente=sig;
anterior=ant;
lado=lad;
}
};

nodo *primero, *ultimo, *otronodo, *inicio, *otro;

class lista
{
public:
~lista();
void provincia(char v[40]);
void canton(char v[40]);
void buscar(char d[40]);
void listaratras();
void listaradelante();
bool listavacia()
{
return primero==NULL;
}
};

void lista::listaradelante()
{
nodo *aux;
aux=primero;
cout<<endl;
cout<<"ENLISTADO DE PROVINCIAS HACIA ADELANTE"<<endl;
cout<<endl;
while(aux)
{
cout<<"_"<<aux->valor<<endl;
aux=aux->siguiente;
}
}

lista::~lista()
{
nodo *aux;
cout<<"-----------Destructor------------"<<endl;
while(primero)
{
aux=primero;
primero=primero->siguiente;
while(aux)
{
otronodo=aux;
aux=aux->lado;
cout<<otronodo->valor<<endl;
delete otronodo;
}
}
}

void lista:: provincia(char v[40])
{
if(listavacia())
{
inicio=new nodo(v);
primero=inicio;
ultimo=inicio;
otro=inicio;
}
else
{
otronodo=new nodo(v);
inicio->siguiente=otronodo;
otronodo->anterior=inicio;
inicio=otronodo;
ultimo=otronodo;
otro=ultimo;
}
}

void lista:: canton(char v[40])
{
otronodo=new nodo(v);
otro->lado = otronodo;
otro=otronodo;
}

void lista:: buscar(char d[40])
{
nodo *aux;
aux=primero;
while (aux)
{
if(strncmp(d,aux->valor,sizeof(d))==0)
{
cout<<endl<<"Los cantones que pertenecen a "<<d<<" son:";
aux=aux->lado;
cout<<endl;
while(aux)
{cout<<"*) "<<aux->valor<<endl;
aux=aux->lado;}
break;
}
else
{
aux=aux->siguiente;
}
}
}

void lista::listaratras()
{
nodo *aux;
aux=ultimo;
cout<<endl;
cout<<"ENLISTADO DE PROVINCIAS HACIA ATRAS"<<endl;
cout<<endl;
while(aux)
{
cout<<"_"<<aux->valor<<endl;
aux=aux->anterior;
}
}

int main()
{
lista lista;
char info[30];
ifstream dato("provincia.txt",ios::in);
dato.getline(info,sizeof(info));
lista.provincia(info);
while(dato.getline(info,sizeof(info)))
{
if(strcmp(info," ")==1)
{
lista.canton(info);
}
else
{
dato.getline(info,sizeof(info));
lista.provincia(info);
}
}
cout<<" ***PROGRAMA DE ENLAZADO DE PROVINCIAS CON SUS RESPECTIVOS CANTONES***"<<endl<<endl;
cout<<" Veronica Logana";cout<<" - Martin Perez H"<<endl;
int m=0;
char pro[40];
menu:

cout<<endl<<"*.....:M E N U:.....*"<<endl;
cout<<"---------------------"<<endl;
cout<<"1.ENLISTAR provincias"<<endl;
cout<<"2.ENLISTAR hacia atras"<<endl;
cout<<"3.ESCOGER una Provincia"<<endl;
cout<<"4.FINALIZAR PROGRAMA"<<endl;
cout<<endl<<"Ingrese un Numero del Menu: ";cin>>m;
system("cls");
switch(m){
case 1:
lista.listaradelante();
goto menu;
case 2:
lista.listaratras();
goto menu;
case 3:
cout<<endl<<"Seleccione Una Provincia Para Desplegar los Cantones:"<<endl;
char toupper (char pro);
cin>> pro;
char toupper (char pro);
lista.buscar(pro);
goto menu;
case 4:

lista.provincia(info);
return 0;
default:
cout<<"Seleccione entre 1 y 4"<<endl;
goto menu;
}
}

Ha! y soy de ecuador, y hace unos 4 meses pase por tu ciudad, solo de pasadita, desde lima huaraz, y para ir a trujillo, un clima caliente.
Muy hermosa, pero no me quede mas que unas horas, pero mi ciudad favorita fue trujillo, muy completa.
Cabe destacar que aca en ecuador nosotros mensionamos provincias a los departamentos y para ello fue el programa.
en el siguiente link te envio mi "provincias.txt"
o si te interesa enviame un mail a mertzone03@hotmail.com para enviarte sin errores de impresion web.
Mil gracias amigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

leer celda especifica en c++

Publicado por martzone (5 intervenciones) el 29/06/2009 22:49:17
perdon corrijo: es martzone03@hotmail.com
provincia.txt:

AZUAY
Camilo Ponce Enriquez
Chordeleg
Cuenca
El Pan
Giron
Guachapala
Gualaceo
Nabon
Ona
Paute
Pucara
San Fernando
Santa Isabel
Sevilla de Oro
Sigsig

BOLIVAR
Caluma
Chillanes
Chimbo
Echeandia
Guaranda
Las Naves
San Miguel

CANAR
Azogues
Biblian
Canar
Deleg
El Tambo
La Troncal

CARCHI
Bolivar
Espejo
Mira
Montufar
Tulcan

CHIMBORAZO
Alausi
Chambo
Chunchi
Colta
Cumanda
Guamote
Guano
Pallatanga
Penipe
Riobamba

COTOPAXI
La Mana
Latacunga
Pangua
Pujili
Salcedo
Saquisili
Sigchos

EL_ORO
Arenillas
Atahualpa
Balsas
Chilla
El Guabo
Huaquillas
Isla Correa
Isla Matapalo
Las Lajas
Machala
Marcabeli
Pasaje
Pinas
Portovelo
Santa Rosa
Zaruma

ESMERALDAS
Atacames
La Concordia
Eloy Alfaro
Esmeraldas
Muisne
Quininde
Rio Verde
San Lorenzo

GALAPAGOS
Isabela
San Cristobal
Santa Cruz

GUAYAS
Alfredo Baquerizo Moreno
Balao
Balzar
Bucay
Colimes
Coronel Marcelino Mariduena
Cumanda
Daule
Eloy Alfaro
El Empalme
El Triunfo
General Antonio Elizalde
Guayaquil
Isidro Ayora
Lomas de Sargentillo
Milagro
Naranjal
Naranjito
Narcisa de Jesus
Palestina
Pedro Carbo
Playas
General Villamil Playas
Samborondon
Salitre
San Jacinto de Yaguachi
Santa Lucia
Simon Bolivar
Urbina Jado
San Jacinto de Yaguachi
Troncal

IMBABURA
Cotacachi
Ibarra
Otavalo
Pimampiro
San Miguel de Urcuqui

LOJA
Calvas
Catamayo
Celica
Chaguarpamba
Espindola
Gonzanama
Loja
Macara
Paltas
Pindal
Puyango
Quilanga
Saraguro
Sozoranga
Zapotillo

LOS_RIOS
Baba
Babahoyo
Buena Fe
Mocache
Montalvo
Palenque
Pueblo Viejo
Quevedo
Urdaneta
Ventanas
Vinces

MANABI
Bolivar
Chone
El Carmen
Flavio Alfaro
Jama
Jaramijo
Jipijapa
Junin
Manta
Montecristi
Olmedo
Pajan
Pedernales
Pichincha
Portoviejo
Puerto Lopez
Rocafuerte
San Vicente
Santa Ana
Sucre
Tosagua
Veinticuatro de Mayo

MORONA_SANTIAGO
Gualaquiza
Huamboya
Limon Indanza
Logrono
Morona
Pablo Sexto
Palora
San Juan Bosco
Santiago
Sucua
Taisha
Tiwinza

NAPO
Archidona
Carlos Luis Arosemena Tola
El Chaco
Quijos
Tena

ORELLANA
Aguarico
Francisco de Orellana
Joya de los Sachas
Loreto

PASTAZA
Arajuno
Mera
Pastaza
Santa Clara

PICHINCHA
Cayambe
Mejia
Pedro Moncayo
Pedro Vicente Maldonado
Puerto Quito
Quito
Ruminahui
San Miguel de los Bancos

SANTA_ELENA
La Libertad
Salinas
Santa Elena

SANTO DOMINGO DE LOS TSACHILAS
Santo Domingo de los Colorados

SUCUMBIOS
Cascales
Cuyabeno
Gonzalo Pizarro
Lago Agrio
Putumayo
Shushufindi
Sucumbios

TUNGURAHUA
Ambato
Banos
Cevallos
Mocha
Patate
Pelileo

ZAMORA_CHINCHIPE
Centinela del Condor
Chinchipe
El Pangui
Palanda
Paquisha
Nangaritza
Yacuambi
Yantzaza
Zamora
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer celda especifica en c++

Publicado por kamaleon (6 intervenciones) el 30/06/2009 16:56:23
el prograam esta interesante , me pareec bn q hayas visitado peru y uan de sus ciudades mas hermosas como trujillo, essa esta cerca de mi ciuidad.
q gusot q te haya servido el codigo q te envie.
nos vemos, saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer celda especifica en c++

Publicado por KAMALEON (6 intervenciones) el 28/06/2009 04:16:48
ACA ESTA EL CODIGO, PERO DEBES SABER Q HAY QDARLES AJUSTES, Y DEBES TENER LISTO TU ARCHIVO DATA.DAT CON ALMENOS 10 PALABRAS.

ELPROGRAAM BOTA LOS RESULTADOS OK, PRO AL FINAL TIEEN UN PEKEÑO ERROR Q POR FALTA D ETIEM NO PUDE VERLO, ESO KEDARA PARA TI.

RECUERDA , DEBERAS TENER EL ARCHIVO DATA.DAT EN LA MISMA CARPETA QUE LA APLICACION.

#include "iostream"

class Nodito {

public:

char palabra[20];
Nodito *despues;
Nodito *antes;

};

int CodigoAscii,PosicionInicial,PosicionFinal,PosicionActual;

void main()
{

char letra[1];

std::cout<<"ingressar letra: "; //solo debe ser en mayuscula
std::cin>>letra;
std::cout<<" ";

CodigoAscii=int(letra[0]);

// si ingresa otro caracter diferente de [A - Z]salimos

if (!((CodigoAscii >= 65) && (CodigoAscii<=90))) return ;
PosicionInicial=(CodigoAscii-65)*10+1;
PosicionFinal=PosicionInicial+10;


std::cout<<"la letra " <<letra << " y sus palabritas son: "<<" ";

Nodito *PrimerNodito;
Nodito *UltimoNodito;
Nodito *NoditoAnterior;
Nodito *NoditoActual;

NoditoAnterior=NULL;
PrimerNodito=NULL;
UltimoNodito=NULL;

char cadena[10]="";
FILE *fichero;
fichero = fopen("data.dat", "r+");
if(fichero != NULL)
{
while (!feof(fichero))
{
fgets(cadena, 10, fichero);

PosicionActual++;
if(PosicionActual==PosicionFinal) break;
if(PosicionActual>=PosicionInicial)
{


std::cout<<cadena ;
std::cout<<" ";

//--vamos cargando cada palabra en cada nodo del la la lista doblemete enlasada

NoditoActual=new Nodito;

strcpy(NoditoActual->palabra,cadena);
if (NoditoAnterior==NULL) //si no hay nodoanteiorr este es el primer nodo creado
{
NoditoActual->antes =NULL;
NoditoActual->despues =NULL;

PrimerNodito=NoditoActual; //guardamos la direccion delprimer nodo,
NoditoAnterior= NoditoActual;
}

else
{
NoditoActual->antes =NoditoAnterior;
NoditoActual->despues =NULL;
NoditoAnterior->despues= NoditoActual;
NoditoAnterior= NoditoActual;
}
UltimoNodito=NoditoActual;
//------------
}


}
fclose(fichero);
}

//hasta este momento ya desplegamos por pantalla las 10 palabras.
// y llenamos tbm dichas palabras en la lista doblemente enlazada.
//Ahora procedemos a mostrarlas por pantalla pero recorriendo
//la lista de principio a fin y viceversa.

Nodito *Nodin;

//---delprimero al ultimo nodo------------------------------------

Nodin=PrimerNodito;

std::cout<<"Listar Adelante" ;
std::cout<<" ";


if(Nodin==NULL) return;

while (Nodin!=NULL)
{

std::cout<<Nodin->palabra ;
std::cout<<" ";
Nodin=Nodin->despues;
}

//----del ultimo hacia el primer nodo-------------------------------
Nodin=UltimoNodito;

std::cout<<"Listar Atras" ;
std::cout<<" ";

if(Nodin==NULL) return;

while (Nodin!=NULL)
{

std::cout<<Nodin->palabra ;
std::cout<<" ";
Nodin=Nodin->antes ;
}

system("pause");

}


SALUDOS DESDE CHIMBOTE - PERU
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer celda especifica en c++

Publicado por KAMALEON (6 intervenciones) el 28/06/2009 04:30:13
UNA NOTA CURIOSA, DONDE VEAS Q HAY :
cout<<" "; .. debe ir el salto de linea . NO SE PORQUE NO SALIO EN LA WEB.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:leer celda especifica en c++

Publicado por walter (1 intervención) el 09/07/2009 17:32:19
hola q tal necesito ayuda porfa... un programa en c++ que hallae la union, interseccion y diferencia de 2 conjuntos pero utilizando listas enlazadas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar