Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: kufanda en 27 Septiembre 2022, 22:12 pm



Título: no se como hacer este ejercicio de c++
Publicado por: kufanda en 27 Septiembre 2022, 22:12 pm
Se desea realizar un programa que permita organizar los dueños de 10 de manzanas de un barrio
privado (Codificadas de 1 a 10), y de los 5 lotes de cada una de ellas (codificados de 0 a 4).
Organizar  un arreglo  adecuado  para poder almacenar estos  datos y  teniendo  en cuenta lo  
siguiente:
Se ingresarán los datos de aquellos lotes ya vendidos: (Estos datos no tienen ningún orden) De
cada uno de ellos se ingresará:
- El número  de  manzana (codificada de 1 a 10)
- El número de lote (codificado de 0 a 4)
- El número identificatorio del propietario  (Número entero positivo)
Tener en cuenta que no todos los lotes podrían estar vendidos.
  
Después de haber cargado estos datos realizar un proceso para lograr lo siguiente:
1)   Mostrar  de  cada  manzana,  de  cada  lote,  un  mensaje  indicando  si  el  mismo  ha  sido  vendido  
 o no y en caso de haber sido vendido la identificación de dueño.
2)  De cada manzana la cantidad de lotes que aún no fueron vendidos.

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6. int barrio[10][4] = {};
  7. int i,j;
  8. int manzana,lote;
  9. char seguir = ' ';
  10.  
  11. while (seguir != 'n') {
  12. cout << "Numero de manzana (0-9): ";
  13. cin >> manzana;
  14. cout << "Numero de lote (0-3): ";
  15. cin >> lote;
  16. barrio[manzana][lote] = 1;
  17. cout << "Continuar [s/n]: ";
  18. cin >> seguir;
  19. }
  20.  
  21. //Visualizar datos
  22. cout << endl;
  23. for (i=0; i<10; i++) {
  24. for (j=0; j<4; j++)
  25. cout << barrio[i][j] << " ";
  26. cout << endl;
  27. }
  28.  
  29. return 0;
  30. }

MOD: Mensaje modificado para agregar el código correspondiente


Título: Re: no se como hacer este ejercicio de c++
Publicado por: MCKSys Argentina en 27 Septiembre 2022, 22:53 pm
Hola!

Necesitas mostrar los avances que tienes y plantear dudas concretas en base a los mismos.

Recuerda que en este foro, no se hacen tareas.

Saludos!


Título: Re: no se como hacer este ejercicio de c++
Publicado por: kufanda en 1 Octubre 2022, 22:25 pm
hola buenas, ya hice una parte y quiero volver a publicar el ejercicio en donde me quede y no pude avanzar. Quisiera saber si podes borrar el posteo y hago uno nuevo donde tenga el codigo


