Este es el codigo inicial del vídeo, para que podáis seguirlo: #include #include #define N 50; int main(){ int op; char key; vacio(); do{ do{ printf("Elige que deseas hacer: "); printf("(1) Añadir palabras al traductor. "); printf("(2) Buscar traduccion de una palabra. "); scanf("%i",&op); }while(op < 1 || op > 2); switch(op){ case 1: anadir(); break; case 2: traducir(); break; } printf("Introduce si deseas realizar otra operacion: (S/N)"); scanf("%c",&key); }while(key == 'S' || key == 's'); system("pause"); return 0; }
pues es un vídeo que toca ver varias veces , denota que toca hacer muchos ejercicios para adquirir la mentalidad de programador, porque uno puede entender como trabajan las cosas una por una, pero si tratamos de resolver un problema muchas veces no sabemos por donde empezar. buen vídeo gracias.
Ay, dios, cuando vi este tema por primera vez me reventó la cabeza, ahora volvi a verlos despues de unos años y fue pan comido. Hay que estudiar mucho para llegar a ese punto, pero que jodida alegria genera.
Vengo viendo todos los videos anteriores, y ninguno me había asustado al principio como esté. Buaaaaaa, que laaaaarrrgoooo... Con tus clases se aprende a respetar más el trabajo de los Informáticos
Queri agradecerte el trabajo que has realizado con estos vídeos. Llevo muchos años intentando aprender C pero leerse un manual es muy duro, sin embargo con los vídeos lo veo mas sencillo y con tus vídeos todavía más sencillo. Muchas gracias por tu trabajo.
Hola amigo! Opino lo mismo que vos y quería preguntarte si es un lenguaje que se sigue usando actualmente y si estás trabajando con él. Gracias y saludos.
muy bien profe, muchas gracias por el aporte. La verdad me ha ayudado mucho y cada vez que veo el video de la sesión siguiente hace que mi interés por aprender c sea mayor y terminando este curso me sigo con java. ;DD muy buenos ejercicios, sinceramente felicidades por su canal. Éxito :)
La verdad, terrible ejemplo. Venia preparado para algo mucho mas chico y me super mareaste XD voy a ver el video por segunda vez :P. te agradezco mucho!
jajaj sos un genio, explicas re bien todo, justo tuve un probleme "era que no me mostrava la traduccion" y despues de unos segundos me acorde de que vos enseñaste a usar el depuerador y bueno encontre que no habia inicializado la funcion temp. la verdad sos muy bueno explicando todo .
Muy buena clase de programacion amigo, no me sabia esta de hacer un traductor con un menu utilizando do-while, ya hasta le añadi un system("cls") x), saludos desde Mexico D.F. PD: Tus tutoriales me han sacado de muchas dudas ;3
Encontré un error en este programa cuando puse en buscar la opción de ingles a español le puse la palabra en español y por lógica no debía haber hecho nada y entra en un bucle infinito. Lo eh solucionado con un else y algunos arreglos que tu me enseñaste :D - los else están en la función tradu, también puse unos system ("cls"); en main y en tradu. quedo copado, :D Emilio, espero tu saludo :D // Bloque 6.3 Realiza un traductor de ingles a expañol y viceversa con un vector de estructuras #include #include #define N 50 typedef struct{ char eng[N]; char esp[N]; int lleno; }traductor; traductor trad[N]; void vacio(); void anadir(); void traducir(); void tradu(int op); void cambio (char palabra[N]); int main (){ int op; char key; vacio(); system ("cls"); do{ do{ printf ("
Elije que deseas hacer:
"); printf (" (1) Anadir palabras de traductor. "); printf (" (2) Buscar traduccion de una palabra. "); printf (" Opcion: "); scanf ("%i",&op); }while (op < 1 || op > 2); switch (op){ case 1: { anadir (); break; } case 2:{ traducir(); break; } } printf (" Introduce si deseas realizar otra operacion: (S/N) "); scanf ("%c",&key); system ("cls"); }while (key == 'S' || key == 's' ); system ("pause"); return 0; } void vacio(){ int i; for (i = 0; i < N; i++){ trad[i].lleno = 0; } } void anadir(){ int i,aux; aux = 0; for (i = 0 ; i < N && aux == 0; i++){ if (trad[i].lleno == 0){ printf (" Introduce la palabra en Ingles: "); fflush (stdin); fgets (trad[i].eng,N,stdin); cambio(trad[i].eng); printf (" Introduce la palabra en Espanol: "); fflush (stdin); fgets (trad[i].esp,N,stdin); cambio(trad[i].esp); trad[i].lleno = 1; aux = 1; } } } void traducir(){ int op; do{ printf (" Elije que deseas hacer:
"); printf (" (1) Traducir de Ingles a Espanol. "); printf (" (2) Traducir de Espanol a Ingles. "); printf (" Opcion: "); scanf ("%i",&op); }while (op < 1 || op > 2); switch (op){ case 1: { tradu (op); break; } case 2:{ tradu (op); break; } } } void tradu(int op){ int i, j, temp; char aux[N]; temp = 0; printf (" Introduce la palabra que deseas buscar: "); fflush (stdin); fgets (aux,N,stdin); cambio(aux); if (op == 1){ for (i = 0; i < N && temp == 0; i++){ j = strcmp(aux, trad[i].eng); if (j == 0){ printf (" La traducion de %s es %s.
",trad[i].eng, trad[i].esp); temp = 1; } else{ printf (" PALABRA EN INGLES NO ENCONTRADA "); system ("pause"); main(); } } } else { for (i = 0; i < N && temp == 0; i++){ j = strcmp(aux, trad[i].esp); if (j == 0){ printf (" La traducion de %s es %s.
",trad[i].esp, trad[i].eng); temp = 1; } else{ printf (" PALABRA EN ESPANOL NO ENCONTRADA "); system ("pause"); main(); } } } } void cambio(char palabra[N]){ int i; for (i = 0; i < N; i++){ if (palabra[i] == ' '){ palabra[i] = '\0'; } } }
1 semana buscando el error que me daba en la función añadir y era simplemente que el programa no lee la letra 'ñ' en vez de eso hay que escribir 'n' osea en vez de "añadir" escriban "anadir" la letra "ñ" da error cambien por "n"
Hola amigo, he comenzado a meterme en el mundo de la programación en C y tus videos me han sido muy provechosos, sobre todo porque no tenía ni idea. Ahora en la misma medida que he estado viendo tus videos he tratado de implementar un par de cosillas y es aquí donde me trabé. Estoy tratando de implementar un pequeño soft, ejemplo, para calcular algunos parámetros de equipos y como estos pueden ser tantos como el usuario escoja como que me lío tantísimo a la hora de poder ingresar los valores a las estructuras: tipo (char), potencia(float), tensión (float) y que sus datos me queden disponibles para su uso posterior, si me pudieras ayudar te lo agradecería de sobremanera, te repito, lo que sé de C ha sido gracias a tus muy buenos videos y ojalá continúen, gracias de antemano
Salvador Martín Buenas, ante todo, muchas gracias por tus buenas palabras, me esfuerzo mucho en hacer los videos de con la maxima claridad que me es posible. Por otra parte, siento tener que decirte que no puedo ayudarte con tu programa, diariamente me piden ayuda usuarios como tu con tal o cual programa que quieren hacer y tengo que decirles lo mismo, ya que yo mismo estoy realizando actualmente varios proyectos (puedes verlo en el twitter del canal) que me quitan mucho tiempo, es por esa razon que durante algun mes no he podido subir ningun video al canal. Asi que lo dicho, lamento mucho no poder ayudarte, simplemente dedicale un mayor esfuerzo por ti mismo y veras como lo consigues, comienza desde poco, pruebas y cuando funcione vas sumando funcionalidades. Un saludo.
Empieza A Programar gracias por tu respuesta tan rápida, pero creo que en mi comentario anterior no me expliqué con claridad, no pretendo que me haga el programa ni por el estilo, más bien mi duda radicaba, radica, en cómo hacer la función y la estructura con un bucle, ya que el tamaño de la memoria a utilizar para la estructura va a depender de la cantidad de elementos a introducir por el usuario en la estructura. De todas formas tus videos me han sido de gran ayuda y continuaré profundizando como bien me propones. Gracias nuevamente y por favor cuando tenga la oportunidad continúe con los tutoriales, que son de gran inspiración, a mi entender, para quienes comenzamos a programar.
Excelente canal, y muy buen tutorial ,claro y cercano. Después del abrazo viene la cuestión del mensaje , ¿Como puedo limpiar el buffer en GCC ? es un problema que vengo arrastrando todas las lecciones pero de aquí no puedo pasar si no lo soluciono, fflush(stdin); en linux no funciona, he visto alguna solución en foros del tema pero no funciona bien. Un saludo y gracias de antemano.
realmente, es increiblemente complicado, pero si entiendo me quedo en claro que tipo de esttructuras debo usar, como los switchs para seleccionar las funciones correspondientes para el programa, crear una estructuras de index para encontrar las traducciones correctas, una estructura fget para obtener la traduccion correcta y una estructura que lea las traducciones teniendo en cuenta que la palabras se ingresaron juntas por lo cual deberian tener los mismos index, es todo sumamente obvio, bastante complicado debere ver varias veces el video para pillarle el truco pero se entiende
hola Emilio acabo de suscribirme a tu canal me encantan tus vídeos, lastimosamente no he podido descargar el material en pdf ya que algunos no se encuentran mas, me gustaría poder acceder a ellos si se puede. ademas me gustaría que me recomiendes algún libro para aprender a programar en C ya que me recomendaron lectura para aprender a programar no solamente ver vídeos
Profe, en lugar de usar la función fgets no es posible utilizar solamente la función gets ? Yo tengo entendido que fgets es para trabajar con un archivo. Muchas gracias !
abia dicho que la funcion gets es peligrosa ya que no respeta los limites del vector, osea si pones char v[50]; puedes poner perfectamente 500 palabras, y estas se sobre escriben en ortros codigos causando daños.
Porque en ocasiones el compilador es capaz de inferirlo y lo pone el directamente, pero no debes de fiarte nunca de esta practica, si yo no lo puse es porque se me olvido, habrás visto en montones de vídeos que se me olvida poner los prototipos y me aparece un fallo. Un saludo.
Me acuerdo que en el primer vídeo de esta serie, como eran muy fáciles me puse velocidad 1.25 para probar, bueno, me acabo de dar cuenta de que hoy día te tenia en velocidad 1.25 haha, bueno he visto un 25 % más de videos hahhahaa.
Hola ¿como estás.? Me surgió el siguiente problema: cuando el programa comparaba la palabra que había introducido previamente en los string eng o esp nunca me salió la traducción.Por lo tanto revisé minuciosamente cada aspecto del programa. Llegué a la conclusion de que todo está correcto pero por algun extraño motivo, cundo guarda la palabra a comparar con los string eng o esp, el programa adhiere el caracter "É" al final (por ejemplo go, goÉ), por lo tanto, nunca encuentra conciencias. ¿Alguna idea?
Hay una cosa que no entiendo, por qué en el while pones (op2) si pides que te introduzcan por teclado el 1 o el 2. Lo he probado de las dos formas, con ninguna da error, sin embargo no me ejecuta el while, solo me pregunta si quiero introducir una nueva palabra o traducirla. Un saludo.
Hizo eso para evitar que el usuario ingrese cualquier cosa. Si tecleas algo que no sea un 1 o un 2, se seguira repitiendo todo el menu hasta que ingreses una opcion correcta.
Disculpa, en el programa, hay un error en "Buscar de Español a ingles". En el depurador, strcmp(aux,trad[i].esp) da como resultado cualquier numero y no "0"(Cero). Solo en strcmp(aux,trad[i].eng) si da 0. ¿Sabes por que pasa esto? Nota: Para los que les pasa esto, usar if(j!=0) en la traducción de español. Edit: Otra solución. aux = (strcmp ( aux,trad[i].eng ) == 0 );
hola, tengo un problema, mi programa jala bien, pero al momento de pedir la traduccion sólo me pide la palabra que quiero traducir, pero no me da la respuesta, agradeceria la ayuda
Hola, tengo un problema con este codigo. Lo que me sucede es que, voy por el momento del video en el cual compilas por primera vez, y yo al hacer lo mismo, al seleccionar op1 y entrar en la función añadir, me hace los dos printf seguidos y por lo tanto no puedo hacer el fgets(trad[i].eng,N,stdin); Muchas gracias de antemano
¿cual es la diferencia entre declarar el struct como lo haces en los videos y hacerlo asi? he entendido como utilizar las estructuras como tu lo explicas pero en todos los ejemplos que tengo de las transparencias de mi profesor los declara de esta forma y no se acceder a ellos. Tampoco me deja acceder poniendo fichalibro.prestado = 1 o 0 podrias hacer un pequeño apartado en el que explicaras esta forma de definirlas. Gracias, struct fichaLibro { char titulo[20]; //Titulo del libro char autor [20]; //Autor del libro char ISBN[18]; //Debe almacenar 17 caracteres + el caracter nulo int prestado; //0: No prestado; 1: presado };
Hola, estuve viendo tus videos y son muy buenos. Pude lograr crear este programa y me aparece un error muy extraño. Lo compilo sin ninguna dificultad, y cuando selecciono la opcion de buscar una palabra me salta un error que dice: "La instruccion en 0x77c14609 hace referencia en la memoria 0x77c05c94". La memoria no se puede "written". Ese es el error que me aparece cuando deseo buscar una palabra. Con respecto a la carga de palabras las realiza bien. Te dejo copiado el codigo del programa a ver si puede encontrar la falla, pero el compilador no encontro nada. Desde ya muchas gracias, tus videos son excelentes. Un saludo #include #include #define N 50 void vacio(); void anadir (); void traducir(); void tradu(int op); void cambio(char palabra[N]); typedef struct{ char ing[N]; char esp[N]; int lleno; }traductor; traductor trad[N]; int main(){ int op; char key; vacio(); do{ do{ printf("Ingresar el numero correcto segun la accion que desee realizar "); printf("(1) Ingresar una nueva palabra al traductor "); printf("(2) Buscar una palabra en el traductor "); scanf("%i",&op); } while (op2 ); switch(op){ case 1: anadir(); break; case 2: traducir(); break; } printf("Desea realizar otra operacion=(S/N)
No me reconoce los trad[i]. fuera de la funcion main. y no se porqué. por ejemplo en la funcion vacio me dice " trad undeclared( first use in this function)
alguien puede ayudarme, necesito crear un traductor multiidiomas en c++ al introducir la palabra, y darle enter, el programa debe de traducirlo a distintos tipos de lenguajes y al mismo tiempo se debe escuchar su pronunciacion alguien puede ayudarme
este código: switch (op){ case 1; tradu (op); break; case 2 tradu (op); break; } no hace falta, es redundante, pues las dos ramas de switch son iguales, siempre es tradu(op);
No encuentro el error cuando intento añadir una nueva palabra mas de dos veces no entra en la funcion añadir si no que salta directamente a la parte de si quiero realizar otra operacion #include #include #define N 50 typedef struct { char ing[N]; char esp[N]; int lleno; }traductor; void anadir(); void traducir(); void vacio (); void traduc (int op); void cambio (char palabra[N]); traductor trad[N]; int main (){ int op; char key;
vacio();
do { do { printf ("Elija la accion que desea realizar: "); printf ("[1]Anadir una palabra "); printf ("[2]Traducir una palabra "); fflush (stdin); scanf ("%i",&op); }while (op2); switch (op){ case 1: anadir(); break; case 2: traducir (); break ; } printf ("Quiere realizar otra operacion? s/n "); fflush (stdin); scanf ("%c",&key); }while (key== 's' || key== 'S');
system ("pause"); return 0; } void vacio () { int i; for (i=0; i
Este es el codigo inicial del vídeo, para que podáis seguirlo:
#include
#include
#define N 50;
int main(){
int op;
char key;
vacio();
do{
do{
printf("Elige que deseas hacer:
");
printf("(1) Añadir palabras al traductor.
");
printf("(2) Buscar traduccion de una palabra.
");
scanf("%i",&op);
}while(op < 1 || op > 2);
switch(op){
case 1:
anadir();
break;
case 2:
traducir();
break;
}
printf("Introduce si deseas realizar otra operacion: (S/N)");
scanf("%c",&key);
}while(key == 'S' || key == 's');
system("pause");
return 0;
}
pues es un vídeo que toca ver varias veces , denota que toca hacer muchos ejercicios para adquirir la mentalidad de programador, porque uno puede entender como trabajan las cosas una por una, pero si tratamos de resolver un problema muchas veces no sabemos por donde empezar. buen vídeo gracias.
Ay, dios, cuando vi este tema por primera vez me reventó la cabeza, ahora volvi a verlos despues de unos años y fue pan comido. Hay que estudiar mucho para llegar a ese punto, pero que jodida alegria genera.
Vengo viendo todos los videos anteriores, y ninguno me había asustado al principio como esté. Buaaaaaa, que laaaaarrrgoooo... Con tus clases se aprende a respetar más el trabajo de los Informáticos
Queri agradecerte el trabajo que has realizado con estos vídeos. Llevo muchos años intentando aprender C pero leerse un manual es muy duro, sin embargo con los vídeos lo veo mas sencillo y con tus vídeos todavía más sencillo. Muchas gracias por tu trabajo.
Hola amigo! Opino lo mismo que vos y quería preguntarte si es un lenguaje que se sigue usando actualmente y si estás trabajando con él. Gracias y saludos.
Excelente clase, incluye casi todo lo visto anteriormente
Este me ha parecido muuuuuuuuuuuuucho más complicado. Tendré que verme el video unas cuantas veces más. Gracias por todo esto, eres el Sheriff!!!
Usted señor merece percibir ingresos por la publicidad de youtube,
Por consiguiente el adblock los desablito..!!!
amigo eres uno de los mejores que he visto dando curso.explicas bien y sabes mucho .gracias por compartir tus conocimientos compa
un millón de gracias por este video, es justo el ejemplo perfecto que necesitaba, me estás salvando la materia y lo estoy disfrutando tanto!
brutal esta clase!
valla reto, he tenido que retroceder varios videos para poder hacer esta integracion de codigos. Gracias por el reto😁
muy bien profe, muchas gracias por el aporte. La verdad me ha ayudado mucho y cada vez que veo el video de la sesión siguiente hace que mi interés por aprender c sea mayor y terminando este curso me sigo con java. ;DD muy buenos ejercicios, sinceramente felicidades por su canal. Éxito :)
La verdad, terrible ejemplo. Venia preparado para algo mucho mas chico y me super mareaste XD voy a ver el video por segunda vez :P. te agradezco mucho!
Que ejemplo tan bacano. Muchas gracias Emilio.
Increible ejercicio!!, muchos aprecio por tu trabajo
jajaj sos un genio, explicas re bien todo, justo tuve un probleme "era que no me mostrava la traduccion" y despues de unos segundos me acorde de que vos enseñaste a usar el depuerador y bueno encontre que no habia inicializado la funcion temp. la verdad sos muy bueno explicando todo .
tenia tu mismo error... gracias.
Muy buen video, muy bien explicado y muy buena clase, tiene muy buena pinta lo de las estructuras
10/10
Muy buena clase de programacion amigo, no me sabia esta de hacer un traductor con un menu utilizando do-while, ya hasta le añadi un system("cls") x), saludos desde Mexico D.F.
PD: Tus tutoriales me han sacado de muchas dudas ;3
Acaba de salvarme el semestre
Pana eres excelente profesor, saludos.
Encontré un error en este programa
cuando puse en buscar la opción de ingles a español le puse la palabra en español y por lógica no debía haber hecho nada y entra en un bucle infinito.
Lo eh solucionado con un else y algunos arreglos que tu me enseñaste :D - los else están en la función tradu, también puse unos system ("cls"); en main y en tradu.
quedo copado, :D
Emilio, espero tu saludo :D
// Bloque 6.3 Realiza un traductor de ingles a expañol y viceversa con un vector de estructuras
#include
#include
#define N 50
typedef struct{
char eng[N];
char esp[N];
int lleno;
}traductor;
traductor trad[N];
void vacio();
void anadir();
void traducir();
void tradu(int op);
void cambio (char palabra[N]);
int main (){
int op;
char key;
vacio();
system ("cls");
do{
do{
printf ("
Elije que deseas hacer:
");
printf (" (1) Anadir palabras de traductor.
");
printf (" (2) Buscar traduccion de una palabra.
");
printf ("
Opcion: ");
scanf ("%i",&op);
}while (op < 1 || op > 2);
switch (op){
case 1: {
anadir ();
break;
}
case 2:{
traducir();
break;
}
}
printf ("
Introduce si deseas realizar otra operacion: (S/N) ");
scanf ("%c",&key);
system ("cls");
}while (key == 'S' || key == 's' );
system ("pause");
return 0;
}
void vacio(){
int i;
for (i = 0; i < N; i++){
trad[i].lleno = 0;
}
}
void anadir(){
int i,aux;
aux = 0;
for (i = 0 ; i < N && aux == 0; i++){
if (trad[i].lleno == 0){
printf ("
Introduce la palabra en Ingles: ");
fflush (stdin);
fgets (trad[i].eng,N,stdin);
cambio(trad[i].eng);
printf ("
Introduce la palabra en Espanol: ");
fflush (stdin);
fgets (trad[i].esp,N,stdin);
cambio(trad[i].esp);
trad[i].lleno = 1;
aux = 1;
}
}
}
void traducir(){
int op;
do{
printf ("
Elije que deseas hacer:
");
printf (" (1) Traducir de Ingles a Espanol.
");
printf (" (2) Traducir de Espanol a Ingles.
");
printf ("
Opcion: ");
scanf ("%i",&op);
}while (op < 1 || op > 2);
switch (op){
case 1: {
tradu (op);
break;
}
case 2:{
tradu (op);
break;
}
}
}
void tradu(int op){
int i, j, temp;
char aux[N];
temp = 0;
printf ("
Introduce la palabra que deseas buscar: ");
fflush (stdin);
fgets (aux,N,stdin);
cambio(aux);
if (op == 1){
for (i = 0; i < N && temp == 0; i++){
j = strcmp(aux, trad[i].eng);
if (j == 0){
printf ("
La traducion de %s es %s.
",trad[i].eng, trad[i].esp);
temp = 1;
}
else{
printf ("
PALABRA EN INGLES NO ENCONTRADA
");
system ("pause");
main();
}
}
}
else {
for (i = 0; i < N && temp == 0; i++){
j = strcmp(aux, trad[i].esp);
if (j == 0){
printf ("
La traducion de %s es %s.
",trad[i].esp, trad[i].eng);
temp = 1;
}
else{
printf ("
PALABRA EN ESPANOL NO ENCONTRADA
");
system ("pause");
main();
}
}
}
}
void cambio(char palabra[N]){
int i;
for (i = 0; i < N; i++){
if (palabra[i] == '
'){
palabra[i] = '\0';
}
}
}
Muy buena idea para explicar el uso de estructuras =D
1 semana buscando el error que me daba en la función añadir y era simplemente que el programa no lee la letra 'ñ' en vez de eso hay que escribir 'n' osea en vez de "añadir" escriban "anadir" la letra "ñ" da error cambien por "n"
Gracias, estaba en la misma
Yo estaba pensando lo mismo jaja, pero menos mal que has colocado este comentario para aclarar dudas (y)
tienen q poner "ni" como anio, conio,etc
O pónganle agregar, en vez de añadir
Hola amigo, he comenzado a meterme en el mundo de la programación en C y tus videos me han sido muy provechosos, sobre todo porque no tenía ni idea. Ahora en la misma medida que he estado viendo tus videos he tratado de implementar un par de cosillas y es aquí donde me trabé. Estoy tratando de implementar un pequeño soft, ejemplo, para calcular algunos parámetros de equipos y como estos pueden ser tantos como el usuario escoja como que me lío tantísimo a la hora de poder ingresar los valores a las estructuras: tipo (char), potencia(float), tensión (float) y que sus datos me queden disponibles para su uso posterior, si me pudieras ayudar te lo agradecería de sobremanera, te repito, lo que sé de C ha sido gracias a tus muy buenos videos y ojalá continúen, gracias de antemano
Salvador Martín Buenas, ante todo, muchas gracias por tus buenas palabras, me esfuerzo mucho en hacer los videos de con la maxima claridad que me es posible.
Por otra parte, siento tener que decirte que no puedo ayudarte con tu programa, diariamente me piden ayuda usuarios como tu con tal o cual programa que quieren hacer y tengo que decirles lo mismo, ya que yo mismo estoy realizando actualmente varios proyectos (puedes verlo en el twitter del canal) que me quitan mucho tiempo, es por esa razon que durante algun mes no he podido subir ningun video al canal.
Asi que lo dicho, lamento mucho no poder ayudarte, simplemente dedicale un mayor esfuerzo por ti mismo y veras como lo consigues, comienza desde poco, pruebas y cuando funcione vas sumando funcionalidades.
Un saludo.
Empieza A Programar gracias por tu respuesta tan rápida, pero creo que en mi comentario anterior no me expliqué con claridad, no pretendo que me haga el programa ni por el estilo, más bien mi duda radicaba, radica, en cómo hacer la función y la estructura con un bucle, ya que el tamaño de la memoria a utilizar para la estructura va a depender de la cantidad de elementos a introducir por el usuario en la estructura. De todas formas tus videos me han sido de gran ayuda y continuaré profundizando como bien me propones. Gracias nuevamente y por favor cuando tenga la oportunidad continúe con los tutoriales, que son de gran inspiración, a mi entender, para quienes comenzamos a programar.
Muy buen trabajo "as usual"
EXCELENTE!
Excelente canal, y muy buen tutorial ,claro y cercano.
Después del abrazo viene la cuestión del mensaje ,
¿Como puedo limpiar el buffer en GCC ?
es un problema que vengo arrastrando todas las lecciones pero de aquí no puedo pasar si no lo soluciono,
fflush(stdin); en linux no funciona, he visto alguna solución en foros del tema pero no funciona bien.
Un saludo y gracias de antemano.
mu buen video ere un crak pixa !! salu2
Gracias cojonee!
realmente, es increiblemente complicado, pero si entiendo me quedo en claro que tipo de esttructuras debo usar, como los switchs para seleccionar las funciones correspondientes para el programa, crear una estructuras de index para encontrar las traducciones correctas, una estructura fget para obtener la traduccion correcta y una estructura que lea las traducciones teniendo en cuenta que la palabras se ingresaron juntas por lo cual deberian tener los mismos index, es todo sumamente obvio, bastante complicado debere ver varias veces el video para pillarle el truco pero se entiende
hola Emilio acabo de suscribirme a tu canal me encantan tus vídeos, lastimosamente no he podido descargar el material en pdf ya que algunos no se encuentran mas, me gustaría poder acceder a ellos si se puede. ademas me gustaría que me recomiendes algún libro para aprender a programar en C ya que me recomendaron lectura para aprender a programar no solamente ver vídeos
minuto 24:51 pueden checar todo el codigo
EL PEPE 2:56, alguien 2020?
Profe, en lugar de usar la función fgets no es posible utilizar solamente la función gets ? Yo tengo entendido que fgets es para trabajar con un archivo. Muchas gracias !
abia dicho que la funcion gets es peligrosa ya que no respeta los limites del vector, osea si pones char v[50]; puedes poner perfectamente 500 palabras, y estas se sobre escriben en ortros codigos causando daños.
Hola. ¿Por qué te funcionó la función de cambio si no declaraste el prototipo?
Porque en ocasiones el compilador es capaz de inferirlo y lo pone el directamente, pero no debes de fiarte nunca de esta practica, si yo no lo puse es porque se me olvido, habrás visto en montones de vídeos que se me olvida poner los prototipos y me aparece un fallo.
Un saludo.
Buenas, por las dudas no sabes como hacer el traductor en pascal?
Me acuerdo que en el primer vídeo de esta serie, como eran muy fáciles me puse velocidad 1.25 para probar, bueno, me acabo de dar cuenta de que hoy día te tenia en velocidad 1.25 haha, bueno he visto un 25 % más de videos hahhahaa.
Te habrá parecido que tengo la voz de pito xD
Un poco si la verdad, también me parecía que escribías demasiado rápido sobre todo los simbolos!! hahaha
tuve que ver el video 3 veces y hacer el codigo 2 veces para entender bn lo que estabas haciendo x_X
Si no fuera vector, se tendría que usar puntero?
Hola ¿como estás.?
Me surgió el siguiente problema: cuando el programa comparaba la palabra que había introducido previamente en los string eng o esp nunca me salió la traducción.Por lo tanto revisé minuciosamente cada aspecto del programa.
Llegué a la conclusion de que todo está correcto pero por algun extraño motivo, cundo guarda la palabra a comparar con los string eng o esp, el programa adhiere el caracter "É" al final (por ejemplo go, goÉ), por lo tanto, nunca encuentra conciencias.
¿Alguna idea?
soy la vicita # 9700 yeii
asin que nada
Hay una cosa que no entiendo, por qué en el while pones (op2) si pides que te introduzcan por teclado el 1 o el 2. Lo he probado de las dos formas, con ninguna da error, sin embargo no me ejecuta el while, solo me pregunta si quiero introducir una nueva palabra o traducirla.
Un saludo.
Hizo eso para evitar que el usuario ingrese cualquier cosa. Si tecleas algo que no sea un 1 o un 2, se seguira repitiendo todo el menu hasta que ingreses una opcion correcta.
necesito el codigo donde lo puedo conseguir por favor
Disculpa, en el programa, hay un error en "Buscar de Español a ingles".
En el depurador, strcmp(aux,trad[i].esp) da como resultado cualquier numero y no "0"(Cero). Solo en strcmp(aux,trad[i].eng) si da 0.
¿Sabes por que pasa esto?
Nota: Para los que les pasa esto, usar if(j!=0) en la traducción de español.
Edit: Otra solución.
aux = (strcmp ( aux,trad[i].eng ) == 0 );
No me paso nada de lo que dices. No sé si tendra algo que ver el SO
El minuto 25:28 lo es todo! Hahahaha
por que a mi me marca error en system("pause")?
No sabia que las variables de un tipo de estructura se podían declarar fuera del main...
hola, tengo un problema, mi programa jala bien, pero al momento de pedir la traduccion sólo me pide la palabra que quiero traducir, pero no me da la respuesta, agradeceria la ayuda
+Erick Roberto El depurador para estos casos es la solución.
Un saludo.
Hola, tengo un problema con este codigo. Lo que me sucede es que, voy por el momento del video en el cual compilas por primera vez, y yo al hacer lo mismo, al seleccionar op1 y entrar en la función añadir, me hace los dos printf seguidos y por lo tanto no puedo hacer el fgets(trad[i].eng,N,stdin);
Muchas gracias de antemano
Pablo Sio cuando hay fallos de este tipo, depurador para buscar el error.
Un saludo.
muy dificil pero bueno
El switch del metodo traducir no es necesario, se puede sustituir por solo esto tradu(op);
a la funcion cambio(aux); que pusistes le falto el [N] creo que por eso te lanzo el error
¿cual es la diferencia entre declarar el struct como lo haces en los videos y hacerlo asi? he entendido como utilizar las estructuras como tu lo explicas pero en todos los ejemplos que tengo de las transparencias de mi profesor los declara de esta forma y no se acceder a ellos. Tampoco me deja acceder poniendo fichalibro.prestado = 1 o 0 podrias hacer un pequeño apartado en el que explicaras esta forma de definirlas.
Gracias,
struct fichaLibro {
char titulo[20]; //Titulo del libro
char autor [20]; //Autor del libro
char ISBN[18]; //Debe almacenar 17 caracteres + el caracter nulo
int prestado; //0: No prestado; 1: presado
};
Hola, estuve viendo tus videos y son muy buenos. Pude lograr crear este programa y me aparece un error muy extraño. Lo compilo sin ninguna dificultad, y cuando selecciono la opcion de buscar una palabra me salta un error que dice:
"La instruccion en 0x77c14609 hace referencia en la memoria 0x77c05c94". La memoria no se puede "written".
Ese es el error que me aparece cuando deseo buscar una palabra. Con respecto a la carga de palabras las realiza bien. Te dejo copiado el codigo del programa a ver si puede encontrar la falla, pero el compilador no encontro nada.
Desde ya muchas gracias, tus videos son excelentes. Un saludo
#include
#include
#define N 50
void vacio();
void anadir ();
void traducir();
void tradu(int op);
void cambio(char palabra[N]);
typedef struct{
char ing[N];
char esp[N];
int lleno;
}traductor;
traductor trad[N];
int main(){
int op;
char key;
vacio();
do{
do{ printf("Ingresar el numero correcto segun la accion que desee realizar
");
printf("(1) Ingresar una nueva palabra al traductor
");
printf("(2) Buscar una palabra en el traductor
");
scanf("%i",&op);
}
while (op2 );
switch(op){
case 1:
anadir();
break;
case 2:
traducir();
break;
}
printf("Desea realizar otra operacion=(S/N)
");
scanf("%c",&key);
}
while(key=='S' || key=='s' );
system("pause");
return 0;
}
void vacio(){
int i;
for(i=0;i
No me reconoce los trad[i]. fuera de la funcion main. y no se porqué.
por ejemplo en la funcion vacio me dice " trad undeclared( first use in this function)
sin el codigo es imposible ayudarte, aun asi algo debes de tener mal copiado.
Un saludo.
no me da la opcion de hacer varias cosas
Hace el juego del ahorcado en c con grafica
si lo cambio por el \O me dice sale un warning unknow escape sequence, por que ?? me ha faltado algo ?, por lo demas el programa me salio perfecto
adrian pachon mena lo tenes q cambiar por /0 no por "o"
alguien puede ayudarme, necesito crear un traductor multiidiomas en c++ al introducir la palabra, y darle enter, el programa debe de traducirlo a distintos tipos de lenguajes y al mismo tiempo se debe escuchar su pronunciacion
alguien puede ayudarme
este código:
switch (op){
case 1;
tradu (op);
break;
case 2
tradu (op);
break;
}
no hace falta, es redundante, pues las dos ramas de switch son iguales, siempre es tradu(op);
Case 1: op = 1
Case 2: op= 2
Si es necesario bro
No encuentro el error cuando intento añadir una nueva palabra mas de dos veces no entra en la funcion añadir si no que salta directamente a la parte de si quiero realizar otra operacion
#include
#include
#define N 50
typedef struct {
char ing[N];
char esp[N];
int lleno;
}traductor;
void anadir();
void traducir();
void vacio ();
void traduc (int op);
void cambio (char palabra[N]);
traductor trad[N];
int main (){
int op;
char key;
vacio();
do {
do {
printf ("Elija la accion que desea realizar:
");
printf ("[1]Anadir una palabra
");
printf ("[2]Traducir una palabra
");
fflush (stdin);
scanf ("%i",&op);
}while (op2);
switch (op){
case 1:
anadir();
break;
case 2:
traducir ();
break ;
}
printf ("Quiere realizar otra operacion? s/n ");
fflush (stdin);
scanf ("%c",&key);
}while (key== 's' || key== 'S');
system ("pause");
return 0;
}
void vacio () {
int i;
for (i=0; i
Depurador para estos casos.
Gracias muy bien explicadas tus clases y super faciles de entender......
pasa el archivo plox
\0 no \o emilio jejeje
Me da mal
//Realizar un traducto de Inglés a Español y viceversa con un vector de estructuras.
#include
#include
#define N 50
typedef struct{
char eng[N];
char esp[N];
int lleno;
}traductor;
traductor trad[N];
void vacio();
void anadir();
void traducir ();
void tradu (int op);
int main (){
int op;
char key;
vacio();
do{
do{
printf ("Elige que deseas hacer:
");
printf ("(1) Anadir palabras al traductor.
");
printf ("(2) Buscar traduccion de una palabra.
");
scanf ("%i",&op);
}while (op < 1 || op > 2);
switch (op) {
case 1:
anadir();
break;
case 2:
traducir ();
break;
}
printf ("Introduce si deseas realizar otra operacion: (S/N ");
scanf ("%c",&key);
}while (key == 's' || key == 'a');
system ("pause");
return 0;
}
void vacio() {
int i;
for (i = 0; i < N; i++) {
trad[i].lleno = 0;
}
}
void anadir () {
int i, aux;
aux = 0;
for (i = 0; i < N && aux == 0; i++) {
if (trad[i].lleno == 0) {
printf ("Introduce la palabra en Ingles: ");
fflush (stdin);
fgets (trad[i].eng,N,stdin);
cambio(trad[i].eng);
printf ("Introduce la palabra en Espanol: ");
fflush (stdin);
fgets (trad[i].esp,N,stdin);
cambio (trad[i].esp);
trad[i].lleno = 1;
aux = 1;
}
}
}
void traducir () {
int op;
do{
printf ("Elige que deseas hacer:
");
printf ("(1) Traducir de Ingles al Espanol.
");
printf ("(2) Traducir de Espanol al Ingles.
");
scanf ("%i",&op);
}while (op < 1 || op > 2);
switch (op) {
case 1:
tradu(op);
break;
case 2:
tradu(op);
break;
}
}
void tradu (int op) {
int i, j, temp;
char aux[N];
temp = 0;
printf ("Introduce la palabra que deseas buscar: ");
fflush (stdin);
fgets (aux, N, stdin);
cambio (aux);
if (op == 1) {
for (i = 0; i < N && temp == 0; i++) {
j = strcmp(aux, trad[i].eng);
if (j == 0) {
printf ("La traduccio de %s es %s.
",trad[i].eng, trad[i].esp);
temp = 1;
}
}
}
else {
for (i = 0; i < N && temp == 0; i++) {
j = strcmp(aux, trad[i].eng);
if (j == 0) {
printf ("La traduccio de %s es %s.
",trad[i].esp, trad[i].eng);
temp = 1;
}
}
}
}
voidcambio (char palabra[N]) {
int i;
for (i = 0; i < N; i++) {
if (palabra[i] == '
') {
palabra[i] = '\0';
}
}
}
Este ejercicio lo has pensado tu o lo cojiste de alguna parte
Si te lees la descripción lo veras por ti mismo :D.