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

Dudas en 2 programas!!

Estas en el tema de Dudas en 2 programas!! en el foro de C/C++ en Foros del Web. Buenas! Soy estudiante de Ingenieria Industrial y este lunes tengo examen de Programación en C++ y tengo unos programillas donde tengo dudas. A ver si ...
  #1 (permalink)  
Antiguo 09/01/2010, 11:27
 
Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 14 años, 3 meses
Puntos: 0
Dudas en 2 programas!!

Buenas! Soy estudiante de Ingenieria Industrial y este lunes tengo examen de Programación en C++ y tengo unos programillas donde tengo dudas. A ver si podeis ayudarme!

1er PROGRAMA

Programa que lee valores de medidas de los 7 dias de la semana y los guarda en una tabla bidimensional.
Luego calcula el promedio de valores de las medidas del sabado.
Hay un error en la acción MaxMin pero no se de qué se trata:
invalid initialization of non-const reference of type 'double&' from a temporary of type '<unknown type>' in passing argument 2 of `double MaxMin(double (*)[10], double&, double&)'



#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;


const int DIAS_SEMANA=7;
const int MAX_MEDIDAS=10;

typedef double tMedidaSemana[DIAS_SEMANA][MAX_MEDIDAS];

double MaxMin(tMedidaSemana medidas,double& min,double& max);

int main(){
tMedidaSemana medidas;

cout<<"Introduce la cantidad de medidas por dia, como maximo "<<MAX_MEDIDAS<<" : "<<endl;
int N;
cin>>N;
for(int i=0;i<DIAS_SEMANA;i++){
cout<<"Introduce "<<N<<" valores del dia "<<i+1<<endl;
for(int j=0;j<N;j++){
cin>>medidas[i][j];
}
}
double suma=0;
for(int j=0;j<N;j++){
suma=suma+medidas[5][j];
}
MaxMin(medidas,min,max);

cout.precision(4);
cout<<"Medida media sabado: "<<suma/double(N)<<endl;
system("pause");
return 0;
}


double MaxMin(tMedidaSemana medidas,double& min,double& max){
min=1000;
max=0;
for(int j=0;j<MAX_MEDIDAS;j++){
if(mesures[5][j]<min){
min=medidas[5][j];
}
if(medidas[5][j]>max){
max=medidas[5][j];
}
}
}


2º PROGRAMA

ENUNCIADO: Crear un subprograma que dado una matriz indique si esta
compuesta solo por 1 y 2, y si hay mas numeros lo indique. En el original se trata de un cuadro de punto de cruz y los colores necesarios, por eso la tabla se llama PuntoCruz, yo lo he cambiado para no complicar la cosa.

DUDA: la duda está en la función BOOL. Éste modelo hecho con FOR me lo envió mi profesor y funciona pero yo anteriormente lo hice con WHILE y no funcionaba, no sé por qué. Mi modelo lo dejo después de éste segundo programa.

RESPUESTA PROFE: Creo que el problema es que pasas muchos parámetros como entranda de esta función. ¿Por qué i, j y trobat són variables? i , j són índices para explorar la tabla, no deben ser parámetros a ser modificados (fíjate que en tu main no los inicializas por lo que al entrar en la función pueden tener en principio cualquier valor)

#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;

const int N=100;
const int M=100;

typedef int PuntoCruz[N][M];

bool DetectaColores(PuntoCruz c,int x,int y){
for(int i = 0; i<x ; i++){
for (int j = 0; j<y ; j++){
if(c[i][j]!=1 && c[i][j]!=2){
return false;
}
}
}
return true;
}

int main(){
PuntoCruz c;
int i,j,x,y;
bool trobat=true;
cout<<"Introduce el tamaño del diseño:"<<endl;
cout<<"Alto:"<<endl;
cin>>x;
cout<<"Ancho:"<<endl;
cin>>y;
cout<<"Introduce 1 o 2 depende del color del punto del diseño"<<endl;
for(i=0;i<x;i++){
for(j=0;j<y;j++){
cin>>c[i][j];
}
}

if(DetectaColores(c,x,y)){
cout<<"Solo hay 1 y 2"<<endl;
}
else{
cout<<"Hay mas numeros que el 1 y el 2"<<endl;
}
system("pause");
return 0;
}



Mi modelo de BOOL con WHILE

bool DetectaColores(PuntoCruz c,int i,int j,int x,int y,bool& trobat){
while(i<x && trobat){
while(j<y && trobat){
if(c[i][j]!=1 && c[i][j]!=2){
trobat=false;
}
j++;
}
i++;
}
return trobat;
}

LO SIENTO POR EL TOCHO! jajaja Gracias

Última edición por Gyntonik; 10/01/2010 a las 12:09
  #2 (permalink)  
Antiguo 09/01/2010, 21:22
Avatar de BLIZNA  
Fecha de Ingreso: octubre-2006
Ubicación: Caracas
Mensajes: 49
Antigüedad: 17 años, 6 meses
Puntos: 1
Respuesta: Dudas en 2 programas!!

En el ejercicio #2.
Como te indica el profesor, usas variables sin declarar e inicializar.

Código C++:
Ver original
  1. // ¿Valor inicial de i?
  2. while(i<x && trobat){
  3.     // ¿Valor inicial de j?
  4.     while(j<y && trobat){
  5.         if(c[i][j]!=1 && c[i][j]!=2){
  6.             trobat=false;
  7.         }
  8.         j++;
  9.     }
  10.     i++;
  11. }

Usando while

Código C++:
Ver original
  1. bool DetectaColores(PuntoCruz c,int x,int y){
  2.     /*for(int i = 0; i<x ; i++){
  3.         for (int j = 0; j<y ; j++){
  4.             if(c[i][j]!=1 && c[i][j]!=2){
  5.                 return false;
  6.             }
  7.         }
  8.     }*/
  9.     int i = 0;
  10.     int j = 0;
  11.     while(i<x){
  12.         while(j<y){
  13.             if(c[i][j]!=1 && c[i][j]!=2){
  14.                 return false;
  15.             }
  16.             j++;
  17.         }
  18.         i++;
  19.     }
  20.     return true;
  21. }
__________________
-----------
BLIZNA

Etiquetas: programa
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 14:53.