• Domingo 5 de Mayo de 2024, 22:48

Autor Tema:  Varias Preguntas  (Leído 1623 veces)

y0mism0

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Varias Preguntas
« en: Domingo 26 de Noviembre de 2006, 04:29 »
0
HOla!

1. En primer lugar tengo una duda con los arrays. Porque no se puede poner esto
"int cad[]={1}" y si esto "int cad{1, 7}" ? (el primero es un vector y el segundo una matriz).
Cuando hay que asiganarle una cantidad de memoria fija a los arrays y cuando no hace falta, por ej cad[10]??? cuando puedes hacer esto "cad[]" o "cad[][]"??

2. porque no puedes hacer esto:?
#define MAX 5
typedef int a[MAX];
int a[MAX];
if(2<MAX)

Por ej, ninguna de estas 3 intrucciones me funciona, el compilador me dice que esta "missing..". No lo entiendo, si se supone q el preprocesador sustitye los el valor de MAX por 5 en todas las intrucciones.

Lo mismo, porque esto no me imprime 8?
#define HOLA 8
printf("HOLA");
porque esto si:
printf("%s",HOLA);

4. que quiere decir el compilador cuando te da un error de "Lvalue"?

Saludos.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Varias Preguntas
« Respuesta #1 en: Domingo 26 de Noviembre de 2006, 10:27 »
0
Cita de: "y0mism0"
1. En primer lugar tengo una duda con los arrays. Porque no se puede poner esto
"int cad[]={1}" y si esto "int cad{1, 7}" ? (el primero es un vector y el segundo una matriz).

Lo primero si funciona; lo segundo no tiene sentido y parece al compilador la definicion de una funcion.

Cita de: "y0mism0"
2. porque no puedes hacer esto:?
#define MAX 5
typedef int a[MAX];
int a[MAX];
if(2<MAX)

Estas volviendo a definir a ... a es un tipo y estas tratando de definir una variable con ese tipo. Es como si hicieras int int ... y te falta el codigo para la comprobacion. Si cambias int a[MAX] por otra cosa que no sea a funciona perfectamente.

Cita de: "y0mism0"
Lo mismo, porque esto no me imprime 8?
#define HOLA 8
printf("HOLA");
porque esto si:
printf("%s",HOLA);

El texto entrecomillado no es reemplazado por el preprocesador. Entonces "HOLA" sigue siendo "HOLA".

Cita de: "y0mism0"
4. que quiere decir el compilador cuando te da un error de "Lvalue"?

Tendrias que poner exactamente cual es el error (si es el output del compilador mucho mejor).

http://en.wikipedia.org/wiki/Lvalue

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Varias Preguntas
« Respuesta #2 en: Domingo 26 de Noviembre de 2006, 16:55 »
0
Cita de: "y0mism0"
HOla!

1. En primer lugar tengo una duda con los arrays. Porque no se puede poner esto
"int cad[]={1}" y si esto "int cad{1, 7}" ? (el primero es un vector y el segundo una matriz).
Tal como dice Eternal, lo primero debe funcionar.

Cita de: "y0mism0"
Cuando hay que asiganarle una cantidad de memoria fija a los arrays y cuando no hace falta, por ej cad[10]??? cuando puedes hacer esto "cad[]" o "cad[][]"??
Si no sabes de antemano cuántos elementos vas a necesitar en el array, lo mejor es no declarar su tamaño y manipularlo dinámicamente en el programa. Si estás seguro de que tendrás como máximo N elementos en el array, y van a estar presentes durante la mayor parte de la ejecución del programa, entonces es conveniente definir el tamaño de manera "fija" (estáticamente).

Cita de: "y0mism0"
4. que quiere decir el compilador cuando te da un error de "Lvalue"?
Normalmente se deberá a que estás intentando modificar el valor de algún elemento que no puede ser modificado, aunque mejor hazle caso a Eternal y coloca la salida de error del compilador).

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

