elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9
11  Programación / Programación C/C++ / Re: MAPAS : Código donde es necesario setear a Codeblocks con compilador para C++ 17 en: 8 Enero 2022, 18:53 pm
Gracias amigo; pero si has leído, no puedo hacer " 1 " si no tengo habilitado
Build Options dentro del menú Proyects .... entonces no puedo llegar a 4.
12  Programación / Programación C/C++ / Factorial de un Número : duda en: 8 Enero 2022, 18:28 pm
Hola ! Quisiera saber si es correcto que el sgte. código ( en el caso de calcular el factorial de 5 )
tiene 4 ( y no 5 ) Iteraciones ; pues pienso que " factorial = 1 x 1 " no sería la 1er Iteración,
ya que es un cálculo donde se están multiplicando dos Variables inicializadas en 1 ; pienso que
aún no comenzó " i " a incrementarse, por eso no sería una Iteración.
Sé que es algo contradictorio lo que digo, pues en " factorial = factorial x 1 " ,  el 2do factorial necesita munirse de ese " 1 con que fue inicializado " en la 1er Iteración para que comience a funcionar ++i;
sino, ¿ de dónde obtiene el primer uno el 2do factorial de la fórmula para ejecutar ( lo que yo
considero que es ) la 1er Iteración ??


Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main( )
  5. {
  6.  
  7. int numero;
  8.  
  9. int factorial = 1; // Se inicializa en " 1 " para que no dé siempre " 0 "
  10.  
  11.  
  12. cout << "\n\tIngrese el Numero cuyo FACTORIAL desea calcular : ";
  13. cin >> numero;
  14.  
  15.  
  16.  
  17. for ( int i = 1; i <= numero; i++ )
  18. {
  19.  
  20. factorial = factorial * i;
  21.  
  22. }
  23.  
  24. /*
  25.  
  26. Para 5!       =     V    A    R  ("acumulador")     ( i )
  27.                      factorial     de la VAR
  28.                                    factorial
  29.  
  30. Antes de i++  :     factorial   =      1       *      1      =>    factorial = 1    =>
  31.  
  32. 1er Iteración :     factorial   =      1       *      2      =>    factorial = 2    =>
  33.  
  34. 2da Iteración :     factorial   =      2       *      3      =>    factorial = 6    =>
  35.  
  36. 3er Iteración :     factorial   =      6       *      4      =>    factorial = 24   =>
  37.  
  38. 4ta Iteración :     factorial   =     24       *      5      =>    factorial = 120
  39.  
  40. */
  41.  
  42. cout << "\n\tEl FACTORIAL de " << numero << " es : " << factorial << endl;
  43.  
  44. return 0 ;
  45. }

Gracias x leer el mensaje.



  
13  Programación / Programación C/C++ / Re: MAPAS : Código donde es necesario setear a Codeblocks con compilador para C++ 17 en: 21 Diciembre 2021, 11:12 am
Gracias x responder
Es que no tengo habilitado " Build Options " en Proyect; cómo lo activo ? ( existiría la posibilidad de añadir -std=gnu++17 (ó) -std=c++17 desde otro menú ?? )
Desde Settings / Compiler / Compiler Settings sólo tengo la flag -std=C17, la tildé y no me lo compila.  
De lo otro; así es, como vos decís, "  auto& [ k, v ] "
14  Programación / Programación C/C++ / MAPAS : Código donde es necesario setear a Codeblocks con compilador para C++ 17 en: 20 Diciembre 2021, 08:23 am
Posiblemente consiguiera lo que busco si alguien me pudiera decir cómo setear correctamente Codeblocks 20.03 ( solamente para este archivo ) para compilar con C ++ 17 -- ya tengo instalada la ultima versión de MinGW, con ésta pude compilar de todo ....... hasta ahora.
Así como tengo seteado tanto Codeblocks como Dev C++ 5.11, este Código entra en un loop infinito.

Código
  1. #include <map>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main( )
  6. {
  7.  
  8. map < string, string > ciudades = { { "123", "Lima" },
  9.                                    { "234", "Tucson" },
  10.                                    { "345", "Buenos Aires" }
  11. };
  12.  
  13.  
  14. // 1  INSERTAR UN ELEMENTO, un "  PAIR : ' Tipo, Tipo '  ' Key, Value '  "
  15.  
  16. ciudades.insert ( pair < string, string > ( "1", "Moscu" ) ); // Recién después de ( 2 ) se Mostrará a Moscú como 1er Elemento
  17.                                                              // por tener su " Key " menor a las demás
  18.  
  19. ciudades.insert ( pair < string, string > ( "123", "Trujillo" ) );
  20.  
  21.  
  22. // 2  MOSTRAR X PANTALLA
  23. // I  " BUSCANDO " UN ELEMENTO MEDIANTE LA LLAVE
  24.  
  25. string key = "123";
  26.  
  27. cout << ciudades [ key ] << "\n"; // Mostrará " Lima " porque a Cada " Value " le corresponde una única " Key "
  28.  
  29.  
  30.  
  31. // II  RECORRIENDO EL MAPA ( Existen dos Posibilidades )
  32. // a ) La Forma más " Tradicional " =   map  Tipo, Tipo :: DECLARANDO UN ITERATOR ( Y LUEGO ) " FOR CON PUNTEROS EN COUT "
  33.  
  34. map < string, string > :: iterator it;
  35.  
  36. for ( it = ciudades.begin( ); it != ciudades.end( ); ++it ) // Los " ( ) "  ' especifican ' " LO QUE EXISTA AL COMIENZO
  37.                                                            // E INMEDIATAMENTE DESPUÉS ( x eso ' it != ' ) DEL FINAL ( "\0         " )
  38. {
  39.  
  40. cout << it -> first << " = " << it -> second << "\n";
  41.  
  42. }
  43.  
  44.  
  45. // b ) La forma más Fácil = "   AUTO&  ' Key  Value '  :  NombreDelMapa   "  ( Y LUEGO ) " FOR SIN PUNTEROS EN COUT "
  46. // ESTA FORMA SÓLO SE CONSIGE  S E T E A N D O  este archivo p q sea compilado con C++ 17
  47. // para aprovechar STRUCTURED BINDINGS de C++ 17
  48.  
  49. for ( auto& [k v] : ciudades )
  50. {
  51.  
  52. cout << k << " = " << v << "\n";
  53.  
  54. }
  55.  
  56. */
  57. //3 MODIFICAR UN ELEMENTO = NombreDelMapa " . " FIND ( " Key " )
  58.  
  59. map < string, string > :: iterator it2 = ciudades.find("123");
  60.  
  61. if ( it2 != ciudades.end( ))
  62. {
  63. it2 -> second = "Trujillo";
  64. }
  65.  
  66. for ( auto& [k v] : ciudades )
  67. {
  68.  
  69. cout << k << " = " << v << "\n";
  70.  
  71. }
  72.  
  73. // 4 ELIMINAR UN ELEMENTO = NombreDelMapa " . " ERASE ( " Key " )
  74.  
  75. ciudades.erase("1");
  76.  
  77. for ( auto& [k v] : ciudades )
  78. {
  79.  
  80. cout << k << " = " << v << "\n";
  81.  
  82. }
  83.  
  84.  
  85. return 0;
  86. }
  87.  

Gracias x leeer el mensaje.




15  Programación / Programación C/C++ / Re: Línea de Código : duda en: 18 Diciembre 2021, 02:51 am
A mí esa línea de código no me arroja error .... quizás te referís a declaración de errores inexactas de algún IDE; Qué IDE usas ? En Codeblocks 20.03 no tuve problemas .... y mirá que es bastante " sensible "
16  Programación / Programación C/C++ / Re: Línea de Código : duda en: 17 Diciembre 2021, 05:39 am
Gracias totales !
Excelente explicación.
Sólo te presento aquí algunas Notas para que leas sobre ( y que me digas si no estoy en lo
correcto en los casos en que fuere ) tu Segundo Código, luego de la antepenúltima Línea :

