Error no se declaró en este ámbito.

Iniciado por oriaj3, 20 Mayo 2013, 13:34 PM

0 Miembros y 1 Visitante están viendo este tema.

oriaj3

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?

Código (cpp) [Seleccionar]
/*
* 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;
}
Código (actionscript-french) [Seleccionar]

leosansan

#1

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!. ..... ..

amchacon

Tienes que poner un prototipo de la función antes del main:

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
/*
* 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;
}
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

oriaj3

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.

amchacon

Cita de: 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.
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
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

oriaj3

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