elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: algun metodo alternativo al codigo que hice?? en: 28 Enero 2019, 22:33 pm
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.

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    char car_anterior = '\0';
  5.    char car_actual;
  6.    FILE *fp;
  7.    char *ruta = "C:\\Users\\adria\\Downloads\\hola2.txt";
  8.  
  9.    fp = fopen(ruta, "w");
  10.  
  11.    car_actual = getchar();
  12.    while(!(car_anterior == 'a' && car_anterior == car_actual)) {
  13.        fputc(car_actual, fp);
  14.        car_anterior = car_actual;
  15.        car_actual = getchar();
  16.    }
  17.  
  18.    fseek(fp, -1, SEEK_END); // Esto es para borrar la 'a' que se queda
  19.    fputc('\0', fp);           // colgando al final del archivo.
  20.    puts("\n*** FIN DE LA ENTRADA DE DATOS");
  21.  
  22.    fclose(fp);
  23. }



Muchas gracias! queria hacer algo asi utilizando anterior , actual pero no sabia cómo!! recien estoy aprendiendo ...
2  Programación / Programación C/C++ / Re: algun metodo alternativo al codigo que hice?? en: 28 Enero 2019, 22:29 pm
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):
Código:
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 :-X




ESto era justamente lo que queria hacer!! Estoy recien aprendiendo por eso lo desastroso de mis codigos jjja pero muchas gracias!!!
3  Programación / Programación C/C++ / algun metodo alternativo al codigo que hice?? en: 28 Enero 2019, 21:28 pm
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>
Código
  1. #include<stdlib.h>
  2. FILE *fd;
  3. void leer_letras ();
  4.  
  5. int main(){
  6.  
  7.  
  8. leer_letras();
  9.  
  10. return 0;}
  11.  
  12. void leer_letras (){
  13. int i; char let[5];
  14. FILE *fd;
  15. char direccion[]="C:\\Users\\adria\\Downloads\\hola2.txt";
  16. fd= fopen(direccion, "w");
  17. if (fd==NULL){
  18.    printf("error");
  19.    }
  20.    for (i=0; i<5; i++){
  21. printf("\ningrese una letra: ");
  22. scanf("%c",&let[i]);
  23. fflush (stdin);
  24. fprintf(fd, "%c", let[i]);
  25.  
  26. if(let[0]=='a'&&let[1]=='a'){printf("dato no valido");
  27. exit(-1);}
  28. if(let[1]=='a'&& let[2]=='a'){printf("dato no valido");
  29. exit(-1);}
  30. if(let[2]=='a'&& let[3]=='a'){printf("dato no valido");
  31. exit(-1);}
  32. if(let[3]=='a'&& let[4]=='a'){printf("dato no valido");
  33. exit(-1);}
  34. if(let[4]=='a'&& let[5]=='a'){printf("dato no valido");
  35. exit(-1);}
  36.   }
  37.  
  38. fclose(fd);
  39.  
  40. }
  41.  
  42.  
4  Programación / Programación C/C++ / Ayuda no entiendo donde esta el error en: 8 Enero 2019, 21:06 pm
Hola necesito ayuda con este codigo, no se donde esta el error , no me genera el archivo....

//: Generar un subprograma que permita leer de teclado letras e incorporarlos a un archivo.//
//La lectura se realiza hasta que se ingresan dos letras ‘a’ seguidas. //

Código
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. int leer_letras (int letra[]);
  4.  
  5. int main(){
  6. int let[5], i;
  7. for (i=0; i<5; i++){
  8. printf("\ningrese una letra: ");
  9. scanf("%d", &let[i]);
  10. fflush (stdin);}
  11.  
  12.  
  13. int leer_letras(int let[]);
  14.  
  15.  
  16. return 0;}
  17.  
  18. int leer_letras (int letra[]){
  19. int i;
  20. FILE *fd;
  21. fd= fopen("C:\\Users\\adria\\Downloads\\hola.txt", "wt");
  22. if (fd==NULL){
  23.    printf("error");
  24.    return 1;}
  25.  
  26.    int anterior, siguiente;
  27.    letra[0]=anterior;
  28.    siguiente= letra[1];
  29.  
  30.  
  31.    if (siguiente=="a" && anterior=="a"){
  32.        return 1;
  33.    }
  34.    else {
  35.    fputc(letra[i], fd);
  36.            }
  37.  
  38. fclose(fd);
  39. return 0;
  40.  
  41. }

MOD: Etiqueta GeSHi.
5  Programación / Programación C/C++ / Re: ayuda con subprograma que calcule promedio de vector en: 16 Noviembre 2018, 20:06 pm
el codigo completo es este: con las modificaciones tal cual me indicaste

/*Generar un subprograma que permita, dado un vector de 5400 posiciones,
 obtener el promedio de los elementos del vector. Los valores del vector son enteros, y el resultado real.*/
 
 
  #include<stdlib.h>
 #include <stdio.h>
 #include<time.h>
 const int TAM= 5400;
 float promedio_V(int vector[], int tamx );

 int main(){
    int vector[TAM];
    int i;
     srand(time(0));
    
    for(int i=0; i<5400; i++){
       
       vector = 1+ rand() % 100;
       printf("\n%i", vector);
    }
    
 
    printf ("\nel promedio del vector es %.2f", promedio_V(vector,TAM));
    return 0;}
    
   float promedio_V(int vector[], int tamx) {
   int i;
   float suma=0;
   
   for ( int i=0; i<tamx; i++){
      
      suma += vector;
      return suma/tamx;}
   }
      
   
   
6  Programación / Programación C/C++ / Re: ayuda con subprograma que calcule promedio de vector en: 15 Noviembre 2018, 18:14 pm
Varias cosas a tener en cuenta. Aunque en este programa al ser sencillo no afectan al funcionamiento:
 
Hay que limitar el uso de variables globales, ya que estas se pueden alterar desde cualquier parte del programa. Por eso es mejor declarar como global y constante el tamaño del vector pero el vector es mejor declararlo dentro del main (date cuenta de que si el vector es global no es necesario pasarlo como parámetro de la función ya que se puede usar directamente).

Si declaramos una constante <TAM> para el tamaño del vector, usar esa constante en la declaración del vector. Así si queremos cambiar el tamaño del vector sólo tendríamos que cambiarlo en el valor de <TAM> y el programa ya estaría modificado.

En el prototipo de la función es cierto que no hace falta indicar el nombre de las variables, solo su tipo. Pero ya que está el nombre del vector, quedaría mejor poner el nombre del segundo parámetro (el tamaño en este caso). Recalcar que al ser variables globales no sería necesario pasarlas como parámetros ya que ya existen en todo el programa. Nótese también que en el main se utiliza la variable <TAM> que es global mientras que en el cuerpo de la función se utiliza <tam> ya que es el nombre con el que nos referimos al segundo parámetro. Podría eliminarse ese segundo parámetro y usar <TAM> dentro de la función también.

En el main hay dos bucles: uno para rellenar el vector y otro para mostrar cada elemento. Esto se puede hacer en un solo bucle para ahorrar tiempo y no tener que recorrer el bucle completo dos veces.
Además de eso se especifica que el resultado es real, por lo que la función debe devolver un float o un double, no un int.

Puedes probar a cambiar algunas de las cosas que he comentado arriba para entender su funcionamiento y si tienes alguna duda no dudes en preguntar.
El código final quedaría algo por el estilo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. const int TAM = 5400;
  6.  
  7. float promedio_V(int vector[], int tam);
  8.  
  9. int main(){
  10. int vector[TAM];
  11.  
  12. srand(time(0));
  13.  
  14. for(int i = 0; i < TAM; i++){
  15. vector[i] = 1 + rand() % 100;
  16. printf("%d\n", vector[i]);
  17. }
  18.  
  19. printf("El promedio del vector es %.2f\n", promedio_V(vector, TAM));
  20.  
  21. return 0;
  22. }
  23.  
  24. float promedio_V(int vector[], int tam){
  25. float suma = 0;
  26.  
  27. for(int i = 0; i < tam; i++)
  28. suma += vector[i];
  29.  
  30. return suma/tam;
  31. }
  32.  


Hola!! hice las modificaciones que me sugeriste, el tema es que sigue sin dar el resultado, compila pero siempre me da como resultado 0.00
7  Programación / Programación C/C++ / Re: ayuda con subprograma que calcule promedio de vector en: 15 Noviembre 2018, 17:40 pm
muchas gracias chicos voy a probar modificar el codigo con sus sugerencias!!
8  Programación / Programación C/C++ / ayuda con subprograma que calcule promedio de vector en: 12 Noviembre 2018, 23:26 pm
Hola necesito ayuda con este ejercicio, me da como resultado 0, no le encuentro el error al codigo


/*Generar un subprograma que permita, dado un vector de 5400 posiciones,
 obtener el promedio de los elementos del vector. Los valores del vector son enteros, y el resultado real.*/
 
 
  #include<stdlib.h>
 #include <stdio.h>
 #include<time.h>
 
 int promedio_V(int vector[], int );
 int vector[5400], i; const int tam= 5400;
 int main(){
    
    
     srand(time(0));
    
    for(i=0; i<5400; i++){
       
       vector= 1+ rand() % 100;
       
    }
       for (i=0;i<5400; i++){
    printf("\n%i", vector);}
 
 
    printf ("el promedio del vector es %.2f", promedio_V(vector,tam));
    return 0;}
    
int promedio_V(int vector[], int tam) {
   float suma=0;
   
   for (i=0; i<tam; i++){
      
      suma=(suma+ vector[tam])/5400;
      
   }
      
   return suma ;
   
}
9  Programación / Programación C/C++ / Re: suma de los elementos mayores a 100 en un array c/Recursividad en: 20 Octubre 2018, 21:40 pm
int suma(int vector[], int i)
{
   if(i==-1)//<<--Es el caso base que indica que el vector esta vacio y ya no tiene que volver a llamar a la funcion recursiva y empezar a retornar todos los valores obtenidos en cada llamada recursiva
      return 0;
    else{
       if(vector>100){
          return vector+suma(vector,i-1);
       }
       else{
          return suma(vector,i-1);
      }
   }
 }


gracias!!! entendi perfecto
10  Programación / Programación C/C++ / Re: suma de los elementos mayores a 100 en un array c/Recursividad en: 20 Octubre 2018, 21:17 pm
Código
  1. #include<stdlib.h>
  2. #include <stdio.h>
  3. #include<time.h>
  4.  
  5. int suma(int vector[], int i);
  6.  
  7. int main()
  8. {
  9. int vector[20], i=0;    
  10. srand(time(0));
  11.    for(i=0; i<20; i++){
  12.       vector[i]= 1+ rand() % 300;
  13.    }
  14.    for(i=0;i<20; i++){
  15.     printf("\n%i", vector[i]);
  16. }
  17.    printf("\nEl resultado de la suma es: %i", suma(vector, i));
  18. return 0;  
  19. }
  20.  
  21. int suma(int vector[], int i)
  22. {
  23. if(i==-1)
  24. return 0;
  25. else{
  26. if(vector[i]>100){
  27. return vector[i]+suma(vector,i-1);
  28. }
  29. else{
  30. return suma(vector,i-1);
  31. }
  32. }
  33. }



Gracias!! anduvo perfecto pero me podrias explicar por qué se pone en el caso base  if i== -1?? eso no lo entiendo y despues al final por que se pone un else antes del return suma. gracias!!
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines