Dev - C++ - Problemas con Arreglos (Ayuda)

 
Vista:
Imágen de perfil de Nicole
Val: 20
Ha disminuido su posición en 7 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problemas con Arreglos (Ayuda)

Publicado por Nicole (7 intervenciones) el 08/09/2020 14:24:58
Estoy elaborando un programa que mande a almacenar en un arreglo 9 elementos de tipo entero, donde estoy teniendo problemas es en la parte que me pide almacenar primeramente las posiciones pares del arreglo en la matriz.

Ejemplo: (Los datos ingresados deben guardarse en esas posiciones en la matriz)

0 2 4
6 8 1
3 5 7

Y así es como llevo el código hasta el momento(La parte de las posiciones la tengo mala en el código).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define tam 3
 
bool existe(int a[9], int valor); //Prototipo de la funcion
 
int main() {
	    system("color 0E");
  //Aquí declaramos las variables
  int Arreglo[9];
  int Matriz [tam][tam];
  int i=0, f, c, x;
  int suma=0;
 
  //Mandamos a pantalla
  printf("---------------------------------------------------  \n");
  printf("Programa que muestra un Arreglo de 9 elementos");
  printf("\n\n");
 
  //Solicitamos al usuario que ingrese datos al Arreglo
  int valInput;
  x=0;
  while(x<9){
    printf("\n Por favor ingrese valor al Arreglo %i:  ",x+1);
    scanf("%i",&valInput);
    bool encontrado=existe(Arreglo,valInput);
    if(!encontrado) {
        Arreglo[x]=valInput;
        x++;
    } else {
      printf("\n *** El valor %i ya fue ingresado. ***\n",valInput);
    }
  }
 
  //Mandamos a imprimir los datos del Arreglo
  printf("\n Los elementos del arreglo son: \n");
  for(x=0; x<9; x++) {
    printf(" %i \t",Arreglo[x]);
  }
  printf("\n\n");
 
  //Ingresamos los datos del Arreglo a la Matriz
  for(f=0; f<tam; f++) {
    for(c=0; c<tam; c++) {
      Matriz[f][c] = Arreglo[i];
      i++;
    }
  }
 
   //Imprimimos los datos almacenados del Arreglo en la Matriz
    for(f=0; f<tam; f++) {
 
    //Sumamos las columnas de la Matriz
        suma=0;
        for(c=0; c<tam; c++){
            suma = suma + Matriz[f][c];
            printf("\t %i",Matriz[f][c]);
        }
    //Imprimimos en pantalla la suma de las filas
        printf(" | %i",suma);
        printf("\n");
    }
 
    //Mandamos a Pantalla
    printf("\t ---     ---     ---\n");
    //Sumamos las columnas de la Matriz
    for(c=0; c<tam; c++) {
        suma = 0;
 
        for(f=0; f<tam; f++)
            suma = suma + Matriz[f][c];
            printf("\t %i ",suma);
    }
 
  //Imprimimos los datos en las posiciones pares de la Matriz
  printf("\n Los elementos en las posiciones pares de la matriz");
  for(f=0; f<tam; f++) {
    bool filaPar;
    bool colmPar;
 
    filaPar = ((f%2)==0); //Calcula si el indice de la fila es par
    for(c=0; c<tam; c++){
        colmPar=((c%2)==0); //Calcula si el indice de la columna es par
        if(filaPar && colmPar) {
           //Imprime el elemento de la matriz si tanto la fila como la columna son pares
           printf("\n[%i][%i] : %i",f,c,Matriz[f][c]);
        }
    }
  }
 
  getch();
  return 0;
}
 
//Funcion que determina si el valor ya existe en el arreglo
bool existe(int a[9], int valor){
  bool ret=false;
  int i=0;
  while( i<9 && !ret) {
    if(a[i]==valor) ret=true;
    i++;
  }
  return ret;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problemas con Arreglos (Ayuda)

Publicado por Nacho (181 intervenciones) el 08/09/2020 15:02:13
Es que ese orden es el de las posiciones pares del arreglo y luego las impares, no de la matriz. En un arreglo unidimensional sí puede hablarse de posiciones pares, pero en una matriz....


1
2
3
4
5
while (k < 2)
    {
        for (int i = 0; i < 9-k; i++) if (i % 2 == 0) printf(" %i \t", Arreglo[i+k]);
        k++;
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar