Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - oblivionxor

#1
Programación C/C++ / Re: Instruccion sscanf [C]
26 Febrero 2013, 20:36 PM
Oh! entendido a la perfeccion naderST muchas gracias por tu ayuda!
#2
Programación C/C++ / Re: Instruccion sscanf [C]
26 Febrero 2013, 19:26 PM
Con cual formato? D: con el del especificador de conversion? o cual?
#3
Programación C/C++ / Re: Instruccion sscanf [C]
26 Febrero 2013, 19:14 PM
Oh muchas gracias! Ahora lo entiendo, entonces si quiero hacer que se ignoren caracteres en una lectura, los pongo en el scanf y ya se ignoran?
#4
Programación C/C++ / Instruccion sscanf [C]
26 Febrero 2013, 18:57 PM
Que tal, tengo una duda, estaba viendo un programa y tiene una comparacion muy rara (bueno para mi que soy nuevo en esto) miren


if (sscanf(q,"R%dC%d", &r,&c)==2)


por que compara la instruccion sscanf con un 2?

Y en esta otra:


scanf("%d\n", &n);


Por que pone un salto de linea despues del especificador de conversion?
#5
Wow rir quedo todo superclaro! Muchisimas gracias por tu respuesta! Saludos.
#6
Si espero que nos saquen de la duda :c ojala y sean tan amables de aclararnoslo.
#7
leosansan pero por que cuando declaro arreglos unidimensionales, aunque no los declare como const, si puedo compilar correctamente cuando paso los arreglos a parametros const de una funcion?
Asi mira:

#include <stdio.h>

void intenta_modificar_arreglo( const int b[] );

/* Inicia la ejecucion */
int main()
{
int a[] = { 1, 2, 10 };

intenta_modificar_arreglo( a );

printf( "%d %d %d\n", a[0], a[1], a[2] );

return 0;
} /* Fin de main */

/*------------------Definicion de funciones-----------------------*/
void intenta_modificar_arreglo( const int b[] )
{
b[0] /= 2;
b[1] /= 2;
b[2] /= 2;
} /* Fin de funcion intenta_modificar_arreglo */

Que es lo que pasa, por que en arreglos unidimensionales si se puede evadir la declaracion const y en los bidimensionales no?? Esa es mi duda???
#8
Hola que tal. Lo que pasa es que en este codigo:

/*Asignacion de valores en arreglos bidimensionales*/
#include <stdio.h>

/*Prototipos de funciones*/
void imprimir_arreglo( const int a[2][3] );

/*Inicia la ejecucion del programa*/
int main()
{
  int arreglo1[2][3] = { { 1, 2, 3 },
                         { 4, 5, 6 } };                         
  int arreglo2[2][3] = { 1, 2, 3, 4, 5 };
  int arreglo3[2][3] = { { 1, 2 }, { 4 } };
 
  printf( "Los valores en el arreglo 1 de 2 filas y 3 columnas son:\n" );
  imprimir_arreglo( arreglo1 );
 
  printf( "Los valores en el arreglo 2 de 2 filas y 3 columnas son:\n" );
  imprimir_arreglo( arreglo2 );
 
  printf( "Los valores en el arreglo 3 de 2 filas y 3 columnas son:\n" );
  imprimir_arreglo( arreglo3 );
 
  return 0;
}  /*Fin de main*/

/*Definiciones de funciones*/
void imprimir_arreglo( const int a[2][3] )
{
  int i;  /*Contador filas*/
  int j;  /*Contador columnas*/
 
  for (i = 0; i <=1; i++)
  {
    for (j = 0; j <= 2; j++)
    {
      printf( "%d ", a[i][j] );
    }
   
    printf( "\n" );
  }
} /*Fin de funcion imprime_arreglo*/


Cuando compilo de esa manera me da estos errores mi compilador:
Citar
ArreglosBidimensionales.c: In function 'main':
ArreglosBidimensionales.c:16:3: warning: passing argument 1 of 'imprimir_arreglo' from incompatible pointer type [enabled by default]
ArreglosBidimensionales.c:5:6: note: expected 'const int (*)[3]' but argument is of type 'int (*)[3]'
ArreglosBidimensionales.c:19:3: warning: passing argument 1 of 'imprimir_arreglo' from incompatible pointer type [enabled by default]
ArreglosBidimensionales.c:5:6: note: expected 'const int (*)[3]' but argument is of type 'int (*)[3]'
ArreglosBidimensionales.c:22:3: warning: passing argument 1 of 'imprimir_arreglo' from incompatible pointer type [enabled by default]
ArreglosBidimensionales.c:5:6: note: expected 'const int (*)[3]' but argument is of type 'int (*)[3]'

Pero cuando compilo quitandole el calificador de tipo const al prototipo y definicion de funciones es decir asi:

/*Prototipos de funciones*/
void imprimir_arreglo( int a[2][3] );

.......

/*Definiciones de funciones*/
void imprimir_arreglo( int a[2][3] )
{

Si puedo compilar correctamente.

Por que pasa eso? Por que en arreglos unidimensionales si puedo compilar con el calificador const y en los bidimensionales no? Alguien me puede ayudar con esta duda?
Por cierto uso el compilador GNU GCC.
Agradecimientos por adelantado.
#9
Ok consejo anotado DickGumshoe muchas gracias!
#10
Hola que tal! Vengo con otra pequeña duda. Solamente quisiera saber cual de los siguientes bloques de código es el mas apropiado u optimizado para leer dígitos y validarlos:

Este:

#include <stdio.h>

int main()
{
int a;

scanf( "%d", &a );

while ( a > 5 )
{
printf( "El numero debe ser menor a 5, ingresa otro: " );
scanf( "%d", &a );
}

printf( "Correcto!" );

return 0;
}


O este:

#include <stdio.h>

int main()
{
int a;

do
{
scanf( "%d", &a );

if ( a > 5 )
printf( "El numero debe ser menor a 5, ingresa otro: " );
} while ( a > 5 );

printf( "Correcto!" );

return 0;
}