Código
  1. // Como dije antes, aunque las variables globales se inicializan a 0 por defecto, es mejor especificarlo para facilitar su lectura
  2. // Normalmente una variable sin inicializar se entiende que se le va a dar un valor concreto mas adelante y que no importa el valor
  3. // que tenga en este momento
  4. int variableGlobal = 0;
  5. const int CONSTANTE_GLOBAL = 0;
  6.  
  7. void func() {
  8.  int variableLocalFunc = 0;
  9.  
  10.  cout << "Variable global: " << variableGlobal << endl; // Como se llama en el main() despues de modificar el valor de variableGlobal -> Mostrara 10
  11. //  cout << "Variable local main: " << variableLocalMain << endl; // ERROR: La variable local de main() no es accesible desde aqui
  12. }
  13.  
  14. int main() {
  15.  // Una variable local no se inicializa a 0 por defecto. Por lo tanto es necesario inicializarla explicitamente (dado el caso)
  16.  // Al igual que antes, se puede dejar sin inicializar si se le va a dar un valor mas adelante (estando seguros de que no se va a usar esta variable antes de darle un valor)
  17.  // Lo de inicializar siempre todas las variables al momento de declararlas ya depende de gustos
  18.  int variableLocalMain = 0;
  19.  
  20.  variableGlobal = 10;
  21.  cout << "Variable global: " << variableGlobal << endl; // Muestra: "Variable global: 10"
  22.  
  23. //  constanteGlobal = 10; // ERROR: Es una constante -> No se puede modificar  = = = = Debo anular la Línea, entiendo que es coherente hacerlo.
  24. //  cout << "Constante global: " << constanteGlobal << endl; // Muestra: "Constante global: 0" = = = No muestra nada : Sólo arroja ERROR al compilar ( ? )
  25.  
  26.  
  27.  // CIERRE DE PROGRAMA :
  28.  // A C L A R A C I Ó N
  29.  // Cerrando así, con " func(); ", CODE devuelve = " variableGlobal = 10 " pues tiene en cuenta tanto los Cuerpos ' int main( ) ' como ' void func( ) '
  30.                                                 // " variableGlobal = 10 "
  31.  // P  E  R  O
  32.  // Si cerrara con " return 0; " , CODE devuelve = " variableGlobal = 10 " pues tiene en cuenta sólo el Cuerpo ' int main( ) '
  33.  
  34.  func(); // X supuesto q para cerrar con " getch (); " se comportará como con " return 0; " pero habrá que ' dar Cabecera de #include <conio.h> '
  35. }
17  Programación / Programación C/C++ / Re: Línea de Código : duda en: 16 Diciembre 2021, 05:54 am
Gracias x tu paciencia: Evidentemenete olvidé lo que me explicó Eternal Idol hace unas
semanas: que como " resultado " es una variable global, no hace falta inicializarla y por defecto
vale " 0 "
Ahora bien; reescribí el Código con todas Variables Locales, e inicializadas ( con excepción de " arreglo " pues espera que el usuario le ingrese Valores) : e igualmente funciona bien ......
Entonces, pues, si me podrías explicar si haber definido a "  ' resultado ' como Local y no Global " - aunque funcione bien el Código - sería un error conceptual ..... o en todo caso:
..... ¿ En qué caso/s específico/s es obligatorio definir a una variable como Global ?

Gracias y Saludos !



No hay ninguna operador sobrecargado, es una elemental suma de enteros entre una variable global y un elemento de un array cuyo resultado se asigna a la variable global.

Es exactamente igual a esto:
Código
  1. resultado += arreglo[a];

Me cito, cambia mayor por resultado.



