Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - andie13

#21
A ver, en realidad es un ejercicio de clase, y especificando, lo que hay que hacer es abrir un fichero con N numero reales e imprimir en otro esos numeros reales divididos entre N.
Como sé que no se hacen tareas en el foro, mi duda solo abarca la parte que me permita determinar cuantos numeros tiene el fichero, porque siempre me da mal.

El codigo completo es el siguiente:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

float numeros(float n[]){
    int i,a=0;
    float resultado;
    for(i=0;n[i]!='\0';i++){
        a=n[i];
        resultado=a;
    }
    return(resultado);
}

int main(int argc, char** argv){
    FILE *fp;
    int i=0,cont=0,a,b,tam;
    float vector[200];
   
    fp=fopen("entrada8.txt","r");
   
    if(fp==NULL){
        printf("ERROR.\n");
        exit(1);
    }
    else{
        printf("El contenido del archivo es:\n");
        while (feof(fp) == 0){ // o bien (!feof(fp))   
           
            fgets(vector,200,fp);     
            puts(vector);
        }
    }
   
    FILE *fp1;
    fp1=fopen("salida8.txt","w"); 
        if(fp1==NULL){
     
        printf("ERROR.\n");
        exit(1);
    }
    while(vector[i]!='\0'){
        if(vector[i]!=' '){
            cont++;
        }
        i++;
    }

    fprintf(fp1,"numero %d",cont);
    a=numeros(vector);
    fprintf(fp1,"\nO archivo tiene %f",a/cont);
   
   
   
    fclose(fp);
    fclose(fp1);
}
   
   

#22
Hola, me gustaría saber cómo determino la cantidad de numeros que tiene un archivo de texto. Ejemplo: 2 3 14 67 12, "5".
#23
Programación C/C++ / Contar palabras en C
12 Noviembre 2016, 13:54 PM
SOLUCIONADO.
#24
Programación C/C++ / Re: Estructuras en C (ISBN)
11 Noviembre 2016, 01:04 AM
Voy a probar. Muchas gracias por contestar.
#25
Si no me equivoco las variables int solo captan hasta un máximo de 2.147.483.647 numeros en 32 bits.
He probado y cuando pones un numero infimamente menos que ese máximo, el programa funciona.
Escribe un numero: 2146662132
El numero es apocaliptico

Es a partir de ahí cuando empieza a fallar.
Escribe un numero: 2147666548
El numero no es apocaliptico

Prueba cambiando la variable int por otra que soporte mayor cantidad de caracteres, como float.
#26
¡Hola!
El problema planteado es el siguiente: leer un texto de un archivo y traducirlo a morse. Esa traducción debe guardarse en un archivo nuevo.

Mi problema es que no sé como hacer para que el texto ya traducido se imprima en el archivo. Tal y como está, permite escribir un texto cualquiera que determines de antemano, pero no el resultado de la función.

Y, ya que estamos, me gustaría saber por qué el bucle no traduce bien. Está bien hecho porque la función independiente funciona, pero en ese programa, no.

Muchas gracias de antemano.


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

int cifrarmorse (char frase);

int main(int argc, char** argv){
   FILE *fichero,*fichero2;
   int i=0,a,b,vector[100];
   
     fichero=fopen("entrada7.txt","r");
   
   if(fichero==NULL){
        printf("Error.\n");
       exit(1);
   }
   else{
       printf("El contenido del archivo es:\n\t");
       while (feof(fichero) == 0){
           fgets(vector,100,fichero);    
           puts(vector);
       }
   }

   fclose(fichero);
   
   a=strlen(vector);
   for (i=0; i<a; i++){
       cifrarmorse(vector[i]);
       b=cifrarmorse(vector[i]);
   }
   printf("\n");
   
   fichero2=fopen("salida7","w+");
   if(fichero2==NULL){
       printf("Error.\n");
       exit(1);  
   }
   fprintf(fichero2,"IMPRIME LO QUE ESCRIBA AQUI");
   /*fprintf(FILE *salida7, char *w){*/
   fclose(fichero2);
   return 0;
}

int cifrarmorse (char frase){
   switch (frase){
       case 'a':
       case 'A': printf("·- ");
           break;
       case 'b':
       case 'B': printf("-··· ");
           break;
       case 'c':
       case 'C': printf("-·-· ");
           break;
       case 'd':
       case 'D': printf("-·· ");
           break;
       case 'e':
       case 'E': printf("· ");
           break;
       case 'f':
       case 'F': printf("··-· ");
           break;
       case 'g':
       case 'G': printf("--· ");
           break;
       case 'h':
       case 'H': printf("···· ");
           break;
       case 'i':
       case 'I': printf("·· ");
           break;
       case 'j':
       case 'J': printf("·--- ");
           break;
       case 'k':
       case 'K': printf("-·- ");
           break;
       case 'l':
       case 'L': printf("·-·· ");
           break;
       case 'm':
       case 'M': printf("-- ");
           break;
       case 'n':
       case 'N': printf("-· ");
           break;
       case 'o':
       case 'O': printf("--- ");
           break;
       case 'p':
       case 'P': printf("·--· ");
           break;
       case 'q':
       case 'Q': printf("--·- ");
           break;
       case 'r':
       case 'R': printf("·-· ");
           break;
       case 's':
       case 'S': printf("··· ");
           break;
       case 't':
       case 'T': printf("- ");
           break;
       case 'u':
       case 'U': printf("··- ");
           break;
       case 'v':
       case 'V': printf("···- ");
           break;
       case 'w':
       case 'W': printf("·-- ");
           break;
       case 'x':
       case 'X': printf("-··- ");
           break;
       case 'y':
       case 'Y': printf("-·-- ");
           break;
       case 'z':
       case 'Z': printf("--·· ");
           break;
       case '0': printf("----- ");
           break;
       case '1': printf("·---- ");
           break;
       case '2': printf("··--- ");
           break;
       case '3': printf("···-- ");
           break;
       case '4': printf("····- ");
           break;
       case '5': printf("····· ");
           break;
       case '6': printf("-···· ");
           break;
       case '7': printf("--··· ");
           break;
       case '8': printf("---·· ");
           break;
       case '9': printf("----· ");
           break;
       case '.': printf("·-·-·- ");
           break;
       case ',': printf("--··-- ");
           break;
       case '?': printf("··--·· ");
           break;
       case '"': printf("·-··-· ");
           break;
       case ' ': printf("   ");
           break;
   }        
}
#27
Programación C/C++ / Estructuras en C (ISBN)
9 Noviembre 2016, 00:55 AM
¡Hola!
Estoy intentando hacer un programa que calcule digito de control de un codigo ISBN introducido por el usuario, a través de 3 campos diferenciados, utilizando estructuras. Para calcular el digito de control hay que ir multiplicando cada cifra por su posición, y al final hallar el resultado de la suma módulo 11. Si el digito es 10, se pone X.

Lo que no entiendo es:
a) En el programa está indicado la longitud del vector introducido para hacer los cálculos, pero quiero hacerlo de modo genérico, el caso es que no sé como indicarlo.
b) No controlo bien las estructuras y el hecho de convertirlas de char a int etc.


He conseguido escribir el código casi totalmente, con la excepción de la función main, que soy consciente de que no está bien.

¡Muchas gracias!


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
   
struct ISBN{
   char camp1[6];          /*Grupo*/
   char camp2[8];          /*Editor*/
   char camp3[8];          /*Titulo*/
   int control;        /*Digito de control*/
};

struct ISBN controlisbn(char c1[], char c2[], char c3[]){
   int control=0,i=0;
   struct ISBN a;
   for (i=0; i<1; i++){
       a.camp1[i]=c1[i];
   }
   for (i=0; i<5; i++){
       a.camp2[i]=c2[i];
   }
   for (i=0; i<9; i++){
       a.camp3[i]=c3[i];
   }
   for (i=0; i<1; i++){
       control+=c1[i]*(i+1);
   }
   for (i=0; i<5; i++){
       control+=c2[i]*(i+3);
       }
   for (i=0; i<9; i++){
       control+=c3[i]*(i+8);
   }
   
   a.control=control%11;
   return(a);
};
void main(){
   int a,b,c;
   struct ISBN libro;
   int x;
   
   printf("Intruduzca primer campo del ISBN: ");
   gets(a);
   printf("Intruduzca segundo campo del ISBN: ");
   gets(b);
   printf("Intruduzca tercer campo del ISBN: ");
   gets(c);
   
   strcpy(a,libro.camp1);
   strcpy(b,libro.camp2);
   strcpy(c,libro.camp3);

       
   x=controlisbn;
   if (x==10){
       printf("\nCaracter de control es X");
   }
   else{
       printf("\nCaracter de control es %d", x);
   }
}

//Ejemplo: 1-2345-6789----7
#28
Muchas gracias a todos por responder  :D.
Aún estoy empezando a programar y me cuesta un poquito pulir los conceptos. He seguido vuestros consejos y funcionan todos correctamente, así que muchísimas gracias por vuestro tiempo.

¡Hasta otra!
#29
Programación C/C++ / Morse - ¿donde está mal?
7 Noviembre 2016, 01:16 AM
Hola, estaba intentando crear un programa sencillito para traducir un texto a morse. El caso es que no sé que está mal. El código es el siguiente:
(Por curiosidad, ¿cómo podría conseguir realizar el mismo algorirmo sin la biblitoecastring.h)

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

void cifrarmorse (char frase[], int a){    
   char letra;
   
   switch (letra){
       case 'a':
       case 'A': printf("·- ");
           break;
       case 'b':
       case 'B': printf("-··· ");
           break;
       case 'c':
       case 'C': printf("-·-·" );
           break;
       case 'd':
       case 'D': printf("-·· ");
           break;
       case 'e':
       case 'E': printf("· ");
           break;
       case 'f':
       case 'F': printf("··-· ");
           break;
       case 'g':
       case 'G': printf("--· ");
           break;
       case 'h':
       case 'H': printf("···· ");
           break;
       case 'i':
       case 'I': printf("·· ");
           break;
       case 'j':
       case 'J': printf("·--- ");
           break;
       case 'k':
       case 'K': printf("-·- ");
           break;
       case 'l':
       case 'L': printf("·-·· ");
           break;
       case 'm':
       case 'M': printf("-- ");
           break;
       case 'n':
       case 'N': printf("-· ");
           break;
       case 'o':
       case 'O': printf("--- ");
           break;
       case 'p':
       case 'P': printf("·--· ");
           break;
       case 'q':
       case 'Q': printf("--·- ");
           break;
       case 'r':
       case 'R': printf("·-· ");
           break;
       case 's':
       case 'S': printf("··· ");
           break;
       case 't':
       case 'T': printf("- ");
           break;
       case 'u':
       case 'U': printf("··- ");
           break;
       case 'v':
       case 'V': printf("···- ");
           break;
       case 'w':
       case 'W': printf("·-- ");
           break;
       case 'x':
       case 'X': printf("-··- ");
           break;
       case 'y':
       case 'Y': printf("-·-- ");
           break;
       case 'z':
       case 'Z': printf("--·· ");
           break;
       case '0': printf("----- ");
           break;
       case '1': printf("·---- ");
           break;
       case '2': printf("··--- ");
           break;
       case '3': printf("···-- ");
           break;
       case '4': printf("····- ");
           break;
       case '5': printf("····· ");
           break;
       case '6': printf("-···· ");
           break;
       case '7': printf("--··· ");
           break;
       case '8': printf("---·· ");
           break;
       case '9': printf("----· ");
           break;
       case '.': printf("·-·-·- ");
           break;
       case ',': printf("--··-- ");
           break;
       case '?': printf("··--·· ");
           break;
       case '"': printf("·-··-· ");
           break;
       case ' ': printf("   ");
           break;
   }        
}

int main(int argc, char** argv){
   int a;
   char frase[95];
   printf("Introduzca una frase:\n");
   gets(frase);
   a=strlen(frase);
   cifrarmorse(frase,a);
   
   return 0;
}