Programación Dalí
De: enlace web
Definición de matriz bidimensional
La forma general de definición de matriz bidimensional es:
Nombre de matriz de descriptor de tipo [expresión constante 1] [expresión constante 2]
Entre ellos, la expresión constante 1 representa la longitud del subíndice de la primera dimensión y la expresión constante 2 representa la longitud del subíndice de la segunda dimensión. Por ejemplo:
int a[3][4];
muestra una matriz con tres filas y cuatro columnas. La matriz se denomina A y su variable de subíndice es un número entero. Esta matriz tiene 3×4 variables de subíndice* *, es decir:
Uno [0][0], uno [0][1], uno [0][2], uno [0] [ 3]
a[1][0], a[1][1], a[1][2], a[1][3]
a[ 2 ][0], a[2][1], a[2][2], a[2][3]
Conceptualmente, una matriz bidimensional es bidimensional, también Es decir es decir, su subíndice cambia en dos direcciones y la posición de la variable de subíndice en la matriz también está en un plano, no solo en un vector como una matriz unidimensional. Sin embargo, la memoria del hardware real se direcciona continuamente, es decir, las celdas de almacenamiento están dispuestas linealmente en una dimensión. Hay dos formas de almacenar matrices bidimensionales en una memoria unidimensional: una es organizarlas en filas, es decir, colocar una fila en la segunda fila en secuencia. El otro es ordenar por columnas, es decir, después de colocarlo en una columna, se coloca en la segunda columna.
En lenguaje C, las matrices bidimensionales se organizan en filas. Es decir, primero almacene una fila [0], luego almacene una fila [1] y finalmente almacene una fila [2]. Cada fila tiene cuatro elementos, que también se almacenan secuencialmente. Dado que la matriz A se describe como de tipo int y ocupa dos bytes de espacio de memoria, cada elemento ocupa dos bytes.
Los elementos de una matriz bidimensional también se denominan variables de doble subíndice y sus expresiones son las siguientes:
Nombre de la matriz [subíndice][subíndice]
donde el subíndice debe ser una constante entera o una expresión entera. Por ejemplo:
[3][4]
Representa tres filas y cuatro columnas de la matriz.
Las variables de subíndice y las descripciones de matrices son algo similares en forma, pero tienen significados completamente diferentes. La longitud de una determinada dimensión se proporciona entre corchetes en la descripción de la matriz, es decir, el valor máximo del objetivo que se puede tomar en el elemento de la matriz es el identificador de posición del elemento en la matriz. El primero sólo puede ser una constante y el segundo puede ser una constante, variable o expresión.
Ejemplo 1 Hay cinco personas en un grupo de estudio y cada persona tiene resultados de exámenes en tres cursos. Encuentre la puntuación promedio de todo el grupo y la puntuación promedio total de cada materia.
- ?Zhang? ¿rey? ¿ciruela? ¿Zhao? Semana
¿Matemáticas? 80 ?61 ?59 ?85 ?76
c? 75 ?65 ?63 ?87 ?77
Foxpro? 92 ?71 ?70 ?90 ?Ochenta y cinco
Puedes configurar una matriz bidimensional a[5][3] para almacenar las calificaciones de cinco personas en tres cursos. Luego configure una matriz unidimensional v [3] para almacenar los puntajes promedio de todos los sujetos y establezca el promedio variable en el puntaje promedio total de todos los sujetos en todo el grupo.
La programación es la siguiente:
#Contiene? ltstdio.h gt
int? principal(vacío){
int? I, j, s=0, promedio, v[3], a[5][3];
printf("¿Entrada? Puntuación\n ");
for ( I = 0;i lt3;i){
for(j = 0;j lt5;j){
scanf("d ", ampa[j][I] ) ;
s = s a[j][I];
}
v[I]= s/5;
s = 0;
}
¿Generales? =(v[0] v[1] v[2])/3;
printf("matemáticas: d\nc?idioma: d\ndbase: d\n ", v[0], v[1], v[2]);
printf("Total: d\n ",? ¿General?);
¿Regresión? 0;
}El bucle doble se utiliza por primera vez en el programa. En el bucle interno, las calificaciones de los estudiantes de un determinado curso se leen en secuencia y se acumulan. Después de salir del bucle interno, la puntuación acumulada se divide por 5 y se envía a v[i], que es la puntuación media de este curso. El bucle externo * * * se repite tres veces para obtener las puntuaciones promedio de los tres cursos y almacenarlas en la matriz V. Después de salir del bucle exterior, sume v[0], v[1] y v[2] y divida por 3 para obtener la puntuación promedio total de cada materia. Finalmente, los resultados se generan en función del significado de la pregunta.
Inicialización de una matriz bidimensional
La inicialización de una matriz bidimensional también asigna un valor inicial a cada variable de subíndice durante la descripción del tipo. A una matriz bidimensional se le puede asignar fila por fila de forma segmentaria o continua fila por fila.
Por ejemplo, para la matriz a[5][3]:
La asignación del segmento de línea se puede escribir como:
int a[5][ 3]={ {80 , 75, 92}, {61, 65, 71}, {59, 63, 70}, {85, 87, 90}, {76, 77, 85 } };
Asignación continua por fila Se puede escribir como:
int a[5][3]={ 80, 75, 92, 61, 65, 71, 59, 63, 70, 85, 87 , 90, 76, 77, 85 } ;
Los resultados de estos dos valores iniciales son exactamente iguales.
Ejemplo 2: Calcula la puntuación media y la puntuación total de cada materia.
#¿Incluir? ltstdio.h gt
int? principal(vacío){
int? I,j,s=0,? Valor medio, v[3];
int? a[5][3]={{80, 75, 92}, {61, 65, 71}, {59, 63, 70}, {85, 87, 90}, {76, 77, 85 } };
for(I = 0;i lt3;i){
for(j = 0;j lt5;j)
s = s a[j] [I];
v[I]= s/5;
s = 0;
}
Promedio = ( v [0] v[1] v[2])/3;
printf("matemáticas: d\nc?idioma: d\ndFoxpro: d\n ", v[0], v[ 1 ], v[2]);
printf("Total: d\n ",? promedio);
¿Regresión? 0;
}Para la asignación de inicialización de matrices bidimensionales, existen las siguientes instrucciones:
1) Solo a algunos elementos se les pueden asignar valores iniciales y a elementos sin valores iniciales automáticamente toma el valor 0.
Por ejemplo:
int a[3][3]={{1}, {2}, { 3 } }
Es para asignar un valor al elemento en la primera columna de cada fila, los elementos no asignados tienen el valor 0. Después de la asignación, el valor de cada elemento es:
1?0?0
2?0?0
3?0?0
int a [3][3]={{0, 1}, {0, 0, 2}, { 3 } };
El valor del elemento asignado es:
0?1?0
0?0?2
3?0?0
2) Si el valor inicial se asigna a todos los elementos, entonces es posible que no se proporcione la longitud de una dimensión. Por ejemplo:
int? a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}; se puede escribir como:
int? a[][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}; una matriz es un tipo de datos estructurados. Una matriz bidimensional se puede considerar como una matriz unidimensional anidada. Suponiendo que cada elemento de una matriz unidimensional es una matriz, se forma una matriz bidimensional. Por supuesto, la premisa es que cada tipo de elemento debe ser el mismo. Según este análisis, una matriz bidimensional también se puede descomponer en múltiples matrices unidimensionales. El lenguaje C permite esta descomposición.
Por ejemplo, la matriz bidimensional a[3][4] se puede descomponer en tres matrices unidimensionales, y sus nombres de matriz son:
a[0]
[1]
A
Estas tres matrices unidimensionales se pueden utilizar sin explicación adicional. Estas tres matrices unidimensionales tienen cuatro elementos. Por ejemplo, los elementos de la matriz unidimensional a[0] son A [0] [0], A [0] [1], A [0] [2] y Un [0][3]. Debe enfatizarse que a [0], a [1] y a [2] no se pueden usar como variables de subíndice. Son nombres de matrices, no simples variables de subíndice.