Programación General > C/C++
Por qué no es portable este codigo?
(1/1)
Phas:
Por qué no es portable?
--- Código: C++ ---#include <iostream>#include <iterator>#include <vector>#include <algorithm> using namespace std;// Leer enteros por entrada y llevarlos a un vector e imprimir la salida. int main (){ cout << "Nota: Si introduce menos de 10 numeros, los restantes tendran valor cero"; cout << " hasta completar dicho tamanio." << endl; cout << endl << "Vaya introduciendo los numeros para un vector de tamanio 10."; cout << "Cuando se desee dejar de introducir numeros, presione <Ctrl+Z>." << endl << endl; vector<int> v(10); istream_iterator<int> in (cin); // Iterador de entrada ostream_iterator<int> out(cout, " "); // Iterador de salida, indica como quieres separar // El copy tiene 3 parametros, los dos primeros dos ITERADORES de la primera // estructura (origen) y otro ITERADOR para la estructura destino que nos dice // desde donde queremos empezar a copiar en la estructura destino copy (in, istream_iterator<int>(), v.begin()); // PRimer iterador, la entrada cin, segundo la marca de fin de fichero EOF, // y tercero desde donde queremos copiar cout << endl << endl << "El vector creado con el algoritmo generico copy es:" << endl << endl << "( "; copy (v.begin(), v.end(), out); cout << ")" << endl << endl; system("pause"); return 0;}
killrazor:
Como sabes que no es portable? lo has intentado portar? A que plataforma(s)? Te da un error algun compilador?
jormar arellano:
Todo tu código es portable... salvo la linea del final:
--- Código: C++ ---system("pause"); La función como tal si es portable, pero su ejecución esta muy relacionada con el entorno donde se ejecuta. Esta función NO pausa la ejecución del programa, lo que hace es ejecutar un comando del shell, y usar su valor de retorno. El código, tal y como esta, compilará en cualquier plataforma. Si lo corres en Window, no tendrás ningún inconveniente, ya que ese comando (pause) existe en la consola, y detiene la ejecución del programa con un mensajito.
Si lo corres en linux, lo único que obtienes es un mensaje de error (sh: pause: not found), ya que este comando no existe en el shell de este sistema operativo (lo más parecido es: read -p "Dale a una tecla..." ). Cabe destacar que tu programa NO ABORTA inesperadamente, sólo imprime un mensaje de error. Por ejemplo, en este programita:
--- Código: C++ --- #include <stdio.h>#include <stdlib.h> int main(){ system("pause"); printf("Esta linea también se imprime...n"); return 0;} ...imprime la siguiente salida (ejecutándolo desde una consola linux):
sh: pause: not found
Esta linea también se imprime...
Si realmente necesitas paralizar la ejecución del programa, usa una función como:
--- Código: C++ --- #include <stdio.h>...getchar();... ...o lee un caracter con "cin >> ..."
Navegación
Ir a la versión completa