› Foros › PC › Software libre
In file included from src/matriz_basico.cpp:9:
include/matriz_basico.h:30: error: new types may not be defined in a return type
include/matriz_basico.h:30: note: (perhaps a semicolon is missing after the definition of ‘matriz’)
include/matriz_basico.h:30: error: two or more data types in declaration of ‘CrearMatriz’
src/matriz_basico.cpp:19: error: expected constructor, destructor, or type conversion before ‘buscar’
struct elemento{
char c;
elemento *sig;
};
struct registro{
registro *sig;
elemento *c_ele;
};
struct matriz{
int filas,columnas;
registro *sig;
}
/**
* @brief Crea un tipo de dato Matriz
* @param m Crea la estructura interna del tipo de dato matriz.
* @param f Nº de filas con la que se creara la matriz
* @param c Nº de columnas con la que se creara la matriz
* @pre f y c deben de ser positivos
*/
void CrearMatriz(matriz& m,int f,int c);
....
....
void CrearMatriz(matriz& m,int f,int c){
if(f>0 && c>0 && m==0){//Probamos que no sean nº negativos ¿y que la matriz no este inicializada ya con otros valores.?
m.filas=f;//Guardamos el nº de filas y columnas
m.columnas=c;
registro *p_reg1=m.sig=new registro;//Empezamos a crear la estructura de la matriz
elemento *p_ele;
for(int i=0;i<f;i++){//Creamos los registros que se necesitan para hacer la matriz indicada
p_ele=p_reg1->c_ele=new elemento;
for(int j=1;i<c;i++){//Creamos los elementos que se necesitan para hacer la matriz indicada
p_ele->sig=new elemento;
p_ele=p_ele1->sig;
p_ele->sig=NULL;
}
p_reg->sig=new registro;
p_reg=p_reg->sig;
p_reg->sig=NULL;//Los valores NULL indican que ya no hay mas datos enlazados.
}
}
}
.....
#ifndef CADENAS_H_
#define CADENAS_H_
struct Cadenas{
char **cad;
int n;
int n_usados;
};
/**
* @brief Creamos el TDA. Por defecto crea un vector de 5 cadenas;
* @param c , TDA sobre el que se va a inicializar
* @pre c ha debido ser creado con anterioridad.
*/
void CrearCadenas(Cadenas& c);
/**
* @brief Indica el tamaño de la cadena
* @param m Cadena sobre la cual se va a conocer el tamaño
* @pre La cadena tiene que haber sido creada
* @return Devuelve el numero de cadenas dentro del TDA
*/
int SizeCadenas(const Cadenas& c);
/**
* @brief Añade una cadena al TDA
* @param c TDA sobre la cual se va insertar una nueva cadena
* @param nueva cadena que se va insertar en el TDA
* @pre nueva no puede estar vacia;c debe de existir
*/
void AddCadenas(Cadenas& c, const char *nueva);
/**
* @brief Indica el tamaño de una cadena del TDA
* @param m TDA sobre el cual se va realizar la consulta
* @param i numero de cadena que se va conocer el tamaño
* @pre i debe ser mayor que 0 y ser igual o menor que el número de cadenas usadas,m
* @return devuelve el tamaño de una cadena. En caso de que no cumpla con los pre devolvera un numero<0
*/
int LenCadenas(const Cadenas& m, int i);
/**
* @brief Averiguamos la cadena contenida en una posicion del TDA
* @param m TDA sobre el cuál vamos a realizar la consulta
* @param i Posicion de la cadena dentro del TDA
* @param out Extrae la cadena
* @pre i debe de ser mayor que 0 y ser igual o menor que el numero de cadenas usadas; out debe de existir.
*/
void GetCadenas (const Cadenas& m, int i, char *out);
/**
* @brief Elimina toda el TDA, liberando memoria
* @param m TDA que va a ser destruido
* @pre m debe de existir
*/
void DestruirCadenas(Cadenas& m);
#endif
#include <iostream>
#include "cadenas.h"
using namespace std;
void CrearCadenas(Cadenas& c){
c.n=5;//Por defecto pordemos almacenar 5 cadenas
c.n_usados=0;
c.cad=new char*[c.n];//Reservamos espacio para 5 cadenas
}
int SizeCadenas(const Cadenas& c){
return c.n;
}
void AddCadenas(Cadenas& c, const char *nueva){
if(c.n-c.n_usados>0){//Tenemos espacio para almacenar la cadena
c.n_usados++;
c.cad[c.n_usados]=new char[strlen(nueva)];//reservamos espacio para la nueva cadena
strcpy(c.cad[c.n_usados],nueva);//Copiamos la cadena
}
else{
Cadenas c_aux;
c_aux.n=c.n+5;//Se reserva espacio para 5 cadenas mas
c_aux.n_usados=c.n_usados+1;
c_aux.cad=new char*[c.n];
for(int i=0;i<c.n_usados;i++){
c_aux.cad[i]=new char[strlen(c.cad[i])];//Se reserva espacio para el tamaño de cada cadena
strcpy(c_aux.cad[i],c.cad[i]);//copiamos las cadenas
}
c_aux.cad[c_aux.n_usados]=new char[strlen(nueva)];//reservamos espacio para la nueva cadena
strcpy(c_cad.cad[c_aux.n_usados],nueva);//copiamos la cadena
//Llamamos a destruir Cadena
c=&c_aux;//Asignamos la direccion de un puntero al original
}
}
int LenCadenas(const Cadenas& c, int i){
if(i>=0 && i<=c.n_usados)//se comprueba que el cumple con las condiones para estar en el vector
return strlen(c.cad[i]);
else
return -1;
}
void GetCadenas(const Cadenas& c, int i, char *out){
if(i>=0 && i<=c.n_usados && out!=0)
out=&c.cad[i];
}
void DestruirCadenas(Cadenas& c){
if(c!=0){
for(int i=0;i<c.n_usados;i++)
delete[] c.cad[i];
delete[] c.cad;
}
}
src/cadenas.h:5: error: variable or field ‘CrearCadenas’ declared void
src/cadenas.h:5: error: ‘Cadenas’ was not declared in this scope
src/cadenas.h:5: error: ‘c’ was not declared in this scope
In file included from src/cadenas.cpp:2:
src/cadenas.h:5: error: variable or field ‘CrearCadenas’ declared void
src/cadenas.h:5: error: ‘Cadenas’ was not declared in this scope
src/cadenas.h:5: error: ‘c’ was not declared in this scope
src/cadenas.cpp:5: error: variable or field ‘CrearCadenas’ declared void
src/cadenas.cpp:5: error: ‘Cadenas’ was not declared in this scope
src/cadenas.cpp:5: error: ‘c’ was not declared in this scope
src/cadenas.cpp:11: error: expected ‘,’ or ‘...’ before ‘&’ token
src/cadenas.cpp:11: error: ISO C++ forbids declaration of ‘Cadenas’ with no type
src/cadenas.cpp: In function ‘int SizeCadenas(int)’:
src/cadenas.cpp:12: error: ‘c’ was not declared in this scope
src/cadenas.cpp: At global scope:
src/cadenas.cpp:15: error: variable or field ‘AddCadenas’ declared void
src/cadenas.cpp:15: error: ‘Cadenas’ was not declared in this scope
src/cadenas.cpp:15: error: ‘c’ was not declared in this scope
src/cadenas.cpp:15: error: expected primary-expression before ‘const’
pasteles escribió:struct elemento{
char c;
elemento *sig;
};
struct registro{
registro *sig;
elemento *c_ele;
};
struct matriz{
int filas,columnas;
registro *sig;
}
/**
* @brief Crea un tipo de dato Matriz
* @param m Crea la estructura interna del tipo de dato matriz.
* @param f Nº de filas con la que se creara la matriz
* @param c Nº de columnas con la que se creara la matriz
* @pre f y c deben de ser positivos
*/
void CrearMatriz(matriz& m,int f,int c);
....
include/matriz_basico.h:30: note: (perhaps a semicolon is missing after the definition of ‘matriz’)
src/matriz_basico.cpp:21: error: expected constructor, destructor, or type conversion before ‘buscar’