Imprimir arreglo con for y gotoxy

Saludos!
Quiero imprimir un arreglo unidimensional en forma de tabla así:
Articulo
Tornillo
Tuerca
Rondana
.
.
.
Uso este código y manda error al ejecutar:
/*Antepongo el gotoxy para que me haga el printf en esa ubicacion*/
gotoxy(5,6)
for(c=0;c<5;c++)
{
printf("%s",art[c]);
}
y tambien he usado este:
for(c=0;c<5;c++) /*para imprimir el arreglo*/
{
for(y=0;y<5;y++) /*para cambiar la posicion del gotoxy */
{
gotoxy(5,y);
printf("%s",art[c]);
}
}
Estos dos códigos me mandan error, agradezco su ayuda...

1 respuesta

Respuesta
1
¿Puedes decirme qué error te da? La función gotoxy no existe en todas las implementaciones de C. ¿Estás usando TurboC?
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
costo_fijo(float cf){
char sl;
cf=1700;
printf("Costo fijo: %1.1f",cf);
printf("\nCambiar Costo fijo? s/n: ");
scanf("%s",&sl);
{
if(sl=='s'| sl=='S')
{
printf("Ingrese nuevo Costo Fijo: ");
scanf("%f",&cf);
}
else
{
sl=1700;
}
}
return(cf);
}
void main(void){
int up[6],c,x,y;
float fc[6],cf,cp[6],tt;
char art[6];
clrscr();
costo_fijo(cf);
for(c=0;c<6;c++)
{
printf("\nArticulo %i",c+1);
printf("\n\nDescripci¢n: ");
scanf("%s",&art[c]);
printf("\nUnidades Producidas: ");
scanf("%i",&up[c]);
printf("\nFactor de costo: ");
scanf("%f",&fc[c]);
cp[c]=(up[c]*fc[c])+cf;
tt=tt+cp[c];
}
clrscr();
gotoxy(30,2);
printf("COSTOS DE PRODUCCIàN");
gotoxy(5,4);
printf("ARTICULO");
gotoxy(15,4);
printf("UNIDADES PRODUCIDAS");
gotoxy(36,4);
printf("FACTOR COSTO");
gotoxy(50,4);
printf("COSTO FIJO");
gotoxy(62,4);
printf("COSTO PRODUCCIàN");
/*asi seria el copdigo para ir imprimiendo cada arreglo*/
for(c=0;c<5;c++) /*para imprimir el arreglo*/
{
for(y=0;y<5;y++) /*para cambiar la posicion del gotoxy */
{
gotoxy(5,y); printf("%s",art[c]);
}
}
getche();
}
El problema es alejecutarlo, he penzado que a lo mejor la declaración de los métodos en "string" o "char" están mal
Gracias y Saludos
Disculpa... Si estoy usando Turbo C
En primer lugar si declaras char c tienes que usar scanf("%c") porque si no te dará un error.
En segundo lugar no sé por qué creas la función costo_fijo pasándole como parámetro un float si lo primero que haces dentro de la función es cambiarle el valor.
En tercer lugar, en la función main tienes que declarar como char *art[6] porque necesitas un arreglo de punteros no un arreglo de caracteres.
En fin, como veo que tienes muchas dudas en la base, vamos a empezar por aclarar esto y vas retocando el programa. Si luego hay más errores los iremos viendo.
Cuando declaras algo como "char c" estás declarando una variable c que contendrá un carácter. Para declarar una cadena de caracteres tienes dos opciones:
1. Declaras un arreglo de caracteres con la longitud máxima + 1. Así si quieres una cadena que pueda tener hasta 30 caracteres declararás un "char c[31]".
2. Declaras un puntero a un char con "char *c". El problema de esto es que es un puntero y no ocupa ningún sitio en la memoria del ordenador, por lo que luego tendrás que hacer una asignación al puntero, bien asignándole el valor de otro puntero, bien una constante (char * c = "hola"), o bien asignándole un nuevo espacio de memoria (c = (char*) malloc(31)) que luego tendrás que liberar (free(c)). Cuidado con esto último porque es un agujero que se come la memoria si no tienes la precaución de liberar todas las zonas de memoria que reservas.
Repasa estos conceptos y luego seguimos con tu programa.
AHH entendido... muchas gracias!
Seguiré editando el programa... de verdad muchas gracias por la grandiosa ayuda
¿Podrías cerrar la pregunta y valorar la ayuda que te he prestado?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas