es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué algunos números presentan decimales y otros no lo hacen?

#include

#pragma warning (disable:4996)

void citmat(float a[][100], int* m, int* n) {
printf(“nr linii =”);
scanf
s(“%d”, m);
printf(“\n”);
printf(“nr coloane =”);
scanf_s(“%d”, n);
printf(“\n”);

printf("Introduceti matricea: \n");
for (int i = 0; i < *m; i++) {
    for (int j = 0; j < *n; j++) {
        printf("x[%d][%d]=", i, j);
        scanf_s("%f", &a[i][j]);
    }
    printf("\n");
}

}

void ordonare(float a[][100], int m, int n) {
for (int i = 0; i < m; i++) {
int ok = 1;
while (ok) {
ok = 0;
for (int k = 0; k < n – 1; k++) {
if (a[i][k] > a[i][k + 1]) {
float aux = a[i][k + 1];
a[i][k + 1] = a[i][k];
a[i][k] = aux;
ok = 1;
}
}
}
}
}

void afis_mat(float a[][100], int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf(“%5.6f “, a[i][j]);
}
printf(“\n”);
}
}

void main() {
int m, n;
float a[100][100];
citmat(a, &m, &n);
ordonare(a, m, n);
printf(“Matricea cu liniile ordonate crescator arata astfel: \n”);
afis
mat(a, m, n);
}
“`
Hola chicos, cada vez que ingreso números decimales en esta matriz (como 1.23, 1.45, 5.44), en la consola, a través de la presentación de la matriz al final, solo algunos números tienen los decimales, mientras que otros pueden aparecer como 4.0000, a pesar de haber ingresado 4.55. ¿Qué podría causar este problema? No puedo entenderlo. El código aparece en Visual Studio 2019 por cierto.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema podría ser causado por el uso de variables enteras en la función ordonare(). Al intercambiar dos elementos de la matriz, la variable “aux” se declara como entero en lugar de flotante. Cambie “int aux = a[i][k+1]” a “float aux = a[i][k+1]” y “a[i][k+1] = a[i][k]” a “a[i][k+1] = aux” para asegurarse de que los valores flotantes se intercambian correctamente.

Comments are closed.