y0mism0

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Varias Preguntas
« Respuesta #3 en: Lunes 27 de Noviembre de 2006, 01:33 »
0
Respecto a la pregunta 1, la escribi mal. Queria decir, que por que se puede poner esto: "int cad[]={1}" o esto "int cad[]"  y no esto "int cad[][]" o esto "int cad[][]={1,2}" ?
Por eso preguntaba tambien, que cuando se pueden dejar los arrays sin poner el tamaño completo, y cuando no. En este caso si pongo "int cad [8][8]", si me funciona. Si lo dejo como lo puse, el compilador me marca este error "Size of the type is unknown or zero"...

Eternal Idol, no entiendo lo que me dijiste de que me falta el codigo para la comprobación.

Otra pregunta, porque no me deja poner "cad[j]=i^2" y si "cad[j]=i*i;" ?? Como esque el compilador no reconoce el caracter ^ de elevado?

Saludos.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Varias Preguntas
« Respuesta #4 en: Lunes 27 de Noviembre de 2006, 02:23 »
0
Cita de: "y0mism0"
Respecto a la pregunta 1, la escribi mal. Queria decir, que por que se puede poner esto: "int cad[]={1}" o esto "int cad[]"  y no esto "int cad[][]" o esto "int cad[][]={1,2}" ?
Por eso preguntaba tambien, que cuando se pueden dejar los arrays sin poner el tamaño completo, y cuando no. En este caso si pongo "int cad [8][8]", si me funciona. Si lo dejo como lo puse, el compilador me marca este error "Size of the type is unknown or zero"...
El tamaño del primer subíndice no es necesario, pero si todos los subsecuentes, por ejemplo, esto si lo puedes hacer:
Código: Text
  1.  
  2. int cad1[ ][ 10 ] = { 0... };
  3. int cad2[ ][ 5 ][ 5 ] = { 1, ... };
  4.  
  5.  

Cita de: "y0mism0"
Otra pregunta, porque no me deja poner "cad[j]=i^2" y si "cad[j]=i*i;" ?? Como esque el compilador no reconoce el caracter ^ de elevado?
Mmmh, aquí hay doble confusión. El compilador no debiera dar problemas para compilar eso, ¿qué error te da?. Y por otro lado en C/C++ no existe ningún operador para elevar un número a alguna potencia, ^ es el operador xor :P.

Saludos,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

y0mism0

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Varias Preguntas
« Respuesta #5 en: Lunes 27 de Noviembre de 2006, 03:42 »
0
ok.
Mira este programa:

#include<stdio.h>
#include<conio.h>
void main()
{
int a[]; //"Error: Size of a in unknown or zero"
int i;
for(i=0;i<10;i++)
a=i*2;
printf("%d",a);
}
POrque me da este error??


Otra cosa, alguna explicacion para que este programa me ejecute una instruccion no permitida y se me cierre?

#include<stdio.h>
void main()
{
int cad[10][10];
int i,j;
for(i=0;i<10;i++)
{

   for (j=0;j<10;j++)
   {
      scanf("%d",cad[1][1]);

}}}



Respecto a lo del ^, no me da ningun error, simplemente me devuelve unos valores distintos de si pongo i*i...  ^ es el operador de xor?? se puede utilizar en sentecias logicas dentro de if por ej??



Ah, y una ultima cosa, como podria hacer un programa que lea un entero de n cifras, y almacene sus cifras en un arreglo de n dimensiones? Lo estaba pensando hacer con divisiones entre 10 y conversiones de tipo para truncar, pero no me sale, alguna idea para aislar cada cifra y meterla en un array?



Saludos.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Varias Preguntas
« Respuesta #6 en: Lunes 27 de Noviembre de 2006, 08:15 »
0
Cita de: "y0mism0"
Eternal Idol, no entiendo lo que me dijiste de que me falta el codigo para la comprobación.
Código: Text
  1.  
  2. if(2&#60;MAX)
  3.  
  4.  

Teniendo solo ese codigo, sin completar el compilador da error.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.