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 - durasno

#281
Hola! es como dice satu si vas a usar un char pone 's'.. Ademas despues de actualizar ese dato, antes de volver a escribir en el archivo tenes q volver  a posicionar el cursor, sino estarias guardando mal
FILE *archivo;
struct personas persona;

archivo=fopen("personas.txt", "rb+");

fseek(archivo, sizeof(struct personas)*(buscarpersona(archivo, codigo)-1), 0);
//La funcion buscar persona me devuelve el registro buscado, resto uno para posicionarme y despues "borrar"
fread(&persona, sizeof(struct personas), 1, archivo);

strcpy(persona.borrado, "s");

fseek(archivo, sizeof(struct personas)*(buscarpersona(archivo, codigo)-1), 0);  /* vuelvo a posicionar el cursor correctamente */

fwrite(&persona, sizeof(struct personas), 1, archivo); // despues guardo
fclose(archivo);


Para no llamar a la funcion buscapersona() dos veces te conviene almacenar en una variable lo q retorna, y usar ese dato en los fseek

Saludos
#282
para lo que queres hacer podrias usar un bucle, en este caso qda mas lindo el do-while :), ej:

do {
// aca va todo el codigo
........
printf("\nPresiona 2 para Salir o 5 para volver a Comenzar: ");
scanf("%f", &x);
} while(x==5); // si x es 5 se vuelve al principio

De todas formas esto lo vas a aprender con el tiempo

Ahora viendo mejor el codigo creo q tenes problemas aca
printf("\nNumeros a usar: ");
scanf("%d", %nu);
numeros:
if (nu<acum); // este ; no va
{
printf("\n\nNúmero: ");
scanf("%f", &s);
acum=acum+1 // falta ;
}

Te falta un ";" y en el if ese ";" esta mal, ademas solo pedis el ingreso de un numero, solo ingresas un numero en la variable "s" pero a "r" cuando le ingresas un numero. Lo q no entiendo es q qres hacer con nu<acum

Si el tuto/manual de donde estas aprendiendo a programar tiene mas d un ejemplo con goto yo q vos lo cambiaria xq debe ser muy malo :P
#283
Hola! podrias subir el codigo sin usar goto?? no es de buena programacion usarlo.. lo q vi a simple vista es scanf("%d", %nu); debe ser &nu y usa %f si nu es un float

Saludos
#284
Parece no haber problema con eso, pone como imprimis
#285
Hola! pone el codigo q estas haciendo, no podemos decirt q esta mal sino mostras nada, y aclara como esta formado tu fichero


Saludos
#286
mmm intentaste por lo menos leer algun tutorial/manual??? sirve de mucho hacerlo ;)
#287
Hola! nombre tiene q ser un arreglo, y como ya te dijeron el & en los printf esta demas. Ademas la variable l esta mal declarada, el tipo de dato no es llena es struct llena (es un tipo de dato "compuesto")
#include<stdio.h>
#include<conio.h>
#include<iostream>

using namespace std;

struct llena{
int edad;
char nombre[20]; // declaro nombre como un arreglo
};

int main(){
struct llena l; // tipo de dato struct llena
printf("Digite el nombre de la persona: "); scanf("%s",l.nombre);
printf("Digite la edad de la persona: "); scanf("%d", &l.edad);
printf("El nombre es: %s",l.nombre);
printf("la edad es: %d",l.edad);
getch();
return(0);
}



Saludos
#288
Hola! primero q nada antes d subir un programa revisa mejor el codigo, mas q nada para evitar los errores de sintaxis q tenes(ya q me trajo varios problemas :S) . En
for(i=cuanto-1;1>=0;i--);
el ; esta mal y pusiste 1>=0
Despues en la funcion conv_ent
for(i=0;num>0;i++);
tambien tenes mal puesto el ;

Ahora el programa... no sabia q se podia pasar cualquier numero fraccionario a cualquier base, solo me acordaba q se podia en binario. En fin, no mire el codigo q hiciste para la funcion conv_frac() ( parecia dificil de analizar :P ), asi q decidi hacer la mia basado en este video
http://www.youtube.com/watch?v=x9x3kMf_4Ho

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void conv_ent(int *p,int num, int base);
void conv_frac(int *p,double num,int base,int pre);
int main(){
   double x,pfrac,pentera,cuantos;
   int parte_ent,*digitos[2],cuanto=0,precision,base,i;
   
   
   printf("Introduzca un numero real\n");
   scanf("%lf",&x);
   pfrac=modf(x,&pentera);

   printf("Introduzca la base a la que quiere convertir el numero\n");
   scanf("%d",&base);

   printf("Diga cuantos digitos se calcularan para la parte fraccionaria\n");
   scanf("%d",&precision);

   cuantos=ceil(log(pentera)/log(base));
   cuanto=(int)cuantos;
   parte_ent=(int)pentera;
   digitos[0]=(int*)malloc(sizeof(int)*cuanto);

   conv_ent(digitos[0],parte_ent,base);

   digitos[1]=(int*)malloc(sizeof(int)*precision);
   conv_frac(digitos[1],pfrac,base,precision);


   printf("La representacion en base %d del numero %lf es: ",base,x);
   for(i=cuanto-1;i>=0;i--)
       printf("%d",digitos[0][i]);
    printf("."); /* este printf debe ir fuera del for anterior */
   
   for(i=0;i<precision;i++)
       printf("%i",digitos[1][i]);
                            printf("\n\n");
                           
  system("pause");
  return 0;
}
void conv_ent(int p[],int num,int base){
   int i;
   for(i=0;num>0;i++){
       p[i]=num%base;
       num/=base;
   }
}
void conv_frac(int *p,double num,int base,int pre){
    int i,k;
    double h=0.0;
    double pent,pfrac;
    /*for(i=1;i<=pre;i++){
                        for(k=0;k<base;k++){
                                            if(num>h+(k/pow(base),i)))&& num<=(h(k+1)/pow(base,i)){
                                                                       p[i-1]=k;
                                                                       h+=(k/pow(base,i));
                                                                       break;
                                                                       }
                                                                       }
                                                       }*/
  for(i=0;i<pre;i++) {
    num=num*base; /* multiplico x la base */
    num=modf(num,&pent); /* despues d ser multiplicado obtengo la parte entera y fraccionaria */
    p[i]=(int)pent; /* guardo en el arreglo la parte entera */
    if(num==0.0)
      break; /* si llega aca es xq la parte fraccionaria se hizo cero por lo tanto hay q salir del bucle */
  }
}

Acordate q solo lo hic pensando en pasarlo a binario, fijate si sirve para cualquier base

Saludos
#289
Hola! la funcion fwrite lo q hace es guardar en un archivo bloques de datos, como listas, podes guardar cualquier cosa pero generalmente se usar para guardar bloques. En el archivo no se ve xq no se guarda con formato, para eso tenes que usar la familia de printf. Se suele utilizar con archivos binarios

Saludos
#290
Hola! lo mas probable es q si sea por el compilador. De echo he visto a varios que crean un bucle parecido(pero no con el proposito q vos qres) y se ejecuta perfectamente. De todas formas deberias postear esto en la parte de hack, algo asi, q tiene esta misma pagina para q te ayuden mejor

Saludos