Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ejercicio con vectores; ejercicio matrices URG!!!

Estas en el tema de Ejercicio con vectores; ejercicio matrices URG!!! en el foro de C/C++ en Foros del Web. Realice un algoritmo en C++ que calcule el producto de un escalar (valor constante) ingresado por el usuario con un vector de números reales leído ...
  #1 (permalink)  
Antiguo 21/11/2015, 11:15
 
Fecha de Ingreso: octubre-2015
Mensajes: 2
Antigüedad: 9 años, 2 meses
Puntos: 0
Ejercicio con vectores; ejercicio matrices URG!!!

Realice un algoritmo en C++ que calcule el producto de un escalar (valor constante) ingresado por el usuario con un vector de números reales leído desde un archivo de texto plano y su resultado (vector resultante) debe ser mostrado en consola.

Para este ya hice un codigo, pero tiene el problema de que al ejecutarlo me devuelve en consola, los una secuencia de los primeros numeros completando con ceros, y asì hasta llegar al ultimo número y con la respuesta

#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

double* crear_vector_double(int n){
return new double [n];
};

double leer_double(istream& is){
double a;
is >> a;
return a;
};

double* leervector_flujo(istream& is, double* x, int n){
for(int i = 0; i < n; i++){
x[i] = leer_double(is);
}
return x;
};

ostream& escribir_double(ostream& os, double a){
os << a;
os << '\n';
return os;
};

ostream& escribir_char(ostream& os, char a){
os << a;
os << '\n';
return os;
};

ostream& escribirvector_flujo(ostream& os, double* x, int n){
for(int i = 0; i < n; i++){
escribir_double(os, x[i]);
escribir_char(os, '\t');
}
return os;
};


int main()
{
int tamvec = 5;

ifstream ifs("vector.txt");

double* numeros = crear_vector_double(tamvec);

numeros = leervector_flujo(ifs, numeros, tamvec);

cout << "ingrese un numero para empezar a multiplicar" << endl;
double* mul = crear_vector_double(1);
mul = leervector_flujo(cin, mul, 1);

double operacion;

double* resultado = crear_vector_double(tamvec);

for(int i = 0; i < tamvec; i++){

operacion = mul[0] * numeros[i];
resultado[i]=operacion;
escribirvector_flujo(cout, resultado, i);

}

ifs.close();

return 0;
}


Desarrollar un algoritmo en C++ que dado un número entero y una matriz en un archivo de texto plano, cree una nueva matriz donde se reemplacen todos los números mayores al número dado por un uno (1) y todos los menores o iguales por un cero (0).
  #2 (permalink)  
Antiguo 21/11/2015, 12:56
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: Ejercicio con vectores; ejercicio matrices URG!!!

Código C++:
Ver original
  1. double* leervector_flujo(istream& is, double* x, int n){
  2. for(int i = 0; i < n; i++){
  3. x[i] = leer_double(is);
  4. }
  5. return x;
  6. };

double* x es un puntero, luego cualquier cambio que hagas sobre la memoria apuntada por x se verá reflejado fuera de la función... la instrucción return x; únicamente tiene sentido si piensas concatenar operaciones... por ejemplo:

Código C++:
Ver original
  1. escribirvector_flujo(cout,leecvector_flujo(cin,x,10),10);

Pero claro, este tipo de estructuras no tienen demasiado sentido tratándose de variables que no sean clases o estructuras con métodos propios... el return te lo puedes ahorrar. Esto mismo es aplicable a la escribirvector_flujo, escribir_doble y escribir_char. No tiene demasiado sentido que retornen algo.

Por otro lado no has de olvidar que siempre que escribas un new tienes que escribir el correspondiente delete. De lo contrario tu programa presentará fugas de memoria y eso, amigo mio, es un cáncer que se puede llegar a tragar toda la memoria de tu equipo con el tiempo.

Código C++:
Ver original
  1. for(int i = 0; i < tamvec; i++){
  2.  
  3. operacion = mul[0] * numeros[i];
  4. resultado[i]=operacion;
  5. escribirvector_flujo(cout, resultado, i);
  6.  
  7. }

Ahí estás escribiendo tamvec veces el vector resultado. El problema, aparte de imprimirlo más veces de las necesarias, es que estás sacando resultados intermedios... la llamada a la función imprimir debería estar fuera del bucle.

Un saludo
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: char, ejercicio, int, matrices, numero, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:59.