C/Visual C - Trancado!!!!!!!

 
Vista:

Trancado!!!!!!!

Publicado por Emiliano (6 intervenciones) el 09/10/2007 19:22:33
Buenas tardes ..... tengo un problema en este programa......
Paso a explicar..... la idea es generar una matriz de x por x .... y que el usuario luego edite una determinada celda. Hasta ahi todo bien ... funciona.... ahora en el momento que el usuario edita la celda yo pido esto :
ingrese fila (entero) ;
ingrese columna(entero) ;
y que guarde el valor en dicha coordenada , se eniende?
El problema es que las "columnas" de esta matriz deben ser identificadas como char y no por enteros (a, b , c ..... z), osea
lo que tendria que pedir yo es lo siguiente
ingrese celda; ej A1(columna a (char), fila 1(entero)
y valor .
en el void celda ().... se ve como lo estoy haciendo.... pero estoy re trancado con eso y es una regla a cumplir en la especificación del proyecto , osea estoy en el horno!!!! jijijji

Saludos , y muchas Gracias
Emiliano
/#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<string.h>
#define n_f 100
#define n_c 100

//void inicializar (int n);
//void convertir(int);
void borrar();
void imprimir();
void modificar();
void sumar ();
void restar();
void multiplicar();
void dividir();
void captura ();
void mostrar ();
void celda();
void guardar();
void ordenar_f ();
void ordenar_c ();
void menor ();
void mayor ();
void promedio ();

struct matriz
{
int valor;
char formula[30];// es un struct ya que la celda puede tener un valor o una formula //
}

matriz[n_f][n_c];

int nf,nc,inicio_f, fin_f, inicio_c, fin_c;


int main ()
{
.........................../// aqui estaria el menu ///
}
/* carga una matrixz con x filas y x columnas
la inicioaliza en 0*/

void captura()
{
int i,j;

printf ("\n\tPLANILLA EXEL :\n ");
printf ("\n");
for (i=0;i<nf;i++)
for (j=0;j<nc;j++)
{
matriz[i][j].valor=0;
//matriz[i][j].formula;
}
}

void modificar()
{
int i,j,k;
printf ("\n\tPLANILLA EXEL :\n ");
printf ("\n");
for (i=0;i<nf;i++)
for (j=0;j<nc;j++)
{
matriz[i][j].valor=0;
}
}
/* recorre la matriz desde donde /hasta donde desea el ususario
y muestra en pantalla */
void mostrar ()
{
int i, j;
for (i=inicio_f;i<=fin_f;i++)
{
for (j=inicio_c;j<=fin_c;j++)
printf ("%d\t", matriz[i-1][j-1].valor);
}

/* inicializa la matriz nuevamente en 0
borrando elementos antes ingresados*/
}
void borrar()
{
int i, j;
for (i=0;i<nf;i++)
for (j=0;j<nc;j++)
{
matriz[i][j].valor=0;
}
}

/* el ususario ingrese desde / hasta donde desea operar en la matriz
ya sea para operaciones , vizualizar , promedio , orden , etc*/

void imprimir()
{

printf("\t\tA CONTINUACION INGRESAR DESDE/HASTA DONDE \n\t\tDESEA OPERAR EN SU PLANILLA\n\n");
printf("Ingrese el num de fila (desde)\n");
scanf("%d",&inicio_f);
printf("Ingrese el num de fila(hasta)\n");
scanf("%d",&fin_f);
printf("Ingrese el num de columna (desde)\n");
scanf("%d",&inicio_c);
printf("Ingrese el num de columna (hasta)\n");
scanf("%d",&fin_c);
printf("\n\n");
}

/* funcion celda : 2 int fila , colmna , en donde el ususario especifica
el casillero en donde desea que sea guardado su valor en la matriz*/

void celda(void)
{
system("cls");
int fila, columna;
int dato;
char palabra;
char ch;
int i,j;

/* repeticion : while (char ch) para ingresar + de un valor si es nesesario
mientras "ch" sea S o s ingresar datos, si "ch" es N o n retorna al menu
principal*/

printf("\tINGRESAR DATOS (S)// IR A MENU (N)\n\n" );
printf ("opcion elegida : ");
scanf ("%s",&ch);

if (ch =='S'||ch == 's')
{
while(ch)
{

printf("\t\tESCRIBA LA POSISION DE LA CELDA \n\t\tA CONTINUACION SU VALOR\n\n");
printf("Fila Numero : ");
scanf("%d", & fila);
printf("\n");
printf("Columna Numero : ");
scanf("%d",&columna);
printf("\n");*/
convertir(int);
printf("\t Para ingresar valores <S> / para formulas <N> \n");
scanf("%s", &palabra);
if (palabra == 's'|| palabra == 'S')
{
while(palabra)
{

printf("ingrese Valor : ");
scanf("%d",&matriz[n_f][n_c]);
matriz[fila-1][columna-1].valor=matriz[n_f][n_c].valor ;
return celda();
}
}
else
{
if(palabra =='n'|| palabra =='N')
{
printf("ingrese Formula : ");
scanf("%s",&matriz[n_f][n_c]);
//matriz[fila-1][columna-1].formula = matriz[n_f][n_c].formula ;

}
}
return celda();
}
}

else
{
if(ch == 'N'||ch == 'n')
{ return;}
}

}
/*ordena columnas desde donde/ hasta donde desea el ususario,
y muestra en pantalla la o las filas ordenadas de - a +*/

void ordenar_f()
{
int i,j,k,aux;

for (inicio_f=0;inicio_f<fin_f;inicio_f++)
{
for (inicio_c=0;inicio_c<fin_c-1;inicio_c++)
{
for (k=inicio_c+1;k<fin_c;k++)
{
if (matriz[inicio_f][inicio_c].valor > matriz[inicio_f][k].valor)
{
aux = matriz[inicio_f][inicio_c].valor;
matriz[inicio_f][inicio_c].valor = matriz[inicio_f][k].valor;
matriz[inicio_f][k].valor = aux;
}
}
}
}
printf ("\n\tOrdenado por filas\n\n");
for (inicio_f=0;inicio_f<fin_f;inicio_f++)
{
for (inicio_c=0;inicio_c<fin_c;inicio_c++)
printf (" %4d\t", matriz[inicio_f][inicio_c]);
printf ("\n");
}
printf ("\n");
}
/* ordena filas y muestra columnas ordenadas*/

void ordenar_c()
{
int i,j,k,aux;
for (inicio_f=0;inicio_f<fin_f;inicio_f++)
{
for (inicio_c=0;inicio_c<fin_c-1;inicio_c++)
{
for (k=inicio_c+1;inicio_c<fin_c;k++)
{
if (matriz[inicio_c][inicio_f].valor > matriz[k][inicio_f].valor)
{
aux = matriz[inicio_c][inicio_f].valor;
matriz[inicio_c][inicio_f].valor = matriz[k][inicio_f].valor;
matriz[k][inicio_c].valor= aux;
}
}
}
}
printf ("\n\tOrdenado por culumnas\n\n");
for (inicio_f=0;inicio_f<fin_f;inicio_f++)
{
for (inicio_c=0;inicio_c<fin_c;inicio_c++)
printf (" %4d\t", matriz[inicio_f][inicio_c]);
printf ("\n");
}
printf ("\n");
}
/* muestra el menor y su posision*/

void menor()
{
int i,j,auxm=1,posf=0,posc=0;
for (inicio_f=0;inicio_f<fin_f;inicio_f++)
{
for (inicio_c=0;inicio_c<fin_c;inicio_c++)
{
if (auxm > matriz[inicio_f][inicio_c].valor)
{
auxm=matriz[inicio_f][inicio_c].valor;
posf=inicio_f;
posc=inicio_c;
}
}
}
printf ("\n\n\tEl numero menor es: %d posicion [%d][%d] ",auxm,posf+1,posc+1);
}

/* muestra el mayor y su pos*/

void mayor()
{
int i,j,auxM=0,posf=0,posc=0;
for (i=0;i<nf;i++)
{
for (j=0;j<nc;j++)
{
if (auxM < matriz[i][j].valor)
{
auxM=matriz[i][j].valor;
posf=i;
posc=j;
}
}
}
printf ("\n\n\tEl numero mayor es: %d posicion [%d][%d] ",auxM,posf+1,posc+1);
}
/* promedia matriz completa , o desde / hasta donde se especifique */

void promedio()
{

int i,j;
float acu=0,p;
for (i=inicio_f;i<=fin_f;i++)
{
for (j=inicio_c;j<=fin_c;j++)
{
acu+=matriz[i-1][j-1].valor;
}
}
p=acu/((i-1)*(j-1));
printf ("\n\n\tEl promedio la matriz es: %4.2f",p);
}
/* operacones : suma resta mult division */

void sumar()
{
int i,j;
float contador=0,resultado;
for (i=inicio_f;i<=fin_f;i++)
{
for (j=inicio_c;j<=fin_c;j++)
{
contador+=matriz[i-1][j-1].valor;
}
}
resultado = contador=+contador;
printf ("\n\n\tresultado : %.1f",resultado);
}
// no fun bien
void restar()
{
int i,j;
float contador=0,resultado;
for (i=inicio_f;i<=fin_f;i++)
{
for (j=inicio_c;j<=fin_c;j++)
{
contador+=matriz[i-1][j-1].valor;
}
}
resultado = contador=-contador;
printf ("\n\n\tresultado : %.1f",resultado);
}

// no funciona bien
void multiplicar()
{
int i,j;
int contador=0,resultado;
for (i=inicio_f;i<=fin_f;i++)
{
for (j=inicio_c;j<=fin_c;j++)
{
contador+=matriz[i-1][j-1].valor;
}
}
resultado =contador*contador;
printf ("\n\n\tresultado : %d",resultado);
}
//no fun bien
void dividir()
{
int i,j;
float contador=0,resultado;
for (i=inicio_f;i<=fin_f;i++)
{
for (j=inicio_c;j<=fin_c;j++)
{
contador+=matriz[i-1][j-1].valor;
}
}
resultado = contador/contador;
printf ("\n\n\tresultado : %.1f",resultado);
}

/* abre un archivo "extension x", y lo guarda con "f"printf*/

void guardar()
{
int i;
int j;
FILE*ptrfile = fopen("planilla.txt","w");
while (!feof (stdin))
{
for (i=0;i<nf;i++)
for (j=0;j<nc;j++)
{
fprintf(ptrfile, "%d" ,matriz[i][j]);
}

}

fclose(ptrfile);
return ;

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder