Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - snoopty

#41
Programación C/C++ / Re: Ciclo DO WHILE
8 Septiembre 2021, 03:26 AM
Eternal Idol, Mafus y Serapis : muchas gracias.
Se podría resumir, entonces, que una variable puede ser " afectada " de manera directa por una función ( isdigit ( Var ) ); , un objeto ( cout<< Var ..... ) un Bucle(for (int Var= 1; Var<= 20; Var++)), etc, etc ..... Pero por ejemplo un modificador ( o " stoi o stof son métodos o funciones ?? ) lo haría de manera indirecta :
/* Para la Variable " s " */
string s = "0.0176487659456789432558";
int i = stoi(s);
float f = stof(s);
cout << s << "\n" << i << "\n" << f << endl;
/* Esta diferenciación estaría mal ?? */
#42
Programación C/C++ / Ciclo DO WHILE
7 Septiembre 2021, 10:48 AM
Hola a todos ! Respecto del Código que pondré a Continuación, yo sí entiendo que el Ciclo se cumple mientras se cumpla la condición impuesta por el WHILE, y cuando no se cumpla el Código continúa con lo que uno escriba - y NO necesariamente vinculado al Ciclo DO WHILE ya finalizado .... Pero no entiendo porqué " n " tiene ingerencia fuera del Ciclo : SÍ puedo entenderlo porque fue declarada antes del DO  .... pero lo que no entiendo realmente es que la línea ( cout << "Valor: " << n << endl; ) sea válida, pues este cout<< está DEPENDIENDO del cin>> que está dentro del Ciclo, que ya finalizó.
Aquí, el Código =


#include <iostream>

using namespace std;

int main()
{
   int n = 0;
   do
   {
      cout << "Introduzca un numero entre 1 y 9: ";
      cin >> n;
   } while (!(n > 0 && n < 10));
   cout << "Valor: " << n << endl;
}
/* Gracias por leer el mensaje */
#43
Funcionó !!! Muchas gracias Eternal Idol !
#44
Hola ! Probé todo lo que me dijiste y no me arroja errores PERO el Código no hace lo que yo busco, que es " Forzar " a que el conteo no muestre un Nro debajo del otro desde 0 a 10; lo que busco es que el Ciclo FOR a partir del gotoxy que le doy, " muestre todo el cálculo dentro de la misma posición, es decir, QUE DIRECTAMENTE me aparezca sólo el número 10 en el gotoxy que yo le indique. 
Y de hecho lo logré cuando me apareció - sin las modificaciones que me sugeriste - el 16 únicamente en el gotoxy que propuse -, PERO no había caso como expliqué, de alterar los valores del FOR, y que me aparezca un nuevo valor.

Respecto del Visual C ++ no lo tengo instalado; Sólo tengo el Dev-C++ y en ninguna de las dos versiones instaladas arroja el error que mencionaste; aparece " el 16 " y no arroja ni Warning ni error.

Aquí el Código como quedó después de lo que me propusiste ( notá que SOLAMENTE el " 0 " respeta el gotoxy(3,19) .... debajo, desde el 1 hasta el 10 ningún valor respeta el gotoxy =

#include <iostream> 
#include <windows.h>

using namespace std;

void gotoxy(int x,int y)


     
    
     HANDLE hcon; 
      hcon = GetStdHandle(STD_OUTPUT_HANDLE); 
      COORD dwPos; 
      dwPos.X = x; 
      dwPos.Y= y; 
      SetConsoleCursorPosition(hcon,dwPos); 


int main()
{

   gotoxy(3,19);
/* {  En foro me dicen q quite esto */     
    
/* int i; En foro me dicen q quite esto */     
   for(   int i = 0;   i<=10;   /* En foro ... i = i + 1 */  ++i  )
   
   
/* gotoxy(3,19); En foro me dicen que lo ponga arriba del for */
      
/* { En foro me dicen q quite esto */      
             
            cout<<i<<endl;
               
        {
       
         
     return(0); 
   }
}

/* Gracias por reponderme */



 
#45
Hola Moderadores y Foreros !
Al siguiente Código le cambio valores al for(   int i = 0;   i<=10;   i = i + 1 ), pero me sigue dando 16 - previamente le dí valores al FOR para que sí me muestre x pantalla " 16 " ; lo increíble es que si es un problema de buffer, no entiendo porqué SÍ respeta que cambie las coordenadas a gotoxy(3,19); y los valores del FOR ..... no !!! cada vez que modifico y compilo. Les comento que tengo la última versión Dev-C++ Embarcadero y también la 5.11( será ése el conflicto ??? )
Aquí, el Código =
#include <iostream> 
#include <windows.h>

using namespace std;

void gotoxy(int x,int y)


     
    
     HANDLE hcon; 
      hcon = GetStdHandle(STD_OUTPUT_HANDLE); 
      COORD dwPos; 
      dwPos.X = x; 
      dwPos.Y= y; 
      SetConsoleCursorPosition(hcon,dwPos); 


int main()

{     
    
      int i;
     for(   int i = 0;   i<=10;   i = i + 1 )
   
   
               gotoxy(3,19);
      
      {
             
            cout<<i<<"\n";
               
        }
    
     return(0); 
    
}

/* Gracias por leer el mensaje */
#46
Arroja nuevamente error ( para Dev-C++ )
1 ) La sig línea en los tres casos =
/*f = stof(s.substr(0UI64, std::numeric_limits<float>::digits10+1)); // +1 por el punto decimal*/

error :
invalid suffix "UI64" on integer constant


2) rechaza a stod, stof y stold como no declaradas ( previamente ? )
#47
Cita de: Loretz en 25 Agosto 2021, 03:13 AM
Cada compilador implementa los tipos de punto flotante más o menos igual, aunque hay algunas peculiaridades (como el Visual Studio, que usa la misma representación para double que para long double).

Pueden ver en std::numeric_limits<T>::digits10
https://en.cppreference.com/w/cpp/types/numeric_limits/digits10

Por ejemplo:

Código (cpp) [Seleccionar]
#include <iostream>
#include <numeric>

int main()
{
    std::cout << "cantidad de digitos que pueden representarse sin redondeos ni desbordamiento :\n";
    std::cout << "float: " << std::numeric_limits<float>::digits10 << " digitos significativos.\n";
    std::cout << "double: " << std::numeric_limits<double>::digits10 << " digitos significativos.\n";
    std::cout << "long double: " << std::numeric_limits<long double>::digits10 << " digitos significativos.\n";
}



Gracias por responder, pero el Código arroja errores, al menos para " Dev-C++ " ;
puede ser que no hayas declarado la const ... static const int digits10; ( o quizás, según versión de C ++ ) static constexpr int digits10 ..... quizá también faltaba la librería " limits " ??????
#48
Gracias por responder.
Entonces, es definitivo el hecho de que " NO ES CORRECTA " la cantidad de decimales de tipo float ( según la Teoría, 7 decimales ) , double (15) y long double ( 19 ) que se puede mostrar como resultado de una operación ?
Aquí, vuelvo a ejemplificar con otro ejemplo que no hace lo que busco :
DE PASO te consulto porqué aproxima un Tipo int 2.8765 .... a 1 y no a 3 ( 1er cout )

Código (c++) [Seleccionar]

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
   

cout << fixed << setprecision(25) << 2.87654321345868745895256568974i << '\n';
   cout << fixed << setprecision(25) << 2.87654321345868745895256568974f << '\n';
   cout << fixed << setprecision(25) << 2.87654321345868745895256568974 << '\n';
   cout << fixed << setprecision(25) << 2.87654321345868745895256568974f << '\n';
   cout << scientific << setprecision(25) << 2.87654321345868745895256568974d << '\n';

   return 0;
}



/* Gracias por leer el mensasje */
#49
Cita de: BloodSharp en 22 Agosto 2021, 10:13 AM
Tenés un punto y coma de más al final del prototipo de la función que implementa el resto, sacáselo.


B#



Muchas gracias !!!!!
#50
Buenas noches a todos. Hice un programa, simplemente para comprobar la cantidad de cifras significativas que puedo mostrar para variables de tipo float, double y long double .... pero me encontré con dos sorpresas  - o a raíz de error mío, x supuesto - :
( por ejemplo para el tipo float )
1 - La teoría dice que C ++ acepta 7 Cifras significativas, pero muestro apróx. 14 y para ajustar y mostrar decimales después de los 14 rellena con ceros hasta completar el ancho pre - establecido
y ......
2 - definí una variable float p = 8.5361478025119782429925187 buscando a propósito que me restrinja  la variable a 7 decimales, cosa que no sucedió como dije antes PERO ADEMÁS muestra por pantalla correcyamente los primeros cuatro decimales, y luego rellena con números diferentes a la variable que definí como de tipo float .... Aquí, el Código =

Código (cpp) [Seleccionar]

#include <iostream>    
#include <iomanip>      
using namespace std;
int main ()

{

float p = 8.5361478025119782429925187;         // Una Variable de Tipo FLOAT, si no
                                // se le agrega ningún MODIFICADOR
                                // muestra, por defecto,
                                // 4 Cifras significativas ( Decimales )
                                // más 1 de Redondeo
                                  //
                                // Con MODIFICADOR de aumento de
    // Cifras significativas muestra
                              // 7 Cifras


/*double   d  =  3.14159265358979323846264;      // Lo mismo ocurre con una variable de
                              // tipo DOUBLE
      //
  // Con MODIFICADOR de aumento de
  // Cifras significativas muestra
                              // 15 Cifras


long double dd  =  3.14159265358979323846264;  // Lo mismo ocurre con una variable de
                              // tipo LONG DOUBLE
      //
  // Con MODIFICADOR de aumento de
  // Cifras significativas muestra
                              // 19 Cifras */
 
/*cout << f << endl;
/*cout << d << endl;  
cout << dd << endl;*/  

cout.precision(35);
cout << setw(35);
cout << p << endl;
cout << setw(35);
cout << fixed << p << endl;

return 0;

}


Si me pueden ayudar, muchas gracias


MOD: El código debe ir entre etiquetas de Código GeSHi