|
3681
|
Programación / Programación C/C++ / Re: Copiar matrices en C
|
en: 17 Diciembre 2013, 15:22 pm
|
Explica el código. Además de la función, pon el código con un "main" donde te falle. Así sin más, no tengo ni idea de que hace cada variable.
Si tu idea es copiar una matriz a otra, a la función serviría con que le mandases las dos matrices asecas, y no todas esas variables que se le envían. Incluso, si quieres, mandarle también el número de filas y columnas.
En definitiva, revisa el código. Son demasiadas variables. Si no das arreglado, please, envía el código completo, así para saber donde falla, y testearlo con mayor celeridad.
|
|
|
3682
|
Programación / Programación C/C++ / Re: Ayuda con programa urgente!
|
en: 17 Diciembre 2013, 15:14 pm
|
void (*f[])() = {go_arriba, go_izquierda, go_derecha, go_abajo};
Para poder ordenar, metí todas las funciones en un array de funciones. Cuando se pone algo como: char (*ptrchar) (int); ptrchar = prueba; char prueba(int a){ //pasar funcion como parametro return (char)a;
ptrchar es un puntero a una función char. ¿Qué variables recibe sa función? "char (*ptrchar) (int);". En vez de int, podríamos poner (char, int[]), por ejemplo. En fin. Es la primera vez que uso en la práctica lo de puntero a funciones, así que no se si irá bien del todo jaja. Pero puedes echarle un vistazo
|
|
|
3686
|
Programación / Programación C/C++ / Re: Ayuda con programa urgente!
|
en: 16 Diciembre 2013, 20:22 pm
|
int a[4] = {arriba, izquierda, derecha, abajo}; void (*f[])() = {go_arriba, go_izquierda, go_derecha, go_abajo}; if(a[0] + a[1] + a[2] + a[3] > 0){ int primos = {2, 3, 5, 7}; int mayor=0; int temp=1; int cont=1; for(int i=0;i<4;i++) if(a[i] > mayor){mayor=a[i];temp=primos[i];} //Miramos cual es el mayor for(int i=0; i<4; i++) if(temp%primos[i]!=0 && a[i]==mayor){temp*=primos[i]; ++cont;} //Miramos cuales son iguales al mayor switch(cont){ case 1: for(int i=0;i<4;i++) if(temp%primos[i] == 0){(*f[i])();break;}break; case 2: //Aqui sería ver cuales son los elegidos, y elegir al azar cual usar. case 3: //idem } }
En fin, no se si tengo algún fallo por ahí. De ser así, y si te gusta el algoritmo, puedes corregirlo. Te dejo para, si lo usases, lo continues tú jaja EDITO: Los 4 for eran una posibilidad, pero preferí esa, que me pareció más rápida.
|
|
|
3688
|
Programación / Programación C/C++ / Re: Ayuda con programa urgente!
|
en: 16 Diciembre 2013, 19:04 pm
|
Perdona, que diga algo: Todos esos "if" los podrías cambiar por 1 único if dentro de un bucle de 4 "for". No se que algoritmo usaste, pero bueno, evitar hacer ese tipo de "copy&paste" es mejor. especialmente para la vista.
|
|
|
3689
|
Programación / Programación C/C++ / Re: Duda N00b de como separar una serie de casos
|
en: 16 Diciembre 2013, 19:00 pm
|
Aquí corregí el código: #include <iostream> #include <vector> using namespace std; const int MAX = 'z' - 'a' + 1; int cript(const vector<char>& Dic, char c) { for (int i = 0; i < MAX; ++i) if (c == Dic[i]) return i; return 0; } int main() { vector<char> Dic(MAX); while (true) { cout << "Ponga el diccionario:" << endl << " - "; for (int i = 0; i < MAX; ++i) cin >> Dic[i]; int cas; cout << "Ponga numero de lineas:" << endl << " - "; cin >> cas; for (int i = 0; i < cas; ++i) { string c; cin >> c; for(int j=0; j<c.length(); j++) if (c[j] == '_') cout << " "; else { int k = cript(Dic, c[j]); cout << char(k+ 'a'); } cout << endl; } cout << endl; } }
Puse un par de couts explicando lo que pid een cada caso. Ahora te explico: Tenías un "while(cin << c)". Eso hacía que no saliera del ciclo, y continuaba pidiendo caracteres. Te convertí 'c' e un string, y lo cambié un poco. Tenías 1 fallo, que erradicaba en un uso obligado de otro: Tenías: "for(int i= 1;i<MAX;i++) ..." Por ese motivo, tenias que poner "while(cin >> c[ 0])" Ese '0' se evita ponerlo, si le I del for la inicializas en 0. Ademásde cambiar eso, podrías quitar el while, o dejarlo como lo puse yo, para que pida infinitamente. (O lo que tu quieras) En fin, creo que eso es todo. Suerte.
|
|
|
3690
|
Programación / Programación C/C++ / Re: Duda N00b de como separar una serie de casos
|
en: 15 Diciembre 2013, 21:39 pm
|
En la imagen, no me explicas nada. Son 1 o 2 entradas diferentes?
Has probado a poner cout << endl << endl;? Quizás es lo que buscas.
PD:Se dice linea, no linia. Por favor, revisa lo que escribiste antes de postear, tienes muchas faltas. Usa signos de puntuación por favor.
|
|
|
|
|
|
|