tengo un detalle con este programita al elegir la opcion b) en la impresion de las traspuesta del arreglo bidimensional me imprime valores basura (en lo que vienen siendo las 2 ultimas filas de la traspuesta del arreglo bid.) no logro saber a que se debe.
inclusibe pueden notar que en la linea de la insersion de valores al arreglo antes del
scanf("%d", &array[f][c]);
Uso la funcino flush_input(); para limpiar el buffer /*fflush por alguna razon no hace su trabajo*/
esta funcion la estructure de la siguiente manera:
inclusibe pueden notar que en la linea de la insersion de valores al arreglo antes del
scanf("%d", &array[f][c]);
Uso la funcino flush_input(); para limpiar el buffer /*fflush por alguna razon no hace su trabajo*/
esta funcion la estructure de la siguiente manera:
Código [Seleccionar]
flush_input
{
int variable_entera;
while ( (variable_entera = getchar()) != '\n' && variable_entera != EOF)
;
}
Código [Seleccionar]
#include <stdio.h>
#include <string.h>
char Menu(void);
void flush_input(void);
int EvaluacionDeEleccion(char m);
void OperandoLaOpcion(int eleccion);
void CreacionEimpresionDeArregloUnidimensional(int size);
void CreacionEimpresionDeArregloBidimensional(int filas, int columnas);
int ConteoDeCadenaDeCaracteres(char *palabra);
int main(int argc, char **argv)
{
int eleccion;
char m;
printf("Hola usuario Bievenido a tu programa OPCIONES ");
m = Menu();
eleccion = EvaluacionDeEleccion(m);
OperandoLaOpcion(eleccion);
return 0;
}
void flush_input(void)
{
int ch;
while( (ch = getchar()) != '\n' && ch != EOF)
;
}
char Menu(void)
{
char option;
printf(" \n a) creacion e impresion de un ciclo unidimiencional \n b) creacion e impresion de un ciclo bidimensional \n c) conteo de caracteres de una frase \n\n ");
scanf("%c", &option);
return option;;
}
int EvaluacionDeEleccion( char m)
{
if( m == 'a' || m == 'A' )
return 1;
else if( m == 'b' || m == 'B' )
return 2;
else if ( m == 'c' || m == 'C' )
return 3;
else
printf("OPCION NO VALIDA ! ");
return 0;
}
void OperandoLaOpcion(int eleccion)
{
int size;
int filas, columnas;
char palabra[256];
int CaracteresContados;
switch(eleccion)
{
case 1:
printf(" Ingrese el tamano de su arreglo unidimensional: \n");
scanf("%d", &size);
CreacionEimpresionDeArregloUnidimensional(size);
break;
case 2:
printf("Ingresa las filas : \n");
flush_input();
scanf("%d",&filas);
printf("Ingresa las columnas: \n");
flush_input();
scanf("%d", &columnas);
CreacionEimpresionDeArregloBidimensional(filas, columnas);
break;
case 3:
puts("ingresa una cadena de caracteres cualquiera: ");
flush_input();
scanf("%s", &palabra);
CaracteresContados = ConteoDeCadenaDeCaracteres(palabra);
printf("tu palabra contiene %d caracteres ", CaracteresContados);
break;
}
}
void CreacionEimpresionDeArregloUnidimensional(int size)
{
int array[size];
int f;
/*solicitud de valores al usuario para la creacion del arreglo unidimensional*/
for( f = 0; f < size; f ++ )
{
printf("ingrese el valor deseado para la posicion [%d]: ", f);
flush_input();
scanf("%d", &array[f]);
}
/*impresion del array de manera normal*/
for( f = 0; f < size; f ++ )
{
printf("%d \n", array[f]);
}
printf("\n");
/*impresion del array al rrevez */
for( f = size-1; f != -1; f-- ) /*nota: sin el menos uno me imprimia un valor basura*/
{
printf("%d \n", array[f]);
}
}
void CreacionEimpresionDeArregloBidimensional(int filas, int columnas)
{
int array[filas][columnas];
int f, c;
/*solicitud de valores al usuario para formar el arreglo*/
for( f = 0; f < filas; f++ )
{
for( c = 0; c < columnas; c++ )
{
printf("ingrese el valor par la posicion [%d][%d]: ", f, c);
flush_input();
scanf("%d", &array[f][c]);
}
}
/*impresion normal del arreglo bidimensional*/
for( f = 0; f < filas; f++ )
{
for( c = 0; c < columnas; c++ )
{
printf("%d \t", array[f][c] );
}
printf("\n");
}
/*impresion de transpuesta del arreglo */
printf("\n\n");
for( c = 0; c < columnas; c++ )
{
for( f = 0; f < filas; f++ )
{
printf("%d \t", array[c][f] );
}
printf("\n");
}
}
int ConteoDeCadenaDeCaracteres(char *palabra)
{
return strlen(palabra);
}