Gracias : se me pasó que me lo habías recordado.
18  Programación / Programación C/C++ / Línea de Código : duda en: 15 Diciembre 2021, 07:34 am
La línea de código " resultado = resultado + arreglo[a] " no posee Operador + Sobrecargado,
cierto ? pues entiendo que no se está sumando un Elemento ( resultado ) del Array al mismo
Array ( arreglo[a] ) : Entonces, esto es lo que no entiendo ...... quizá si lo interpreto como   
" i = i + 1 " sea coherente ?? ; o entender que " si en resultado no hay ningún Valor, súmese a este un Valor del Array " (?) 

Código
  1. include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int a = 0; // Contador a 0
  6.  
  7. int resultado;
  8.  
  9. int cantidad; // Cantidad de Elementos del ARRAY
  10.  
  11.  
  12.  
  13. int main( )
  14. {
  15.  
  16. cout << "\n\tIngrese la Cantidad de N\243meros que desea Sumar :";
  17.  
  18. cin >> cantidad;
  19.  
  20.  
  21. int arreglo[ cantidad ]; // Nombre del ARRAY
  22.                         // Se declara pues será utilizado en el WHILE
  23.                         // reemplazando " a " POR " cantidad "
  24.  
  25.  
  26. while ( a < cantidad ) // Mientras el Nro de veces que se va a repetir ( " a " )
  27.                       // la cantidad de Nros ingresados SEA MENOR a la
  28.                       // " cantidad " de Elementos del ARRAY
  29.                       // ( ya q no queremos que se tenga en cuenta el " \0 " )
  30.  
  31.  
  32. {
  33.  
  34. cout << "\n\tIngrese un N\243mero :";
  35.  
  36.  
  37. cin >> arreglo[a];
  38.  
  39. a ++;
  40.  
  41. }
  42.  
  43. a = 0; // Se resetea el Contador pues será utilizado nuevamente
  44.  
  45.  
  46. while ( a < cantidad )
  47. {
  48. resultado = resultado + arreglo [a];
  49.  
  50. a ++;
  51.  
  52. }
  53.  
  54. cout << "\n\tEL RESULTADO DE LA SUMA DE TODOS LOS NUMEROS INGRESADOS ES :" << "" << resultado << endl;
  55.  
  56. return 0 ;
  57. }

Gracias x leer el Mensaje.
19  Programación / Programación C/C++ / Re: [C++] Matriz resultante bien calculada pero mal presentada en: 9 Diciembre 2021, 09:24 am
2da ) Respuesta : Enorme explicación. Clara y precisa. Gracias !
Respecto de la 1era ) veré entonces cómo resolverlo. Saludos !

Ya logré el formato de Salida correcto. Faltaban ciertas llaves, y .... :
Código
  1. for ( i = 0; i < fa; i++ ) // BUCLE para las Filas " i " de A
  2. {
  3. for ( j = 0; j < cb; j++ ) // BUCLE para las Columnas " j " de B
  4. {
  5.  
  6. cout << C[i][j] << " ";
  7. }
  8. cout << endl; // SALTO DE LÍNEA DEL FOR DE LAS FILAS
  9.              // p q quede un " blank " e/ la 1er FILA y la 2da
  10. }
  11. }

