Foro Oficial De C++

@Moon, Entre estas dos lineas hace falta codigo:

Código:
char R;
switch (R)

Lo digo porque R no tiene ningun valor, y por ello no puedes hacerle comparacion dentro del switch (o tal vez te mande al default: )

Saludos

Buenas joven.

Permitame y le explico, así de la manera en la que está funciona. Porque está tomando el valor de R anterior. Quizás no es la forma más lógica de hacerlo.

De todas formas eso ya lo cambié.

Gracias por la acotación =)
 
Moon dijo:
Buenas joven.

Permitame y le explico, así de la manera en la que está funciona. Porque está tomando el valor de R anterior. Quizás no es la forma más lógica de hacerlo.

De todas formas eso ya lo cambié.

Gracias por la acotación

El dice lo correcto... al no asignarle nada a R este salta todo..... si queires probar antes del switch pon R="A"; y veras como siempre entra en la opcion A....

MUCHAS PERO MUCHAS GRACIAS A TODOS POR AYUDARME Y AUNQUE HE VISTO ESTE CÓDIGO UN POCO TARDE, GRACIAS DE TODAS MANERAS....

Lo digo porque gracias a Dios ya lo hice!!!!!

Usé funciones, if para validar y apuntador, de hecho, este último me faltaba, por eso se perdía el valor de mi R.

Besitos virtuales para todos :p

Ah y por cierto, estoy trabajando en C y no en C++. Eso es para el próximo término=)


for(;;){ (Qué hace eso)

Es un como si fuera un bucle infinito... al no tener valores no calcula y por ende nunca termina.... ;)...


Es lo mismo que si declaras una contante

Y se la asignes a un While.... como la constante nunca varia el while se queda hasta que le des a la opcion que tiene el exit que salta todo y termina la aplicacion... ;)


Soy malo explicando :muerto:


SuerteX
 
Buenas joven.

Permitame y le explico, así de la manera en la que está funciona. Porque está tomando el valor de R anterior. Quizás no es la forma más lógica de hacerlo.

De todas formas eso ya lo cambié.

Gracias por la acotación =)

El problema es que R no tomara el valor anterior porque al decir tu "char R;" ya tienes un nuevo char diferente al que tenias antes.

Saludos :p
 
que tal bros se me ha dado por probar el cdt de eclipse para trabajar en c++...la verdad ya estaba cansado de escribir como loco make -o ..... y bla bla bla....pero que cosita pa mamona...casi que no logro hacer que complilara....pos como saben eclipse compila en tiempo real peroe so solo se puede en lenguajes interpretados...y como c es compilado...pos ya se imaginaran...

la verdad no se si es mera bronca con migo pero em ha tocado hacerle asi para que compile.....

file-> new C++ project este se puede llamar como sea.
file-> new source folder y llamarle src o paila no compila.
file-> new source file y llamarle main.cpp o paila no compila despues.
Escribir el codigo:

int main()
{
return 0;
}

y darle Project -> Build All o Ctrl B a la primera....si se le d otra cosa paila ya se murio jamas volvera a servir y toca crear de nuevo todo el proyecto.

luego window -> show view -> c/c++ Projects de hay buscar el projecto y dentro la pestaña binaries y al archivito que este hay darle click derecho "Run as -> Local c++ Application" hay dice que si quiere guardar, se le da yes y por defecto sale un error y pregunta si desea continuar y se le da yes....luego ahora si despues de media hora (no tampoco) se pude pinchar el botoncito verde de run y corre lo que he programado.... si no altero el codigo le puedo dar al botoncito verde si le cambio cualquier cosa me toca repetir desde el paso rojo.....

que mamera no asi a uno le dan gans de quedarse con el make jeje....ya en serio la estoy cagando en algo o a juro toca asi....eso si el CDT esta bien instalado....gracias.
 
El problema es que R no tomara el valor anterior porque al decir tu "char R;" ya tienes un nuevo char diferente al que tenias antes.

Saludos :p


Este es un ejemplo de una de las funciones:

void DatoInc (char H){
if (H=='A' || H=='a'){
system("color c4");
printf("\n\t\t\tDato Incorrecto!\n\t\tDebe Ingresar Valores Entre 1 Y 4\n\a");
printf("\n\nPresione Una Tecla Para Volver A Intentar\n");
}else if (H=='B' || H=='b'){
system("color c4");
printf("\n\n\n\n\t\t\t\tWrong Data!\n\n\t\t\tEnter Value Between 1 And 4\n\a");
printf("\n\nPress A Button To Try Again\n");}
}
Así hice las demás
 
