error con orednamento de un arreglo en 2 ficheros(
Publicado por NicoKratos (6 intervenciones) el 25/04/2010 22:30:45
Estimados, tengo el siguiente problema.
el programa consiste en generar un arreglo de 10 numeros al azar x n filas, ( no es matriz)
la cosa es que se vayan generando 10 numeros random y el usuario ingresa n cantidad de filas o arreglos a generar.
en el archivo.txt se envian los numeros random.
y en el archivo otro.txt se ordenan y envian al archivo otro.txt
el problema es que en el archivo otro.txt se genera una linea de mas
copiando la linea anterior.
1. #include <stdio.h>
2. #include <stdlib.h>
3. main()
4. {
5. /*Declaracion de variables y archivos*/
6. int i, j, c=0,aux,cantFilas,arg[10];
7. FILE *Archivo1, *Archivo2;
8. char arg1[10],val,p;
9.
10.
11.
12. /*Pregunta la cantidad de n filas a producir, validando que solo inghresen enteros*/
13. do
14. {
15. setbuf(stdin, NULL);
16. printf("Ingrese numero de filas a generar: ");
17. }while(!p == scanf("%d",&cantFilas));
18.
19. /* ingreso de numeros random en arreglo de 10*/
20. Archivo1 = fopen("Archivo.txt","w")
21. while ( cantFilas > c )
22. {
23. for(i = 1; i <= 10; i++)
24. {
25. arg[ i ] = rand()%10
26. fprintf(Archivo1,"%d",arg[ i ])
27. }//Fin for
28. fprintf(Archivo1,"\n");
29. c++;
30. }//fin while
31. fclose(Archivo1);//cierro archivo1
32. /*fin ingreso de numero ramdon*/
33.
34. /*leer de archivo.txt los numeros random y, los oredenos y los mando al otro.txt*/
35. Archivo2 = fopen("Otro.txt","w");//Abro otro.txt
36. Archivo1 = fopen("Archivo.txt","r"); //Abro Archivo.txt
37. while (!feof(Archivo1))//Realiza un recorrido del archivo1
38. {
39.
40. fread(arg1,sizeof(char),11,Archivo1);
41. /*Ordenamiento de datos via metodo burbuja*/
42. for(j = 0; j <(10-1); j++)
43. {
44. for(i = j+1; i<10; i++)
45. {
46. if( arg1[ i ] < arg1[ j ])
47. {
48. aux = arg1[ i ];
49. arg1<i> = arg1[ j ];
50. arg1[ j ] = aux;
51. }//fin if que genera un ordenamiento
52. }//fin for i que genera un ordenamemiento
53. }//Fin for j que genera un ordenamiento
54. fwrite(arg1,sizeof(char),11,Archivo2);
55. }//fin while que busca el feof del archivo.txt
56.
57. fclose(Archivo1);//se cierra arch2
58. fclose(Archivo2);//se cierra arch1
59.
60. printf("Gracias, vuelva pronto.\n");
61. system("\n PAUSE");
62. }</i>
#include <stdio.h>
#include <stdlib.h>
main()
{
/*Declaracion de variables y archivos*/
int i, j, c=0,aux,cantFilas,arg[10];
FILE *Archivo1, *Archivo2;
char arg1[10],val,p;
/*Pregunta la cantidad de n filas a producir, validando que solo inghresen enteros*/
do
{
setbuf(stdin, NULL);
printf("Ingrese numero de filas a generar: ");
}while(!p == scanf("%d",&cantFilas));
/* ingreso de numeros random en arreglo de 10*/
Archivo1 = fopen("Archivo.txt","w")
while ( cantFilas > c )
{
for(i = 1; i <= 10; i++)
{
arg[ i ] = rand()%10
fprintf(Archivo1,"%d",arg[ i ])
}//Fin for
fprintf(Archivo1,"\n");
c++;
}//fin while
fclose(Archivo1);//cierro archivo1
/*fin ingreso de numero ramdon*/
/*leer de archivo.txt los numeros random y, los oredenos y los mando al otro.txt*/
Archivo2 = fopen("Otro.txt","w");//Abro otro.txt
Archivo1 = fopen("Archivo.txt","r"); //Abro Archivo.txt
while (!feof(Archivo1))//Realiza un recorrido del archivo1
{
fread(arg1,sizeof(char),11,Archivo1);
/*Ordenamiento de datos via metodo burbuja*/
for(j = 0; j <(10-1); j++)
{
for(i = j+1; i<10; i++)
{
if( arg1[ i ] < arg1[ j ])
{
aux = arg1[ i ];
arg1 = arg1[ j ];
arg1[ j ] = aux;
}//fin if que genera un ordenamiento
}//fin for i que genera un ordenamemiento
}//Fin for j que genera un ordenamiento
fwrite(arg1,sizeof(char),11,Archivo2);
}//fin while que busca el feof del archivo.txt
fclose(Archivo1);//se cierra arch2
fclose(Archivo2);//se cierra arch1
printf("Gracias, vuelva pronto.\n");
system("\n PAUSE");
}
eso ojala alguien me ayude.
el programa consiste en generar un arreglo de 10 numeros al azar x n filas, ( no es matriz)
la cosa es que se vayan generando 10 numeros random y el usuario ingresa n cantidad de filas o arreglos a generar.
en el archivo.txt se envian los numeros random.
y en el archivo otro.txt se ordenan y envian al archivo otro.txt
el problema es que en el archivo otro.txt se genera una linea de mas
copiando la linea anterior.
1. #include <stdio.h>
2. #include <stdlib.h>
3. main()
4. {
5. /*Declaracion de variables y archivos*/
6. int i, j, c=0,aux,cantFilas,arg[10];
7. FILE *Archivo1, *Archivo2;
8. char arg1[10],val,p;
9.
10.
11.
12. /*Pregunta la cantidad de n filas a producir, validando que solo inghresen enteros*/
13. do
14. {
15. setbuf(stdin, NULL);
16. printf("Ingrese numero de filas a generar: ");
17. }while(!p == scanf("%d",&cantFilas));
18.
19. /* ingreso de numeros random en arreglo de 10*/
20. Archivo1 = fopen("Archivo.txt","w")
21. while ( cantFilas > c )
22. {
23. for(i = 1; i <= 10; i++)
24. {
25. arg[ i ] = rand()%10
26. fprintf(Archivo1,"%d",arg[ i ])
27. }//Fin for
28. fprintf(Archivo1,"\n");
29. c++;
30. }//fin while
31. fclose(Archivo1);//cierro archivo1
32. /*fin ingreso de numero ramdon*/
33.
34. /*leer de archivo.txt los numeros random y, los oredenos y los mando al otro.txt*/
35. Archivo2 = fopen("Otro.txt","w");//Abro otro.txt
36. Archivo1 = fopen("Archivo.txt","r"); //Abro Archivo.txt
37. while (!feof(Archivo1))//Realiza un recorrido del archivo1
38. {
39.
40. fread(arg1,sizeof(char),11,Archivo1);
41. /*Ordenamiento de datos via metodo burbuja*/
42. for(j = 0; j <(10-1); j++)
43. {
44. for(i = j+1; i<10; i++)
45. {
46. if( arg1[ i ] < arg1[ j ])
47. {
48. aux = arg1[ i ];
49. arg1<i> = arg1[ j ];
50. arg1[ j ] = aux;
51. }//fin if que genera un ordenamiento
52. }//fin for i que genera un ordenamemiento
53. }//Fin for j que genera un ordenamiento
54. fwrite(arg1,sizeof(char),11,Archivo2);
55. }//fin while que busca el feof del archivo.txt
56.
57. fclose(Archivo1);//se cierra arch2
58. fclose(Archivo2);//se cierra arch1
59.
60. printf("Gracias, vuelva pronto.\n");
61. system("\n PAUSE");
62. }</i>
#include <stdio.h>
#include <stdlib.h>
main()
{
/*Declaracion de variables y archivos*/
int i, j, c=0,aux,cantFilas,arg[10];
FILE *Archivo1, *Archivo2;
char arg1[10],val,p;
/*Pregunta la cantidad de n filas a producir, validando que solo inghresen enteros*/
do
{
setbuf(stdin, NULL);
printf("Ingrese numero de filas a generar: ");
}while(!p == scanf("%d",&cantFilas));
/* ingreso de numeros random en arreglo de 10*/
Archivo1 = fopen("Archivo.txt","w")
while ( cantFilas > c )
{
for(i = 1; i <= 10; i++)
{
arg[ i ] = rand()%10
fprintf(Archivo1,"%d",arg[ i ])
}//Fin for
fprintf(Archivo1,"\n");
c++;
}//fin while
fclose(Archivo1);//cierro archivo1
/*fin ingreso de numero ramdon*/
/*leer de archivo.txt los numeros random y, los oredenos y los mando al otro.txt*/
Archivo2 = fopen("Otro.txt","w");//Abro otro.txt
Archivo1 = fopen("Archivo.txt","r"); //Abro Archivo.txt
while (!feof(Archivo1))//Realiza un recorrido del archivo1
{
fread(arg1,sizeof(char),11,Archivo1);
/*Ordenamiento de datos via metodo burbuja*/
for(j = 0; j <(10-1); j++)
{
for(i = j+1; i<10; i++)
{
if( arg1[ i ] < arg1[ j ])
{
aux = arg1[ i ];
arg1 = arg1[ j ];
arg1[ j ] = aux;
}//fin if que genera un ordenamiento
}//fin for i que genera un ordenamemiento
}//Fin for j que genera un ordenamiento
fwrite(arg1,sizeof(char),11,Archivo2);
}//fin while que busca el feof del archivo.txt
fclose(Archivo1);//se cierra arch2
fclose(Archivo2);//se cierra arch1
printf("Gracias, vuelva pronto.\n");
system("\n PAUSE");
}
eso ojala alguien me ayude.
Valora esta pregunta


0