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

#1
justamente ahi esta el problema lo que pasa que vec no tiene valores asignados por lo tanto cuando vos haces " if (vec[x]==vimpar[x]) " estas comparando el contenido de vec
  • que no es nada es basura porque jamas se le asigno nada con el contenido de vimpar
  • que si se lo havias asignado
#2
no entiendo mucho lo que estas haciendo
        for(y=0,i=0,x=0;x<10;x++)
        {
            if (vec[x]==vimpar[x])// vec no tiene otra cosa que basura para que comparar??
            {
                vec[i++]=vimpar[x];

            }
            else
            {
                vec[i++]=vpar[x];

            }

         }


#3
Programación C/C++ / Re: Error con vectores!
23 Mayo 2011, 00:02 AM
bueno te posteo el codigo corregido esto  anda 10 puntos



#include <stdio.h>
#include <stdlib.h>
int main()
{
   int vec[10],vpar[5],vimpar[5];
   int n1,j,i,k, cont=0;

   //---------CARGA DEL VECTOR------------- //  
        for(j=0;j<10;j++)
       {
          printf("Ingrese vector:");
          scanf("%i",&n1);
          vec[j]=n1;

        }
   //---------EVALUA CONTENIDO DEL VECTOR------------- //          

       for(j=0, i=0, k=0;j<10;j++)
       {
           if((vec[j]%2)==0)
              {
                vpar[k++]= vec[j];          
              }
           else
           {vimpar[i++]= vec[j];}
        }

   //---------IMPRIME DATOS DEL VECTOR------------- //          
        printf("Los pares son:\n");
        for(j=0;j<5;j++)
        {
          printf(" %i ||",vpar[j]);
        }
         printf("\n");
         printf("Los impares son:\n");          
         for(i=0;i<5;i++)
        {
          printf(" %i ||",vimpar[i]);
         
        }
       
        scanf("%d",&n1);
        printf("\n");
   return 0;
}



el problema principal era en esta parte



for(j=1;j<11;j++) //el for que ya lo havias corrgido
       {
           if((j%2)==0) /* dividis por 2 a la variable cuando enverdad deberias   dividir el contenido del vector ej: vec[i]   */
              {
                vpar[j]= vec[j];      /* vpar tiene menos elementos que vec por lo tanto se produce un error de desbordamiento nesesitas una variable aparte que corra tanto vpar como vimpar  */    
              }
           else
           {vimpar[j]= vec[j];}






#4
haciendo simplemente ptr++ pasarias a la siguiente posición pero no seria "0x57743"  sino que 0x57746 ya que como ptr es un puntero a int acupa 4 byte
por lo tanto iria de 4 en 4 , si lo harias con char iria de 0x57742 a 0x57743


Saludos      
#5
el prototipo de la función es este: void data_new_write(st_p, char *, int *);

pero cuando  definís su contenido pones esto:  void data_write(st_p P, char *path, int *error)


es lo mismo que pongas en el prototipo: void M (st_p, char *, int *)

y después pongas: void hola (st_p P, char *path, int *error){



es decir no son iguales, tienen que serlo...
saludos


#6
hola
si el archivo lo creas como binario cosa que recomiendo  podes hacerlo con un solo puntero a FILE me explico...


supongamos que el archivo ya esta creado y nosotros queremos imprimir todo su contenido con las funciones fread  y fseek se podria hacer..




    while (!feof(puntero_file))
{
fread(&variable_tipo_struct, sizeof(tipo_struct), 1, puntero_file)
printf ("%s",variable_tipo_struct.nombre);
printf ("%d",variable_tipo_struct.numero);
//etc...
}




donde el primer parametro de fread es la varialbe de tipo struct el seungo parametro es el tamaño de nuestro struct, el tercer elemento parametro es la cantidad, y el cuerto es el puntero a file
y si queres escribir en el fichero es = solo que antes llenas el struct con datos y despues usas la funcion fwrite de la misma menera que usas fread
solo que fwrite en vez de copiar los datos del archivo al struct copialos datos del struct al archivo


Saludos



#7
por las dudas que te hallas referido a fgets para tratamiento de archivo seria muy parecido a como lo plantea AckeR sol oque suplantas stdin por el puntero FILE ejemplo:




        fgets (buf,121,archivo); pasa a la siguiente linea y la copia en el buffer
while(!feof(archivo))
{

                puts(buff); //imprime lo que haya en el bufer 
            fgets (buf,121,archivo); // pasa a la siguiente linea y la copia en el buffer

}



otra manera podria ser.


         
while( fgets (buf,121,archivo))
{

                puts(buff); //imprime lo que haya en el bufer 
           
}




Salduos
#8
 ;-)  OK!! :D
mil gracias por aclararme las dudas..

Saludos Cordiales
#9
Hola a todos!!

bien recien haciendo unas pequeñas pruebas me di cuenta que en ciertas situaciones fgets con stdin... me ensucia el buffer mas especificamente cuando agrego mas caracteres de los que espera doy un ejemplo



#include <stdio.h>

int main(int argc, char **argv)
{
char cad[5];


fgets (cad, sizeof(cad), stdin); //si ingresamos "hola mundo"
puts (cad);                           // imprime "hola"
fgets (cad, sizeof(cad), stdin);// se lo saltea (buffer sucio)
puts (cad);                          // imprime "mun"


return 0;

}





obviamente se puede solucionar haciendo que cad sea mas "grande" como de 120 caracteres, pero quisiera saber alguna manera de no recurrir a eso sino. evitar que el buffer quede sucio....
nada de fflush

EDITADO:
Bueno recién probando encontré que haciendo esto funciona :


setbuf(stdin,NULL); 

 
aunque me vuele a que es algo parecido a fflush


espero respuestas, gracias!!!    



#10
seee.. lo podes hacer tanto así como directamente en el scanf




scanf ("%d" &f.numero);



o si nosotros pasamos por referencia el struct se haria



void ejemplo ( struct nom_del_struct *p )

scanf ("%d" &p->numero);



osea se utilaza  "->" en vez de de "."

saludos!!