Autor
|
Tema: algun metodo alternativo al codigo que hice?? (Leído 1,858 veces)
|
adriana13
Desconectado
Mensajes: 14
|
Hola, tenia que hacer un subprograma que lea letras y las incorpore a un archivo, el programa finaliza si ingreso 2 letras "a" seguidas. El codigo que hice funciona pero me parece muy engorroso, quisiera que me explicaran alguna manera alternativa que no tenga q escribir tanto codigo. gracias #include <stdio.h> #include<stdlib.h> FILE *fd; void leer_letras (); int main(){ leer_letras(); return 0;} void leer_letras (){ int i; char let[5]; FILE *fd; char direccion[]="C:\\Users\\adria\\Downloads\\hola2.txt"; fd = fopen(direccion , "w");if (fd==NULL){ } for (i=0; i<5; i++){ printf("\ningrese una letra: "); if(let [0]=='a'&&let [1]=='a'){printf("dato no valido"); if(let [1]=='a'&& let [2]=='a'){printf("dato no valido"); if(let [2]=='a'&& let [3]=='a'){printf("dato no valido"); if(let [3]=='a'&& let [4]=='a'){printf("dato no valido"); if(let [4]=='a'&& let [5]=='a'){printf("dato no valido"); } }
|
|
|
En línea
|
|
|
|
K-YreX
|
Existirán muchas formas de hacerlo y según los conocimientos que tengas y lo eficiente que lo quieras hacer tendrás unas alternativas a mano u otras. Por ejemplo el bloque de la 26 a la 36 me parece muy ineficiente además de limitado a un número determinado de caracteres. Te doy una idea sencilla que no requiere manejarse en el interior de un fichero y tú verás si eres capaz de implementarlo o usarlo para crear tu propia idea (cuando escribes dos 'a' seguidas no sé si deben guardarse ambas en el fichero o sólo la primera, para estos ejemplos supongo que sólo la primera): char anterior != 'a', actual pedir dato -> actual si anterior != 'a' || actual != 'a' anterior = actual guardar anterior en fichero sino fin del programa
Si tienes alguna duda para implementar este algoritmo ya me dirás. Suerte
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
La presente solución necesitará que pulses INTRO cada vez que introduzcas un párrafo pues, por defecto, los terminales no evalúan a cada pulsación de tecla. Este efecto depende del terminal y se deben programar de diferente forma según cuál sea. Por lo demás hace lo que dices. #include <stdio.h> int main() { char car_anterior = '\0'; char car_actual; FILE *fp; char *ruta = "C:\\Users\\adria\\Downloads\\hola2.txt"; while(!(car_anterior == 'a' && car_anterior == car_actual)) { car_anterior = car_actual; } fseek(fp , -1, SEEK_END ); // Esto es para borrar la 'a' que se queda fputc('\0', fp ); // colgando al final del archivo. puts("\n*** FIN DE LA ENTRADA DE DATOS"); }
|
|
« Última modificación: 28 Enero 2019, 22:24 pm por MAFUS »
|
En línea
|
|
|
|
adriana13
Desconectado
Mensajes: 14
|
Existirán muchas formas de hacerlo y según los conocimientos que tengas y lo eficiente que lo quieras hacer tendrás unas alternativas a mano u otras. Por ejemplo el bloque de la 26 a la 36 me parece muy ineficiente además de limitado a un número determinado de caracteres. Te doy una idea sencilla que no requiere manejarse en el interior de un fichero y tú verás si eres capaz de implementarlo o usarlo para crear tu propia idea (cuando escribes dos 'a' seguidas no sé si deben guardarse ambas en el fichero o sólo la primera, para estos ejemplos supongo que sólo la primera): char anterior != 'a', actual pedir dato -> actual si anterior != 'a' || actual != 'a' anterior = actual guardar anterior en fichero sino fin del programa
Si tienes alguna duda para implementar este algoritmo ya me dirás. Suerte ESto era justamente lo que queria hacer!! Estoy recien aprendiendo por eso lo desastroso de mis codigos jjja pero muchas gracias!!!
|
|
|
En línea
|
|
|
|
adriana13
Desconectado
Mensajes: 14
|
La presente solución necesitará que pulses INTRO cada vez que introduzcas un párrafo pues, por defecto, los terminales no evalúan a cada pulsación de tecla. Este efecto depende del terminal y se deben programar de diferente forma según cuál sea. Por lo demás hace lo que dices. #include <stdio.h> int main() { char car_anterior = '\0'; char car_actual; FILE *fp; char *ruta = "C:\\Users\\adria\\Downloads\\hola2.txt"; while(!(car_anterior == 'a' && car_anterior == car_actual)) { car_anterior = car_actual; } fseek(fp , -1, SEEK_END ); // Esto es para borrar la 'a' que se queda fputc('\0', fp ); // colgando al final del archivo. puts("\n*** FIN DE LA ENTRADA DE DATOS"); }
Muchas gracias! queria hacer algo asi utilizando anterior , actual pero no sabia cómo!! recien estoy aprendiendo ...
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Enviar emails (algun método alternativo al SMTP?)
Programación Visual Basic
|
nhaalclkiemr
|
0
|
1,119
|
5 Octubre 2007, 17:27 pm
por nhaalclkiemr
|
|
|
Algun metodo alternativo a SendKeys?
Programación Visual Basic
|
demoniox12
|
1
|
1,457
|
11 Febrero 2008, 20:56 pm
por ~~
|
|
|
Algun gestor de BD alternativo a MSSQL
Bases de Datos
|
_CrisiS_
|
5
|
3,905
|
31 Octubre 2011, 12:29 pm
por Novlucker
|
|
|
Algun programa alternativo al restaurar sistema de windows?
Software
|
aguilaferoz
|
1
|
2,207
|
30 Octubre 2012, 06:21 am
por 4971231
|
|
|
buenas hice este codigo para ordenar alfaveticamente esta bien
Programación C/C++
|
eduardo17445
|
3
|
2,407
|
26 Junio 2015, 22:35 pm
por engel lex
|
|