Autor
|
Tema: ¿Algoritmo existente? (Leído 5,768 veces)
|
goto C
Desconectado
Mensajes: 20
|
error C2143: error de sintaxis : falta ';' delante de 'tipo'
error C2065: 'hasta' : identificador no declarado
error C2065: 'hasta' : identificador no declarado
error C2065: 'hasta' : identificador no declarado
EDITO: he quitado el const, pero da exactamente los mismos errores.
EDITO 2: amchacon, muy chula tu foto, es lo menos que podemos hacer por recordar a un genio al que nunca se le ha reconocido lo suficiente su trabajo y a quien no conoce esta sociedad en que vivimos, pero sí conoce a Steve Jobs, por ejemplo.
|
|
« Última modificación: 28 Julio 2013, 23:09 pm por goto C »
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
error C2143: error de sintaxis : falta ';' delante de 'tipo'
error C2065: 'hasta' : identificador no declarado
error C2065: 'hasta' : identificador no declarado
error C2065: 'hasta' : identificador no declarado
EDITO: he quitado el const, pero da exactamente los mismos errores. ¿Has probado el código literalmente o has hecho algun cambio? EDITO 2: amchacon, muy chula tu foto, es lo menos que podemos hacer por recordar a un genio al que nunca se le ha reconocido lo suficiente su trabajo y a quien no conoce esta sociedad en que vivimos, pero sí conoce a Steve Jobs, por ejemplo.
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! Aquí te dejo otro código. Trabaja las combinaciones sobre un vector de enteros, ya que es lo único que te hace falta. Hacer combinaciones sobre un vector de cualquier cosa es hacer combinaciones sobre los indices del vector... #include <stdio.h> #include <stdlib.h> #include <string.h> struct t_combinatoria { unsigned long **lista; unsigned long n_elementos; unsigned long longitud_elemento; }; typedef struct t_combinatoria t_combinatoria; void inicializar_combinatoria(t_combinatoria *c) { c->lista = NULL; c->n_elementos = 0; c->longitud_elemento = 0; } void finalizar_combinatoria(t_combinatoria *c) { unsigned long i; for(i = 0 ; i < c->n_elementos ; i++) c->lista = NULL; c->n_elementos = 0; c->longitud_elemento = 0; } unsigned long factorial(unsigned long n) { unsigned long ret = 1; while(n) ret *= (n--); return ret; } unsigned long n_sobre_k(unsigned long n, unsigned long k) { return (factorial(n) / factorial(k)) / factorial(n - k); } int combinaciones(t_combinatoria *datos,unsigned long elementos_conjunto, unsigned long elementos_combinacion) { static unsigned long indice = 0; static unsigned long elementos_fijados = 0; static unsigned long *aux = NULL; unsigned long i; if(!elementos_combinacion) return 0; if(indice == elementos_combinacion) { memcpy(*(datos ->lista + elementos_fijados ), aux , elementos_combinacion * sizeof(unsigned long)); elementos_fijados++; return 1; } /* si es la primera vez que llamamos a la funcion, reservamos memoria para la tabla de combinaciones */ if(!indice) { if(!(aux = (unsigned long *) malloc(elementos_combinacion * sizeof(unsigned long)))) return 0; datos->n_elementos = n_sobre_k(elementos_conjunto,elementos_combinacion); datos->longitud_elemento = elementos_combinacion; if(!(datos ->lista = (unsigned long **) malloc(datos ->n_elementos * sizeof(unsigned long *)))) { datos->n_elementos = 0; datos->longitud_elemento = 0; return 0; } for(i = 0 ; i < datos->n_elementos ; i++) { if(!(datos ->lista [i ] = (unsigned long *) malloc(datos ->longitud_elemento * sizeof(unsigned long)))) { int j; for(j = 0 ; j < i ; j++) datos->lista = NULL; datos->n_elementos = 0; datos->longitud_elemento = 0; return 0; } } for(i = 0 ; i < elementos_conjunto - elementos_combinacion + indice + 1; i++) { aux[indice] = i; indice++; combinaciones(datos, elementos_conjunto, elementos_combinacion); indice--; } aux = NULL; elementos_fijados = 0; indice = 0; } else { for(i = aux[indice - 1] + 1 ; i < elementos_conjunto - elementos_combinacion + indice + 1; i++) { aux[indice] = i; indice++; combinaciones(datos, elementos_conjunto, elementos_combinacion); indice--; } } return 1; } int main(int argc, char *argv[]) { unsigned long i,j,k; t_combinatoria comb; char *vocales = "aeiou"; for(i = 1 ; i <= 5 ; i++) { inicializar_combinatoria(&comb); combinaciones(&comb, 5 , i); for(j = 0 ; j < comb.n_elementos ; j++) { for(k = 0 ; k < comb.longitud_elemento ; k++) printf("%c",vocales [comb. lista[j ][k ]]); } finalizar_combinatoria(&comb); } return 0; }
Había visto un error que no existia... ¡Saludos!
|
|
« Última modificación: 29 Julio 2013, 12:29 pm por do-while »
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
goto C
Desconectado
Mensajes: 20
|
Amchacon, lo he compilado sin modificar absolutamente nada. Do-while, ya sé que lo único que me hace falta es "jugar" con las posiciones de los elementos del array, pero lo que no encuentro es el cómo combinarlos, es decir, un algoritmo que haga esas combinaciones sea cual sea el número de caracteres, y ahí es donde os pido ayuda. Os pongo aquí parte del código que es donde tengo los problemas, este código es, de todos los que he probado hasta la fecha, el que mejor funciona posiblemente y el que es más sencillo de comprender porque es el más corto. #include<stdio.h> #include<stdlib.h>
int main() { int numcarac, auxnumcarac, i, j, k, l=0, contador=1; //numcarac es el numero de caracteres del array carac y auxnumcarac el de caraccomb char carac[26], caraccomb[26]; //carac es el array con todos los caracteres, y caraccomb el array en el que iremos guardando las diferentes combinaciones de los caracteres de carac
//... pedimos datos por teclado, los guardamos y los mostramos para asegurarnos, esto funciona bien, comprobado, no lo pongo para no liar mas
//AQUI ESTA EL PROBLEMA: auxnumcarac=2;
for(i=0; i<numcarac; i++) { for(j=i; j<numcarac; j++) { for(k=0; k<auxnumcarac; k++) { caraccomb[l] = carac[j+k]; l++; }
//aqui mostramos caraccomb: printf("%s\n", caraccomb);
} auxnumcarac++; l=0; } Gracias y saludos. A ver si podéis orientarme un poco en el código este.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Detener sonido de un flash ya existente
Diseño Gráfico
|
SeniorX
|
2
|
5,453
|
17 Abril 2007, 17:05 pm
por eagle17
|
|
|
Eliminar algo ya existente en html?
Desarrollo Web
|
Cergath
|
3
|
3,616
|
2 Diciembre 2010, 14:57 pm
por Cergath
|
|
|
dime el algoritmo que más te gusta... ejm:algoritmo del avestruz
Programación General
|
jhonatanAsm
|
0
|
4,708
|
13 Mayo 2011, 01:30 am
por jhonatanAsm
|
|
|
Instalar W7 Conservando información ya existente en el pc.
Windows
|
Gea99
|
3
|
3,341
|
26 Febrero 2012, 16:04 pm
por dato000
|
|
|
append , . a un string existente
Programación C/C++
|
bash
|
1
|
2,136
|
12 Junio 2015, 04:29 am
por rir3760
|
|