El dice lo correcto... al no asignarle nada a R este salta todo..... si queires probar antes del switch pon R="A"; y veras como siempre entra en la opcion A....



Es un como si fuera un bucle infinito... al no tener valores no calcula y por ende nunca termina.... ;)...


Es lo mismo que si declaras una contante

Y se la asignes a un While.... como la constante nunca varia el while se queda hasta que le des a la opcion que tiene el exit que salta todo y termina la aplicacion... ;)


Soy malo explicando :muerto:


SuerteX

Uhm... Comprendo. De todas formas ya terminé el programa, más bien trato de buscar que adornitos le puedo poner :)
 
que tal bros...perdonad la ignorancia paro como le doy la orden al make para que me tome la libreria ncurses.h...no tengo idea...gracias.
 
que tal bros se me ha dado por probar el cdt de eclipse para trabajar en c++...la verdad ya estaba cansado de escribir como loco make -o ..... y bla bla bla....pero que cosita pa mamona...casi que no logro hacer que complilara....pos como saben eclipse compila en tiempo real peroe so solo se puede en lenguajes interpretados...y como c es compilado...pos ya se imaginaran...

la verdad no se si es mera bronca con migo pero em ha tocado hacerle asi para que compile.....

file-> new C++ project este se puede llamar como sea.
file-> new source folder y llamarle src o paila no compila.
file-> new source file y llamarle main.cpp o paila no compila despues.
Escribir el codigo:

int main()
{
return 0;
}

y darle Project -> Build All o Ctrl B a la primera....si se le d otra cosa paila ya se murio jamas volvera a servir y toca crear de nuevo todo el proyecto.

luego window -> show view -> c/c++ Projects de hay buscar el projecto y dentro la pestaña binaries y al archivito que este hay darle click derecho "Run as -> Local c++ Application" hay dice que si quiere guardar, se le da yes y por defecto sale un error y pregunta si desea continuar y se le da yes....luego ahora si despues de media hora (no tampoco) se pude pinchar el botoncito verde de run y corre lo que he programado.... si no altero el codigo le puedo dar al botoncito verde si le cambio cualquier cosa me toca repetir desde el paso rojo.....

que mamera no asi a uno le dan gans de quedarse con el make jeje....ya en serio la estoy cagando en algo o a juro toca asi....eso si el CDT esta bien instalado....gracias.

Weno man, yo lo descomprimi y creo que as funciono..... lastima que tenia muy poquita ram y por eso toy que no lo uso hasta que no tenga mas :S

Este es un ejemplo de una de las funciones:

void DatoInc (char H){
if (H=='A' || H=='a'){
system("color c4");
printf("\n\t\t\tDato Incorrecto!\n\t\tDebe Ingresar Valores Entre 1 Y 4\n\a");
printf("\n\nPresione Una Tecla Para Volver A Intentar\n");
}else if (H=='B' || H=='b'){
system("color c4");
printf("\n\n\n\n\t\t\t\tWrong Data!\n\n\t\t\tEnter Value Between 1 And 4\n\a");
printf("\n\nPress A Button To Try Again\n");}
}
Así hice las demás


Ahi no necesitas asignarle nada a R porque la pasas como parametro ;)


SuerteX :D
 
Weno man, yo lo descomprimi y creo que as funciono..... lastima que tenia muy poquita ram y por eso toy que no lo uso hasta que no tenga mas :S

umm si eso es por que eclipse corre sobre JVM y por eso chupa memoria a la lata.....pero la verdad eso no importa....como dije el problema se debe a que c/c++ es un lenguaje compilado...y eclipse usa la filosofia de compilar en tiempo real lo que en un lenguje estatico es imposible......ahora tengo otro problema...como ya saben en linux no existe conio.h su reemplazo se alla en el paquete ncurses y la libreria curses.h ya las insltale pero solo puedo compilar con el mando g++ -lncurses codigo.cpp programa y el eclipse usa es el mando make all ya trate de cambiarlo pero nada no sirve.....he leido que hay que importar las librerias o algo asi...pero ni idea como alguien sabe como es la cosa....os agradeceria mucho....
 
umm si eso es por que eclipse corre sobre JVM y por eso chupa memoria a la lata.....pero la verdad eso no importa....como dije el problema se debe a que c/c++ es un lenguaje compilado...y eclipse usa la filosofia de compilar en tiempo real lo que en un lenguje estatico es imposible......ahora tengo otro problema...como ya saben en linux no existe conio.h su reemplazo se alla en el paquete ncurses y la libreria curses.h ya las insltale pero solo puedo compilar con el mando g++ -lncurses codigo.cpp programa y el eclipse usa es el mando make all ya trate de cambiarlo pero nada no sirve.....he leido que hay que importar las librerias o algo asi...pero ni idea como alguien sabe como es la cosa....os agradeceria mucho....

weno, man.... esa se la debo.... como que toca www.sangoogle.com :)



SuerteX :)
 
hola, yo por aca otra vez, alguien me puede decir como convertir un string a un numero entero? esque necesito construir un programa que utilice contingsort pero que organice palabras, y el contingsort solo sirve para enteros, es por eso que necsito de una funcion string to int pero no la se.

PD: uso dev c++ 4.9.9.2

muchas gracias.
 
hola, yo por aca otra vez, alguien me puede decir como convertir un string a un numero entero? esque necesito construir un programa que utilice contingsort pero que organice palabras, y el contingsort solo sirve para enteros, es por eso que necsito de una funcion string to int pero no la se.
PD: uso dev c++ 4.9.9.2
muchas gracias.

que para eso no se usa atoi();.......

VIRUTERO_5 dijo:
weno, man.... esa se la debo.... como que toca www.sangoogle.com
smiley%20-%20happy.gif

SuerteX
smiley%20-%20happy.gif

bueno pos la cosa era como siempre una pendejada....en el proyecto see le da propiedades, luego en la pestaña c/c++ build se busca en settings de hay en el arbol de carpetas se busca algo que dice gcc linker o algo asi y en la carpeta librerias se añade el path de la ncurses y en librerias se pone ncurses...y alfin la incluye....pero esa libreria es una lata hace que la iostream no sirva y toca darle refreesh(); a cada rato para que pinte lo que uno le manda a escribir que ··$%%& bueno...hay sigo...suerte
 
hola, yo por aca otra vez, alguien me puede decir como convertir un string a un numero entero? esque necesito construir un programa que utilice contingsort pero que organice palabras, y el contingsort solo sirve para enteros, es por eso que necsito de una funcion string to int pero no la se.

PD: uso dev c++ 4.9.9.2

muchas gracias.

con substring puedes sacar carácter x carácter, y los vas ordenado.
saludos.
 
Gracias a todos por la respuesta, y aqui pondre mis dificultades.

Contingsort es un algoritmo para ordenar enteros, lo que quiero hacer esque este sirva para ordenar palabras (no una palabra, sino muchas palabras como un diccionario), ahora bien, necesito de una funcion que trasforme esa palabra en un enetero usando un criterio como por ejemplo el ASCII, asi puedria organizarlas pero de todas formas habrian probelmas, porque puede que dos palabras tengan el mismo numero, entonces ya habria una colision y esto dejaria de ser un contingsort y seria una especio de hash.

En realidad, ahora ya me entra la duda si se pude o no hacer esto que pidio el profesor, le preguntare a el si dice algo.

El strlen me dice de que tamaño es la palabra, pero no es lo que estoy buscando gracias de todas formas.
el subtring no se bien como se usa, pero segun me dices y si saca caracter por caracter podria trasformar eso en un entero y sumar todos los caracteres de una palabra y asi saber su valor en ASCII, pero como lo dije anteriormente, ya estoy dudando que esto se pueda.
 
Gracias a todos por la respuesta, y aqui pondre mis dificultades.

Contingsort es un algoritmo para ordenar enteros, lo que quiero hacer esque este sirva para ordenar palabras (no una palabra, sino muchas palabras como un diccionario), ahora bien, necesito de una funcion que trasforme esa palabra en un enetero usando un criterio como por ejemplo el ASCII, asi puedria organizarlas pero de todas formas habrian probelmas, porque puede que dos palabras tengan el mismo numero, entonces ya habria una colision y esto dejaria de ser un contingsort y seria una especio de hash.

En realidad, ahora ya me entra la duda si se pude o no hacer esto que pidio el profesor, le preguntare a el si dice algo.

El strlen me dice de que tamaño es la palabra, pero no es lo que estoy buscando gracias de todas formas.
el subtring no se bien como se usa, pero segun me dices y si saca caracter por caracter podria trasformar eso en un entero y sumar todos los caracteres de una palabra y asi saber su valor en ASCII, pero como lo dije anteriormente, ya estoy dudando que esto se pueda.

el substring(posición,tamaño_caracteres)
igual hay una funcion q te devuelve el valor de ascii de cada letra, la uso en una función para encriptar. deja la busco y te la paso.


-------------------------
string p="123";
c=(char)p.substring(1,1);
-------------------------
 
Hola que tal amigos.. espero me puedan ayudar con un problema.. se trata de archivos... tengo esta parte..

} case 2: { FILE * archivo=fopen (Nombre,"r"); /*Abre el archivo en formato de lectura*/
fscanf(archivo,"%s %s",&nom,&edad);
fgets(direccion,40,archivo); /*saca los datos*/
fgets(direccion,40,archivo);
printf ("%s\n, %s\n",nom,edad);
puts (direccion);
break;

Pero esto solamente me saca una parte de lo que guarde.. como le puedo hacer para que me busque una palabra en especifico, en este caso un nombre... y si encuentra el nombre.. me imprima todos los datos...

Como puedo hacerle...
 
Hola que tal amigos.. espero me puedan ayudar con un problema.. se trata de archivos... tengo esta parte..

} case 2: { FILE * archivo=fopen (Nombre,"r"); /*Abre el archivo en formato de lectura*/
fscanf(archivo,"%s %s",&nom,&edad);
fgets(direccion,40,archivo); /*saca los datos*/
fgets(direccion,40,archivo);
printf ("%s\n, %s\n",nom,edad);
puts (direccion);
break;

Pero esto solamente me saca una parte de lo que guarde.. como le puedo hacer para que me busque una palabra en especifico, en este caso un nombre... y si encuentra el nombre.. me imprima todos los datos...

Como puedo hacerle...

Código:
char nom[100],edad[10],x[100];

fprintf("digite nombre: ");
cin>>x;

FILE * archivo=fopen (Nombre,"r"); /*Abre el archivo en formato de lectura*/ 
   while(!Eof(archivo)){
       fscanf(archivo,"%s %s",nom,edad);
        if(strcmp(nom,x)==0){
            fprintf("nom");
            fprintf("edad\n");
         }
   }
fclose(archivo)

así quedaría mas o menos, no tengo un editor ahora lo hice aqui mismo, el cin>> es un lea, no me acorde como se hace en ambiente dos, así q sino t funciona ya sabes x que es.

saludos y éxitos
 
Pues asi kedo...

Pero me marca: [Linker error] undefined reference to 'Eof'
Id returned exit status

/*Este programa recibe 3 datos los almacena en un archivo de texto y los puede consultar*/

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

main() {
FILE *archivo; //Aqui abrimos un archivo que se llama agenda.txt donde se guardaran los registros de la agenda
char Nombre[]="Agenda.txt";
char linea[40];


char nom[15], edad[10],direccion[50],nuevo[15];
int opcion; /*Se da una interfaz grafica*/

printf ("\t\t*****************************************************\n\t\t\t1.Ingresar datos\n\t\t\t2.Consultar datos anteriores\n\t\t\t3.Salir\n\tDigite la opci¢n por favor y luego presione ENTER.\n");
scanf ("%d", &opcion);

switch (opcion) {
case 1: {
archivo=fopen (Nombre, "a"); /*Abre el archivo en formato de escritura*/

printf ("\n\t\tDigite su nombre:\n");
scanf("%s",&nom); /*pide el nombre*/
printf ("\t\tDigite su edad:\n");
scanf ("%s",&edad); /*Pide la edad*/
printf ("\t\tDigite su direcci¢n:\n");
gets (direccion); /*Pide la direcci¢n*/
gets (direccion); fprintf (archivo,"%s\n",nom); fprintf (archivo,"%s\n",edad); /*escribe las variables en el archivo txt*/
fprintf (archivo,"%s\n",direccion);
break;

} case 2: {
printf("digite nombre: ");
scanf("%s",&nuevo);
FILE * archivo=fopen (Nombre,"r"); /*Abre el archivo en formato de lectura*/
while(!Eof(archivo)){
fscanf(archivo,"%s %s",&nom,&edad);
if(strcmp(nuevo,nom)==0){
printf ("%s\n %s\n",nom,edad);
puts (direccion);
break;
}
}
fclose(archivo);


} case 3: {
break; }
default: {
printf ("Opci¢n inv lida\n");
break; } } printf ("Presione cualquier tecla para salir");
getch (); return 0;

system("pause");

}
 

Los últimos temas