Menú

Mostrar Mensajes

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ú

Mensajes - Dato Vagabundo

#1
Programación C/C++ / Re: Copiar caracteres
5 Octubre 2017, 01:14 AM
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]);
#2
Programación C/C++ / Copiar caracteres
5 Octubre 2017, 01:04 AM
Hola buenas, escribo para una duda que me ha surgido.

Si yo por ejemplo tengo los siguiente:

char *ptr[100];

char s1 [100] ="hola";


Y quiero copiar s1[0] en ptr[0],, ¿hay alguna forma de hacerlo?

Ya probé con strcpy y  strncpy y no me funciona.

Gracias de antemano.
#3
Si pongo aux->autor me entra solo una vez, aunque haya varios.
#4
Hola buenas, estoy haciendo una función que busca autores en una lista. Tengo la función que adjunto abajo, y no ese como comparar cada elemento de la lista con autor. Si alguien puede echarme una mano se lo agradeceria. Muchas gracias.



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;
       
   }
   
}

#5
Hola buenas , he creado una función que elimina espacios de una cadena, pero tengo algunas dudas a la hora de terminarla, ya que con esto no me los junta. Si alguien puede echarme una mano.. Gracias!!


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--;
   
       





Los espacios son los del principio y el final solamente.
#6
Programación C/C++ / Re: Pequeña duda
9 Enero 2017, 18:00 PM
Muchas gracias!!!
#7
Programación C/C++ / Pequeña duda
9 Enero 2017, 17:24 PM
Hola, os escribo por un pequeña duda que me ha surgido.
No entiendo los puntos en esta línea de código:
  double b[N] = {1., 1., 1., 1.};

Gracias de antemano y saludos.
#8
Programación C/C++ / Re: Viajante comercio
6 Septiembre 2016, 20:06 PM
He encontrado este codigo por internet pero no se porque no me hace bien los caminos,
soy principiante no me juzgueis  ;D



#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;
}


MOD EDIT: Etiquqtas GeSHi (por 2da vez).
#9
Programación C/C++ / Viajante comercio
5 Septiembre 2016, 18:26 PM
Lo esencial del problema. Segun la matriz que he introducido, deberia calcular el minimo de la primera fila, excluyendo siempre el cero, seleccionar el 0,2 que es el minimo y borrar las columnas de ambos numeros. Luego iria a la fila 2, buscaria el minimo que esta en el 2,3 y borraria de nuevo columnas. El problema es que a partir de ahi no avanza y entra en bucle cuando deberia seguir con 3,1 y acabar.


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;
        }
    }
}


MOD EDIT: Etiquetas GeSHi.
#10
Programación C/C++ / Re: funcion reconocer emails
5 Septiembre 2016, 18:21 PM
Gracias!!! por la ayuda