| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 25/08/2007 6:15 pm | | | Título: no puedo inicializar una matriz |
| Hola quiero ingresar una matriz, con sus valores para luego trabajar con ella, utilizo los comandos que he encontrado en diversos sitios pero no me resulta, lo que hago es esto:
#include <stdio.h>
int main() { char cliente1; char cliente2; printf ("\nIntroduzca al primer cliente: "); cliente1=getche(); printf ("\nIntroduzca al segundo cliente:\n "); cliente2=getche();
int matriz[2],[2]={ {1,2}, {3,4} };
system ("pause"); return 0; }
pero al compilar me arroja error en la linea int matriz[2],[2], no se que pasa, me pueden ayudar por favor.  |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 25/08/2007 7:14 pm | | | Título: |
| Cuando declaras el array tienes una coma de mas, esta es la causa del mensaje de error, deberia ser:
| Código: | int matriz[2][2] = { {1, 2}, {3, 4} }; |
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 25/08/2007 7:22 pm | | | Título: no puedo inicializar una matriz |
| Hola, le quite la coma pero el error continua.
Gracias |
|
| Volver arriba | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 25/08/2007 7:30 pm | | | Título: |
| No deberia emitir tu compilador un mensaje de error, al menos no en relacion con esa declaracion.
¿Cual es el texto exacto de ese mensaje?
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 25/08/2007 7:36 pm | | | Título: no puedo inicializar una matriz |
| En la primera pestaña aparece:
line Unit Message
14 untitled2.c parse error before `int'
y en la otra pestaña aparece:
Link
gcc: c:\documents and settings\claudio\mis documentos\programas en c_dev-c\primera tarea\untitled2.o: No such file or directory gcc: file path prefix `C:\DEV-C_~1\Bin\' never used
gcc: c:\documents and settings\claudio\mis documentos\programas en c_dev-c\primera tarea\untitled2.o: No such file or directory gcc: file path prefix `C:\DEV-C_~1\Bin\' never used
uso la version 4 de Dev-C si eso ayuda en algo. |
|
| Volver arriba | |
 |
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 25/08/2007 8:14 pm | | | Título: no puedo inicializar una matriz en dev-c |
| | Qué paso, un amigo lo trato de compilar y tampoco le corrió. |
|
| Volver arriba | |
 |
|
rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 25/08/2007 8:50 pm | | | Título: |
| El problema con tu programa (y posiblemente la causa del error) es que este contiene otros errores como la falta de headers (archivos de inclusion) y otros detalles, pero la declaracion del array tal como te indique es correcta.
Intenta con este programa, debe de compilar y ejecutarse sin problemas:
| Código: | #include <stdio.h>
int main(void) { int matriz[2][2] = { {1,2}, {3,4} }; int i, j; for (i = 0; i < 2; i++){ for (j = 0; j < 2; j++) printf("%3d", matriz[i][j]); putchar('\n'); } return 0; } |
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 25/08/2007 9:12 pm | | | Título: Me compila bien |
| El programa que me enviaste se ejecuta sin problemas, voy a revisar los detalles que me dices aunque no los entiendo bien.
Gracias que estes bien |
|
| Volver arriba | |
 |
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 25/08/2007 9:50 pm | | | Título: para completar |
| me puse a probar que parte del código estaba mala y me di cuenta de algo:
este código funciona bien, fui borrando cosas hasta que compilara:
#include <stdio.h>
int main(void) { char cliente1; char cliente2; int matriz[2][2] = { {1,2}, {3,4} }; system ("pause"); return 0; }
y este otro código también esta bien:
#include <stdio.h>
int main(void) { char cliente1; char cliente2; printf ("\nIntroduzca al primer cliente: "); cliente1=getche(); printf ("\nIntroduzca al segundo cliente:\n "); cliente2=getche(); printf ("\n\n\nLos clientes que ingresan al sistema son:\n %c,%c",cliente1,cliente2); system ("pause"); return 0; }
El código completo es:
#include <stdio.h>
int main(void) { char cliente1; char cliente2; printf ("\nIntroduzca al primer cliente: "); cliente1=getche(); printf ("\nIntroduzca al segundo cliente:\n "); cliente2=getche(); printf ("\n\n\nLos clientes que ingresan al sistema son:\n %c,%c",cliente1,cliente2); int matriz[2][2] = { {1,2}, {3,4} }; system ("pause"); return 0; }
Hay una incompatibilidad entre estas dos partes del código:
printf ("\nIntroduzca al primer cliente: "); cliente1=getche(); printf ("\nIntroduzca al segundo cliente:\n "); cliente2=getche(); printf ("\n\n\nLos clientes que ingresan al sistema son:\n %c,%c",cliente1,cliente2);
y esta parte:
int matriz[2][2] = { {1,2}, {3,4} };
por qué puede ocurrir esto????????????
Gracias[/b] |
|
| Volver arriba | |
 |
|
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 25/08/2007 9:55 pm | | | Título: otra cosa más curiosa |
| probé todo el código de nuevo pero al revés declare la matriz antes que las otras variables y me compilo sin problemas:
#include <stdio.h>
int main(void) {
int matriz[2][2] = { {1,2}, {3,4} };
char cliente1; char cliente2; printf ("\nIntroduzca al primer cliente: "); cliente1=getche(); printf ("\nIntroduzca al segundo cliente:\n "); cliente2=getche(); printf ("\n\n\nLos clientes que ingresan al sistema son:\n %c,%c",cliente1,cliente2); system ("pause"); return 0; }
por qué puede ser esto???? |
|
| Volver arriba | |
 |
rir3760

Registrado: 01 Oct 2004 Mensajes: 3841 Ubicación: Mexico
| Publicado: 26/08/2007 7:43 am | | | Título: |
| Eso sucede porque estas compilando tu codigo fuente como C segun su estandar de 1990 (ISO-C90), segun este no es valido intercalar declaraciones y sentencias, un ejemplo de esto es tu primer programa donde la declaracion del array es correcto pero no esta en un lugar valido:
| Código: | #include <stdio.h>
int main() { char cliente1; /* Declaracion, OK */ char cliente2; /* Declaracion, OK */ /* ** En C90 una vez que se encuentra una sentancia ** como esta: */ printf ("\nIntroduzca al primer cliente: "); /* ** Lo que sigue solo pueden ser sentencias: */ cliente1 = getche(); /* OK pero falta incluir conio */ printf ("\nIntroduzca al segundo cliente:\n "); /* ... */ /* ** No es valido intercalar sentencias con declaraciones ** como la siguiente, esta es correcta en su forma pero ** no es valida debido a su ubicacion: */ int matriz[2][2]={ {1,2}, {3,4} }; /* ... */
|
En resumen en C90 tienes que colocar en cada bloque primero todas las declaraciones y a continuacion de estas las sentencias como las asignaciones, bucles, etc.
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
|
| Volver arriba | |
 |
CArce
Registrado: 25 Ago 2007 Mensajes: 9
| Publicado: 26/08/2007 1:51 pm | | | Título: Gracias por la ayuda |
| Muy bien gracias, soy nuevo en esto y toda ayuda es muy bien recibida.
Gracias
Claudio. |
|
| Volver arriba | |
 |
|
|