|
131
|
Programación / Programación C/C++ / problema con getc()
|
en: 26 Septiembre 2013, 20:19 pm
|
Saludos tengo el siguiente codigo que me tiene que leer un archivo de texto e imprimir cuantas veces aparece un caracter, para esto uso el fgetc para que vaya leyendo 1 por 1 pero no me imprime correctamente #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 100 int main() { int i,tam,cont; char nombre[MAX],archivo[MAX],car,opcion,*ptr; FILE *fd,*ap; printf("Dame el nombre del archivo: "); if ((ptr = strchr(nombre , '\n')) != NULL ) *ptr = '\0'; sprintf(archivo ,"F:\\%s.txt",nombre ); ap = fopen("Archivo_producto","w"); if((fd = fopen(archivo ,"r"))!=NULL ) { printf("a) Comprimir archivo\n"); printf("b) Descomprimir archivo\n"); { case 'A':case'a': cont = 0; for(i=0;i <= tam;i++) { if((car = fgetc(fd ))== 'd'); cont++; } break; default: printf("La opcion no existe\n"); } } else printf("No se pudo abrir el archivo"); return 0; }
de antemano gracias
|
|
|
132
|
Programación / Programación C/C++ / problema con sprintf()
|
en: 25 Septiembre 2013, 19:02 pm
|
Saludos Tengo el siguiente programa que le pide al usuario que ingrese el nombre de cualquier archivo que desee abrir y una vez que teclea el nombre se lo asigna a un arreglo que se llama archivo, para esto uso el sprintf, pero no se cual es el problema que aunque le ingreso un archivo que si existe me aparece que no se pudo abrir archivo #include <stdio.h> #include <stdlib.h> #define MAX 100 int main() { int i,j; char nombre[MAX],archivo[MAX]; FILE *fd; printf("Dame el nombre del archivo: "); sprintf(archivo ,"F:\\%s.txt",nombre ); if((fd = fopen(archivo ,"r"))!=NULL ) { printf("Si se pudo abrir archivo"); } else printf("No se pudo abrir el archivo"); return 0; }
de antemano gracias
|
|
|
133
|
Programación / Programación C/C++ / serie de numeros en fichero
|
en: 23 Septiembre 2013, 22:37 pm
|
Saludos tengo el siguiente codigo que mediante un for me tiene que imprimir 1000 numeros inversamente ordenados en un archivo con el mismo nombre, el problema es que me imprime basura en el archivo y no tengo idea de por que?? #include <stdio.h> #include <stdlib.h> int main() { int i; FILE *fd; if((fd = fopen("F:\\1000-Inversamente Ordenados.txt","w"))!=NULL ) { for(i=1000;i > 0;i--) { fwrite("\n",sizeof(int),1,fd ); } } else printf("No se pudo crear el archivo"); return 0; }
de antemano gracias
|
|
|
134
|
Programación / Programación C/C++ / imprimir basura
|
en: 20 Septiembre 2013, 06:01 am
|
Saludos tengo el siguiente arreglo de 11 elementos 74,14,21,44,38,97,11,78,65,88,30 y quiero que me imprima el primer elemento (74), el quinto (97) y el 30 que es el ultimo, todo esto porque estoy empezando un metodo de ordenamiento pero no lo he terminado, el problema es que aunque si me imprime el primero y el quinto en el ultimo me imprime basura, en vez de imprimir el 30 me imprime 31 y no se por que void arreglo(int v[],int n) { int i,j,k; k = n/2; for(j=0;j <= k;j+=k) { if(v[j] < v[j+k]) { } else { } } }
de antemano gracias
|
|
|
135
|
Programación / Programación C/C++ / analisis codigos de ordenamiento
|
en: 18 Septiembre 2013, 18:59 pm
|
Saludos tengo que codificar algunos codigos de ordenamiento y despues me pide que los compare de acuerdo a su tiempo de ejecucion, ya sea para un array de 1000, 10000 o 1000000, los codigos ya los tengo hechos BURBUJA #include <stdio.h> #include <stdlib.h> #define MAX 100 void Ordenacion_Burbuja(int v[],int n); int main() { int i,n,v[MAX]; printf("Dame el numero de elementos del vector: "); for(i=0;i < n;i++) { printf("Dame el elemento numero %d:\n",i +1); } Ordenacion_Burbuja(v,n); for(i=0;i < n;i++) return 0; } void Ordenacion_Burbuja(int v[],int n) { int i,j,aux; for(i=1;i < n;i++) { for(j=0;j < n-i;j++) { if(v[j] > v[j+1]) { aux = v[j+1]; v[j+1] = v[j]; v[j] = aux; } } } }
INSERCION #include <stdio.h> #include <stdlib.h> #define MAX 100 void metodo_Insercion(int v[],int n); int main() { int i,v[MAX],n; printf("Dame el numero de elementos del vector: "); for(i=0;i < n;i++) { printf("Dame el elemento numero %d:\n",i +1); } metodo_Insercion(v,n); for(i=0;i < n;i++) return 0; } void metodo_Insercion(int v[],int n) { int i,j,aux; for(i=1;i < n ;i++) { for(j=i;j > 0;j--) { if(v[j] < v[j-1]) { aux = v[j]; v[j] = v[j-1]; v[j-1] = aux; } } } }
SELECCION #include <stdio.h> #include <stdlib.h> #define MAX 100 void metodo_Seleccion(); int Minimo(int v[],int n); void intercambiar(int pos,int v[]); int main() { int n,i,v[MAX],pos; printf("Dame el numero de elementos del vector: "); for(i=0;i < n;i++) { printf("Dame el elemento numero %d: ",i +1); } metodo_Seleccion(v,n); for(i=0;i < n;i++) return 0; } void metodo_Seleccion(int v[],int n) { int i,j,minimo,aux,pos; for(i=0;i < n;i++) { minimo = v[i]; pos = i; for(j=i+1;j < n;j++) { if(v[j] < minimo) { minimo = v[j]; pos = j; } } aux = v[pos]; v[pos] = v[i]; v[i] = aux; } }
El problema es que no tengo idea como determinar los tiempos que le toma a cada uno ordenar un vector, como se puede hacer??? de antemano gracias
|
|
|
136
|
Programación / Programación C/C++ / algoritmos divide y venceras
|
en: 14 Septiembre 2013, 02:46 am
|
Saludos
Estoy estudiando algunos metodos de ordenamiento como Merge-Sort, Quick Sort y el metodo de busqueda binaria, y me he fijado que todos estos algoritmos utilizan la tecnica de dividir vectores en subvectores e irlos ordenando pero me fije que antes de dividir el vector en 2 hace una suma, la de la variable ini mas el tamanio del vector
ini=1,sup=n; i= (ini+sup)/2;
y me pregunto si esto es necesario, no seria mas logico dividir el tamanio del vector sobre 2 sin necesidad de hacer la dichosa suma??? de que me sirve la variable ini??
sup=n; i= (sup/2);
de antemano gracias
|
|
|
137
|
Programación / Programación C/C++ / getc() y printf
|
en: 12 Septiembre 2013, 22:11 pm
|
Saludos, tengo el siguiente codigo que me tiene que colocar el puntero en el caracter que se encuentre en la mitad de un texto, leerlo y despues imprimirlo, el codigo funciona correctamente, la duda que tengo es que a la hora de imprimir lo hago con un printf y cuando a ese printf le digo que tome el caracter de la mitad con getc() me imprime el caracter que le sigue al de la mitad, o sea uno mas, y no se por que se comporta asi esta funcion, #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { int fin,mitad; char letra; FILE *fd; if((fd = fopen("F:\\archivo_fuente.txt","r"))!=NULL ) { mitad = fin/2; fseek(fd ,mitad ,SEEK_SET ); fread(&letra ,sizeof(char),1,fd ); } else printf("No se pudo abrir archivo"); return 0; }
y si al printf le pongo fread(&letra ,sizeof(char),1,fd );
aqui si me imprime el caracter que se encuentra en la mitad y no el que le sigue. cual es la diferencia?? de antemano gracias
|
|
|
138
|
Programación / Programación C/C++ / Lectura y modificacion de archivo
|
en: 10 Septiembre 2013, 13:12 pm
|
Saludos tengo el siguiente codigo que me lee un archivo de texto y despues lo modifica, en todos los lugares donde se encuentre 1's los intercambia por 5's, la lectura del archivo lo hace bien porque ya verifique y si me ubica los unos del texto el problema es para poder cambiarlos a 5, y no se donde esta el error #include <stdio.h> #include <stdlib.h> #include <unistd.h> /* Objetivo de la prueba: En una archivo de texto que contiene caracteres alfanuméricos, intercambiar el ‘1’ por el ‘ 5’ en donde quiera que ocurra esa incidencia en el documento. El archivo debe aparecer sin ningún 1, y en su lugar los cincos equivalentes. */ int main() { FILE *fd; char letra; if((fd = fopen("F:\\archivo_practica11.txt","r+"))!=NULL ) { { fread(&letra ,sizeof(char),1,fd ); if(letra == '1') { letra = '5'; fwrite(fd ,sizeof(char),1,letra ); } } } else printf("No se pudo abrir el archivo"); return 0; }
gracias
|
|
|
139
|
Programación / Programación C/C++ / leer caracteres de un archivo
|
en: 7 Septiembre 2013, 03:10 am
|
Saludos Tengo el siguiente codigo que lee el primer y último carácter de un archivo de texto y los muestra en pantalla.La prueba consiste en mostrar el primer y último carácter correctamente independientemente del tamaño del archivo. El codigo ya pude verificar que funciona para textos pequenios como: "Hola mundo" o "Tres tristes tigres tragaban trigo en un trigal", en el caso del primero me aparece primer caracter :H, ultimo caracter: o, pero si se trata de un archivo de texto un poco grande no me imprime el ultimo caracter y no entiendo por que #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { FILE *fd; int inicio,fin; if((fd = fopen("F:\\archivo1.txt","r"))!=NULL ) { if((inicio = fseek(fd ,0,SEEK_SET )) != 0) printf("No se pudo posicionar el cursor al inicio"); else printf("El caracter que esta al inicio del archivo es: %c\n",fgetc(fd )); if((fin = fseek(fd ,-1,SEEK_END )) != 0) printf("No se pudo posicionar el cursor al final"); else printf("El caracter que esta al final del archivo es: %c\n",fgetc(fd )); } else printf("No se pudo abrir archivo"); return 0; }
el texto en cuestion tiene mas de 100 caracteres de antemano gracias
|
|
|
140
|
Programación / Programación C/C++ / FILE y funcion fwrite()
|
en: 5 Septiembre 2013, 20:03 pm
|
Saludos
Tengo una duda, por que con la funcion fwrite() no puedo imprimir en pantalla?? Hay alguna alternativa para poder hacerlo?? es que cuando pongo fwrite(fo,sizeof(char),sizeof(buffer),1) me aparece que necesito un puntero a FILE en vez de 1
de antemano gracias
|
|
|
|
|
|
|