MOD: No hacer doble post: Modificar el mensaje anterior para agregar lo que se quiera.
20  Programación / Programación C/C++ / [C++] Matriz resultante bien calculada pero mal presentada en: 8 Diciembre 2021, 12:33 pm
Hola ! La sig Matriz C resultante del producto de A ( 2 Filas, 3 Columnas ) * B ( 3 Filas, 4 Columnas ) arroja los Valores correctos, pero no logro que la Matriz C salga por pantalla como debe ser, presentada bajo 2 Filas y 4 Columnas ya que es Condición del Producto entre dos Matrices que la Matriz Resultante tenga la misma cantidad de Columnas qude la 1 er Matriz ( Y )   la misma cantidad de Filas qude la 2 da Matriz .
//////
Por otra parte, si me explicaran porqué " el FOR de k " sólo tiene en cuenta las Columnas de A;
¿ No debería de haber a continuación " un FOR de k que recorra las Filas de " B " ????  
Lo digo porque:
"i" ( Y ) "j" recorren las Filas y Columnas de " C " ........ y ...
"k" realiza cada Operación recorriendo TANTO las Columnas de " A " ....
...... PERO TAMBIÉN las Filas de " B " !
El Comentario al lado " del FOR de k " lo tomé del razonamiento de quien explicó - súper didácticamente - el Código, pero, " que haya un único FOR de k " no lo entiendo

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main( ){
  5.  
  6.  short int fa, ca, fb, cb, i, j, k;
  7.  
  8.  cout << "Ingrese Nro de Filas de la 1er Matriz: ";
  9.  cin >> fa;
  10.  
  11.  cout << "Ingrese Nro de Columnas de la 1er Matriz: ";
  12.  cin >> ca;
  13.  
  14.  
  15.  cout << "Ingrese Nro de Filas de la 2da Matriz: ";
  16.  cin >> fb;
  17.  
  18.  cout << "Ingrese Nro de Columnas de la 2da Matriz: ";
  19.  cin >> cb;
  20.  
  21.  // DECLARACIÓN DE LAS TRES MATRICES
  22.  int A[fa][ca];
  23.  int B[fb][cb];
  24.  int C[fa][cb];
  25.  
  26.  
  27.  if ( ca == fb ) { // Si se cumple la Condición " 1 ) " del Producto e/ 2 Matrices se procede ...
  28.    // Ingresar Valores de la matriz A
  29.    cout << "\n\tIntroduzca los valores de la 1er Matriz: " << endl;
  30.  
  31.    for ( i = 0; i < fa; i++ ) // BUCLE para las Filas " i " de A
  32.      // " i < fa " Porque fa va desde fa[0] hasta fa[\0] x lo q a todas las Filas de A le " sobrará fa[\0] "
  33.      for ( j = 0; j < ca; j++ ) { // BUCLE para las Columnas " j " de A
  34.      // " j < ca " Porque ca va desde ca[0] hasta ca[\0] x lo q a todas las Columnas de A le " sobrará ca[\0] "
  35.        cout << "A["<<i<<"]["<<j<<"] :";
  36.        cin >> A[i][j];
  37.      }
  38.  
  39.    // Ingresar Valores de la matriz B
  40.    cout << "\n\tIntroduzca los valores de la 2da Matriz: " << endl;
  41.  
  42.    for ( i = 0; i < fb; i++ ) // BUCLE para las Filas " i " de B
  43.      for ( j = 0; j < cb; j++ ) { // BUCLE para las Columnas " j " de B
  44.        cout << "B["<<i<<"]["<<j<<"] :";
  45.        cin >> B[i][j];
  46.      }
  47.  
  48.    // Cálculo de la Matriz C = A * B  ( C conformada a partir de Filas de A ( Y ) Columnas de B
  49.    for ( i = 0; i < fa; i++ ) // BUCLE para las Filas " i " de A
  50.      for ( j = 0; j < cb; j++ ) { // BUCLE para las Columnas " j " de B
  51.        C[i][j] = 0;
  52.  
  53.        for ( k = 0; k < ca; k++ ) // PORQUÉ ????? sólo Col de A ...... y las Filas de B ? ; no era que k recorre ambas ??
  54.          C [i][j]  =  C [i][j]  +  ( A [i][k]  *  B [k][j] );
  55.      }
  56.  
  57.    cout << endl;
  58.  
  59.    for ( i = 0; i < fa; i++ ) // BUCLE para las Filas " i " de A
  60.      for ( j = 0; j < cb; j++ ) // BUCLE para las Columnas " j " de B
  61.        cout << C[i][j] << " ";
  62.  
  63.  } else cout << "\n\tLA MULTIPLICACIÓN ENTRE AMBAS MATRICES NO SE PUEDE REALIZAR" << endl;
  64.  
  65.  return 0;
  66. }

Gracias x leer el mensaje.



MOD: Modificado el asunto del tema. No escribir todo en mayúsculas.
MOD: Indentar el código para que sea legible.
Páginas: 1 [2] 3 4 5 6 7 8 9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines