Título: Error no se declaró en este ámbito.
Publicado por: oriaj3 en 20 Mayo 2013, 13:34 pm
Error en esta función--> main.cpp:29:53: error: ‘puntos’ no se declaró en este ámbito. ¿Alguien tiene idea de la posible solución? /* * File: main.cpp * Author: jairo * * Created on 18 de mayo de 2013, 22:59 */ #include <cstdlib> #include <iostream> #include <stdio.h> #include <string> #include <stdlib.h> using namespace std; /* * */ int main(int argc, char** argv) { int matrizr [5][4]= {{1,2,5,1},{3,1,2,2},{2,3,3,2},{1,4,2,0},{4,2,0,3}}; int ce=0; int *pvector; pvector=matrizr[0]; //int puntuacion; cout<<"\nIntroduce el codigo del equipo: "; cin>>ce; //int puntuacion = puntos(matrizr,ce); cout<<"\nLa puntuación es "<<puntos(pvector, ce)<<"."; return 0; } int puntos(int *matriz, int codigoequipo){ int *pmatriz; pmatriz=matriz; int matrizc[5][4]; int puntuacion=0; for (int i=0; i<=5; i++){ for (int j=0; i<=4; j++){ int tam = i*4+j*4; matrizc[i][j]= pmatriz[tam]; } } for (int i=0; i<=5; i++){ for (int j=0; i<=2; j++){ if(matrizc[i][j]==codigoequipo && j==1){ if(matrizc[i][3]>matrizc[i][4]){puntuacion= puntuacion +3;} if(matrizc[i][3]=matrizc[i][4]){puntuacion= puntuacion +1;} } if(matrizc[i][j]==codigoequipo && j==2){ if(matrizc[i][3]<matrizc[i][4]){puntuacion= puntuacion +3;} if(matrizc[i][3]=matrizc[i][4]){puntuacion= puntuacion +1;} } } } return puntuacion; }
Título: Re: Error no se declaró en este ámbito.
Publicado por: leosansan en 20 Mayo 2013, 14:24 pm
Vuelve a colgar el código esta vez usando las etiquetas GeSHi ce C++, pegas el código en medio de las etiquetas que te salen, si no, no se entiende nada. Las matrices por ejemplo, tal como están, salen incompletas.
R Te adelanto que tienes duplicada la librería stdlib, es lo mismo que cstdlib y la string, ya que estas en C++ deberías ponerla como cstring.
Saluditos!. ..... ..(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Título: Re: Error no se declaró en este ámbito.
Publicado por: amchacon en 20 Mayo 2013, 14:33 pm
Tienes que poner un prototipo de la función antes del main: int puntos(int *matriz, int codigoequipo);
De esa forma el compilador sabe que existe la función aunque aún no la hayas definido todavía: /* * File: main.cpp * Author: jairo * * Created on 18 de mayo de 2013, 22:59 */ #include <cstdlib> #include <iostream> #include <stdio.h> #include <string> #include <stdlib.h> using namespace std; /* * */ int puntos(int *matriz, int codigoequipo); // Prototipo int main(int argc, char** argv) { int matrizr [5][4]= {{1,2,5,1},{3,1,2,2},{2,3,3,2},{1,4,2,0},{4,2,0,3}}; int ce=0; int *pvector; pvector=matrizr[0]; //int puntuacion; cout<<"\nIntroduce el codigo del equipo: "; cin>>ce; //int puntuacion = puntos(matrizr,ce); cout<<"\nLa puntuación es "<<puntos(pvector, ce)<<"."; return 0; } int puntos(int *matriz, int codigoequipo){ int *pmatriz; pmatriz=matriz; int matrizc[5][4]; int puntuacion=0; for (int i=0; i<=5; i++){ for (int j=0; i<=4; j++){ int tam = i*4+j*4; matrizc[i][j]= pmatriz[tam]; } } for (int i=0; i<=5; i++){ for (int j=0; i<=2; j++){ if(matrizc[i][j]==codigoequipo && j==1){ if(matrizc[i][3]>matrizc[i][4]){puntuacion= puntuacion +3;} if(matrizc[i][3]=matrizc[i][4]){puntuacion= puntuacion +1;} } if(matrizc[i][j]==codigoequipo && j==2){ if(matrizc[i][3]<matrizc[i][4]){puntuacion= puntuacion +3;} if(matrizc[i][3]=matrizc[i][4]){puntuacion= puntuacion +1;} } } } return puntuacion; }
Título: Re: Error no se declaró en este ámbito.
Publicado por: oriaj3 en 20 Mayo 2013, 15:00 pm
Muchísimas gracias amchacon lo mio no tiene perdón, pero como leve escusa estoy de exámenes y entre C++, programación orientada a objetos, sql y java, me estoy volviendo loco.
Título: Re: Error no se declaró en este ámbito.
Publicado por: amchacon en 20 Mayo 2013, 15:03 pm
Muchísimas gracias amchacon lo mio no tiene perdón, pero como leve escusa estoy de exámenes y entre C++, programación orientada a objetos, sql y java, me estoy volviendo loco.
Me da mí que ya lo sabías... Como entiendo esa sensación ;-) El 90% de los errores no es por ignorancia sino por despiste. Te lo digo por experiencia xD
Título: Re: Error no se declaró en este ámbito.
Publicado por: oriaj3 en 20 Mayo 2013, 19:44 pm
Dímelo que acabo de salir de un examen de c++, donde he devuelto un vector de estructuras en plan return vectorDeEstructuras;
en vez de hacerlo con new y declarando memoria dinamica :S
|