Jump to content

Ayuda para terminar codigo c


Recommended Posts

Buenos gente, necesito crear un programa en c, que me permitar ingresar rango de precios de articulos y revisar en el archivo de txt, de manera qe al ejecutar el programa me pida ingresar un rango de precio con el mayor y menos, y me los arroje a un archivo de txt distinto, me explico por ejemplo en el archivo de texto tengo: zapato 10 lupa 8 camisa 20 EOF.

Entonces la parte que me falta es como hacer funcionar la comparacion de precios por ejemplo si quiero que solo deje los articulos mayores a 30 y menores de 9, solo me deberia aparecer en el nuevo archivo de txt la lupa, y ademas de todo esto necesito que me diga cuantos articulos se agregaron y si por ejemplo no hay articulos mayores a 30 entonces que me lo menciones en consola

 

se acceder al archivo y todo eso, pero no se como poner esa parte del codigo donde me haga la recepcion de los rangos y los compare y guarde solo los articulos que encajen, espero me puedan ayudar,

 

Saludos y gracias.

Edited by brian69
Link to comment
Share on other sites

Al final lo logré hacer, pero quiero arreglar un detalle, a la hora del printf o fprintf, quiero qe me muestre el listado de articulos con salto de linea y que los precio se vean en orden es decir.

 

abc 123

cdeg 2343

fgehj 1233

as 123

 

asi me sale impreso y quiero quede

 

abc 123

cdeg 2343

fgehj 1233

as 123

 

no sé si entiende, osea todo alineado.

 

yo creo que la edicion debe ir por aqui

 

"fprintf (fp1,"%s %4d\n", articulo, valor);"

 

El codigo final quedó asi, por si a alguien le sirve en algun ejercicio parecido o programa.

 

 

int main(int argc, char *argv[])
{
FILE *fp,*fp1;
char articulo[100];
int cont=0;
int valor, inicial, final;

fp = fopen ("articulos.txt","r");
fp1 = fopen ("info_articulos.txt","w");


if (fp!= NULL)
{
/*
printf ("Apertura de archivo exitosa\n");

leer archivo articulos.txt
while (!feof(fp))
{
fscanf (fp,"%s %d ",articulo, &valor);
// mostrar en consola:
printf ("%s %d\n",articulo,valor);
}*/
printf ("Articulos con precio Mayor a: ");
scanf ("%d", &inicial);
printf ("Articulos con precio Menor a: ");
scanf ("%d", &final);

while (!feof(fp))
{
fscanf (fp, "%s %d",articulo, &valor);

if ((valor>inicial) && (valor<final))

{

fprintf (fp1,"%s %4d\n", articulo, valor);
cont++;
}
}

fprintf(fp1, "Cantidad de articulos: %d\n", cont);

fclose(fp);
fclose(fp1);
}
else
printf ("El archivo no se encuentra..\n");
return 0;
}

))

 

Saludos.

Edited by brian69
Link to comment
Share on other sites

Porsiaca, este foro siempre ha tenido la posibilidad de subir código fuente (se respeta la indentación, etc.) :huasonto:

 

Si quieres que quede alineado, puedes especificar cuántos caracteres de ancho debe tener la cadena (si la cadena tiene menos caracteres, entonces se rellena con espacios). Por ejemplo:

fprintf (fp1,"%-15s %d\n", articulo, valor);
en este caso, la cadena va a quedar con 15 caracteres de ancho, y si tiene menos caracteres, se agregarán espacios al final de ésta (a la derecha). Al usar un valor negativo indicas que quieres que el texto quede justificado a la izquierda.

 

Tambien puedes especificar el ancho a través de un parámetro al ...printf. En este caso, esta forma podría ser práctica si el ancho se calcula en tiempo de ejecución (si calculas cuál es el artículo con nombre más largo antes de imprimir la lista de artículos). Ejemplo:

fprintf (fp1,"%*s %d\n", -15, articulo, valor);
si te fijas, en vez de especificar el ancho en la cadena de formato del fprintf, se pasa como parámetro. El asterisco indica que especificador de ancho se pasa como parámetro.

 

:huasonto:

Link to comment
Share on other sites

Gracias por el dato y responder, de momento lo deje con \t para dejar los precios alineados a los articulos ambos teniendo la misma distancia, pero igual probare lo que mencionas, Saludos

 

 

Enviado desde iPhone 4s con Tapatalk

Link to comment
Share on other sites

No te sugerí usar tabulación porque no siempre va a funcionar. Si hay mucha diferencia en los largos de los nombres de los artículos, no va a funcionar muy bien. Por ejemplo, si hay un artículo llamado "sal" y otro llamado "detergente", la tabulación no te va a dejar el listado muy ordenado... :huasonto:

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...