Título: Re: no se como hacer este ejercicio de c++
Publicado por: Mr.E en 2 Octubre 2022, 20:34 pm
Que tal, aquí un pequeño algoritmo para el problema planteado, se realizo con un arreglo bidimensional mejor conocido como matriz de 10x5, funciona para lo que quieres, solo le falta validar si el usuario ingresa un valor pedido fuera del rango, ahí si te lo dejo a ti, de lo demás mientras ingreses lo requerido no hay falla, espero te sirva. ::)
Código
  1. #include<iostream>
  2. #include<conio.h>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.  
  8. int manzana = 0;
  9. int lote = 0;
  10. int manzanaLote[10][5]; //arreglo bidimencional (Matriz)
  11. char seguir = 'n';
  12. int contadorVendidos = 0;
  13.  
  14. //Llenamos el arreglo con ceros para indicar que estan vacios
  15. for(int i = 0; i < 10; i++){
  16. for(int j = 0; j < 5; j++){
  17. manzanaLote[i][j] = 0;
  18. }
  19. }
  20.  
  21. cout<<"LOS LOTES SE ENCUENTRAN SIN VENDER, Deseas vender un lote?  [s/n] : ";
  22. cin>>seguir;
  23.  
  24.  
  25. //Ingresamos y guardamos los datos
  26. while(seguir == 's'){
  27.  
  28.  cout<<"\nIngresa numero de manzana del [1 al 10]: ";
  29.  cin>>manzana;
  30.  cout<<"Ingresa numero de lote del [0 al 4]: ";
  31.  cin>>lote;
  32.  cout<<"Ingresa numero de propietario: ";
  33.  //guardamos el numero de dueño en el lote a ocupar
  34.  cin>>manzanaLote[manzana-1][lote];  
  35.  
  36.  cout<<"\nDeseas vender un nuevo lote [ s/n:  ] :  ";
  37.  cin>>seguir;
  38. }
  39.  
  40. cout<<"\n _________________LOTES____________________ ";
  41.  
  42. for(int i = 0; i < 10; i++){
  43. cout<<"\n";
  44. for(int j = 0; j < 5; j++){
  45.  
  46. //imprimimos manzana y lote
  47. cout<<"Manzana "<<(i+1)<<" Lote "<<j;
  48.  
  49. //Si el valor en la posicion [i][j] es 0, el lote esta sin vender
  50. //imprimimos "lote libre" y "dueño no hay"
  51. if(manzanaLote[i][j] == 0){
  52. cout<<"  lote libre, Dueno : no hay \n";
  53.  
  54. //De lo contrario imprimimos lote vendido y numero del dueño posicion [i][j] del arreglo
  55. }else cout<<" lote vendido, Dueno: "<<manzanaLote[i][j]<<"\n";
  56.  
  57. }
  58. }
  59.  
  60. cout<<"\n\n _________ Lotes sin vender por manzana _____________\n";
  61. //checamos cuantos lotes aun no se an vendido por manzana
  62. for(int i = 0; i < 10; i++){
  63. contadorVendidos = 0;
  64. for(int j = 0; j < 5; j++){
  65. if(manzanaLote[i][j] == 0){
  66. contadorVendidos++;
  67. }
  68. }
  69. //antes de cambiar a la siguiente manzana imprimimos cuantos faltan por vender
  70. cout<<"Lotes faltantes por vender en la manzana "<<(i+1)<<" ["<<contadorVendidos<<"]\n";
  71. }
  72.  
  73.  
  74. getch();
  75. return 0;
  76.  
  77. }
  78.  
  79. //Programa realizado po Mr.E
  80.  


Título: Re: no se como hacer este ejercicio de c++
Publicado por: K-YreX en 3 Octubre 2022, 22:55 pm
Por un lado, para @kufanda: Puedes modificar un mensaje ya publicado para agregar lo que consideres, como en este caso el código de tu programa.
El tema duplicado con el código ha sido eliminado y dicho código ha sido agregado al primer mensaje de este tema.

Por otro lado, para @Mr.E: Evitemos hacer la tarea a otros usuarios.
Aunque haya aportado algo de código, la respuesta es demasiado "completa" en comparación.
El objetivo es guiar al usuario para que consiga hacer él mismo el programa, no dárselo hecho.


Y por dejar algún comentario a la solución:
  • No utilizar la cabecera <conio.h>. La función 'getch()' se puede sustituir por 'cin.get()' (que se encuentra en <iostream> para C++) o por 'getchar()' (que se encuentra en <stdio.h> para C)
  • No utilizar Magic Numbers (https://en.wikipedia.org/wiki/Magic_number_(programming)): Hace el código más difícil de entender y de escalar.
  • La variable 'contadorVendidos' indica justo lo contrario a lo que representa su nombre...
  • Declarando la matriz de la siguiente manera se hacen innecesarios los bucles para inicializarla:
Código
  1. int manzanaLote[10][5] = {0};


Título: Re: no se como hacer este ejercicio de c++
Publicado por: Mr.E en 6 Octubre 2022, 02:23 am
Si comprendo, muchas faltas, evitare hacer mas publicaciones.