Cita de: engel lex en 5 Octubre 2017, 01:07 AM
con strcopy funciona, es probable que tu estés haciendo algo mal... mostrar tu codigo en este punto es un buen paso
lo he usado asi, pero se cuelga:
strcpy(ptr[0],s1[0]);
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: engel lex en 5 Octubre 2017, 01:07 AM
con strcopy funciona, es probable que tu estés haciendo algo mal... mostrar tu codigo en este punto es un buen paso
int BuscarAutor(LISTA *l, char *autor)
{
NODO *aux=lista->primero;
int i=0;
int cuenta=0;
if(aux==NULL)
{
return NULL;
}
else
{
do {
if(strcmp(aux,autor)==0)
{
cuenta++;
}
aux=aux->siguiente;
}while(aux!=NULL);
printf("Numero: %i\n",cuenta);
return NULL;
}
}
void trim (char *cadena)
{
int ini, fin;
fin=strlen(cadena)-1;
while(fin >0 && (cadena[fin]==' ' || cadena[fin]=='\t' || cadena[fin]=='\n' || cadena[fin]=='\r'))
fin--;
fin++;
cadena[fin]='\0';
ini=0;
while(ini<fin && (cadena[ini]==' ' || cadena[ini]=='\t' || cadena[ini]=='\n' || cadena[ini]=='\r'))
ini--;
#include <stdio.h>
#include <stdlib.h>
#define N 4 // Numero de ciudades
#define CIUDAD_ORIGEN 0
#define TRUE (1 == 1)
#define FALSE (1 != 1)
char ciudades[4] = {'0', '1', '2', '3'};
int d[4][4]={{0,20,40,60},
{30,0,50,25},
{20,25,0,50,},
{20,30,0,0}}; // Matriz de distancias
int visitadas[N]; // Ciudades visitadas por el algoritmo
int suma = 0; // Suma de costes
int optima = 999999; // Solucion optima inicial
int iteraciones = 0; // Numero de iteraciones
int solucion[N]; // Vector con el trayecto realizado
void busqueda_profundidad (int nivel, int origen, int suma, int visitadas[]) {
visitadas[origen] = TRUE;
solucion[nivel - 1] = origen;
iteraciones++;
for (int destino = 0; destino < N; destino++) {
if (visitadas[destino] == FALSE) {
suma = suma + d[origen][destino];
if (suma < optima) {
busqueda_profundidad(nivel + 1, destino, suma, visitadas);
}
if (nivel == (N - 1)) {
suma = suma + d[destino][CIUDAD_ORIGEN];
if (suma < optima) {
optima = suma;
printf ("Estableciendo nueva solucion optima, coste = %6d\n", optima);
printf ("Solucion = { ");
for (int i = 0; i < N; i++) {
printf (" %c, ", ciudades[ solucion[i] ]);
}
printf (" %c }\n\n", ciudades[CIUDAD_ORIGEN]);
}
} else {
suma = suma - d[origen][destino];
}
visitadas[destino] = FALSE;
}
}
}
int factorial (int n) {
int f = 1;
for (int i = n; i > 1; i--) {
f = f * i;
}
return f;
}
int main (void) {
printf ("RESOLUCION DEL PROBLEMA DEL VIAJANTE DE COMERCIO\n");
printf ("(c) Alejandro Portero Gimeno 2015\n\n");
//matriz_distancias();
for (int i = 0; i < N; i++) {
visitadas[i] = FALSE;
}
printf ("\nNum. ciudades = %d\n\n", N);
busqueda_profundidad (1, CIUDAD_ORIGEN, suma, visitadas);
printf ("Iteraciones = %12d\n", iteraciones);
printf ("Soluciones totales = %12d\n", factorial(N));
printf ("Soluciones descartadas = %12d\n", factorial(N) - iteraciones);
system("pause");
return 0;
}
int matriz[n][n];
int minimo;
list <int> vertice;//Subconjunto solución
/*--------------------------------------------------*/
// Rellenamos matriz a ceros
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
matriz[i][j] = 0;
}
}
matriz[0][1]=5;
matriz[0][2]=2;
matriz[0][3]=3;
matriz[1][0]=5;
matriz[1][2]=4;
matriz[1][3]=5;
matriz[2][0]=2;
matriz[2][1]=4;
matriz[2][3]=1;
matriz[3][0]=3;
matriz[3][1]=5;
matriz[3][2]=1;
bool aumento;
int contador;
int contador2;
int val1,val2;
for(int i=0; i<n; i=val2){
aumento = true;
contador2 = 0;
for(int j=0; j<n; j++){
if (aumento){
contador = 0;
while (matriz[i][contador]==0){
contador++;
}
minimo = matriz[i][contador];
//cout << "\nMINIMO INICIAL EN FILA " << i << " : " << minimo << endl;
aumento = false;
}
contador2++;
if(matriz[i][j]!=0){
if(matriz[i][j] < minimo){
minimo = matriz[i][j];
val1 = i;
val2 = j;
//cout << "MINIMO DE LA FILA " << i << ": " << minimo << endl;
cout << "POSICION " << "("<<val1<<","<<val2<<")"<<endl;
}
}
//cout << "CONTADOR2 : " << contador2 << endl;
if (contador2 == n){
vertice.push_back(val1);
vertice.push_back(val2);
for(int j=0; j<n; j++){
matriz[j][val1]=0;
matriz[j][val2]=0;
}
// cout << "POSICION " << "("<<val1<<","<<val2<<")"<<endl;
}
}
}