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ú

Temas - muymuyperdido

#1
Buenas, el código para ordenar una tabla de números float a la vez que una de etiquetas, creando una tabla de etiquetas ordenadas, es decir:
Etiquetas
0
1
0
1
Tabla
2,2 4,6 3,7 0,2
1,4 6,4 8,3 4,8
..
...
Y ordenaria la tabla de floatspor columnas, a la vez que ordena creando una tabla de etiquetas ordenadas.
Yo lo tengo así pero no sale como tiene que salir
void ordenar (float d[N][M], float ori[N],float e[N][M]) //Fallo al ordenar!!
{
   int i,j,z,menor,m=3;
   float aux;
   for(z=0; z<m; z++)
   {
       for(i=0; i<m; i++)
       {
           for(j=i+1,menor=i; j<m; j++)
           {
               if(d[j]<d[menor])
                   menor=j;
           }
           aux=d[z];
           d[z]=d[z][menor];
           d[z][menor]=aux;
           e[z]=ori;
       }
   }
}


SOLUCIONADO.
#2
Programación C/C++ / Problema cadenas
1 Enero 2013, 10:46 AM
Buenas, tengo un problema con una función que recibe un nombre y se copia en otras cadenas, y finalmente concateno extensiones.
Al compilar no da error en este caso, pero después me da cuando abro los ficheros con ese nombre.
Al hacer la depuración se me quedan las variables asi y no sé si está bien (y los numeros y caracteres raros son direcciones de memoria (?)) o si está mal :|
http://es.zimagez.com/miniature/sinttulo221.jpg

{

    printf("Introduce nombre de archivo sin extension");
    scanf ("%s", dc);
    fflush(stdin);
    strcpy(dp,dc);
    strcpy(dr,dc);
    strcpy(dt,dc);
    strcat(dc,".train");
    strcat(dp,".test");
    strcat(dr,".real");
    strcat(dt,".out");
}
#3
Lo puse en otro post, pero no sé si está bien explicado asique aqui lo pongo más claro
Tengo dos tablas y tengo que tratar cada fila de una de ellas con todas las filas de la otra.
Asi
1 2 3
4 5 6
7 8 9
11 12 13
14 15 16
17 18 19
La fila 1 2 3 con 11 12 13, con 14 15 16, y con 17 18 19.
La 4 5 6  con 11 12 13, con 14 15 16, y con 17 18 19.
Y la 7 8 9  con 11 12 13, con 14 15 16, y con 17 18 19.
Seria calcular la distancia euclidea como si fuesen ejes coordenados, es decir
la raiz de la suma de las diferencias al cuadrado (en una funcion)
No pongo codigo porque no sé por donde empezar, es decir, que bucle hago para hacer esa relacion?
#4
Programación C/C++ / Ordenación de tablas
29 Diciembre 2012, 10:32 AM
Tengo una tabla asi
1 2 3 4
4 3 1 3
2 1 4 2
3 4 2 1
Y otra que es
0
1
0
1
Donde cada elemento de la 1 fila de corresponde al 0, de la segunda al 1, y asi (cada columna de la 1 tabla son experimentos diferentes)
Tengo que ordenar cada columna de menor a mayor y a la vez crear otra tabla de 4x4 con las etiquetas (0 y 1) ordenadas en cada experimento.
Se quedaria
1 1 1 1      0011
2 2 2 2      0010
3 3 3 3      1101
4 4 4 4      1100
¿Serian tres for anidados?
#5
Buenas, mi problema está en introducir los datos de un fichero en una tabla
El fichero es del estilo
3
1 2 3
4 5 6
7 8 9
De forma que el 3 es el numero de columnas, que es lo primero que leemos y después he de leer los elementos 1 2 3 4 5 6 7 8 9 introduciendolos en una matriz de 3x3 (el programa no sabe cuantas filas hay)

(Está hecho en una función)

void fic1tabla (char dat1[N],float tab1[N][N])
{
   int m,i,j;
FILE * ft;
   ft= fopen(dat1[N],"r");
   if(ft==NULL)
   {
       printf("ERROR");
   }
   else
   {
       fscanf(ft,"%d",&m);
       while(!feof(ft))
       {
           for(i=0; i<N; i++)
           {
               for(j=0; j<m; j++)
               {
                   fscanf(ft,"%f",tab1[i][j]);
               }
           }
           fclose(ft);
       }

   }

}
#6
Tengo un programa con varias funciones, pero al compilar me da error
"'lo que sea" undeclared (first used in this function)

void recuento (int t[N][M], int k, char dt[]);


y en el main está puesto
recuento(train,k,datosout);    estando todo esto declarado en el main.

No entiendo por qué da error si se supone que con la llamada se declaran las variables dentro de la funcion :|
#7
Es decir:
for(i=0;i<N;i++){
calculodistancias (...tabla[M]);
ordenar(...tabla[M]);
recuento(...tabla[M])
}
Y al acceder a tabla solo tendria en cuenta esa fila?
O es algo absurdo que me he inventado?
#8
Tengo tres ficheros de texto plano que he de volcar en tres tablas usando funciones,...tendria que usar una por cada archivo o con una función es suficiente?
Porque si dentro de la funcion yo declaro FILE * fs y abro el archivo y eso, en las tres llamadas a la función se abren los diferentes ficheros en una misma variable fs.
¿Tendria que usar 3 funciones?
#9
El programa consiste en escribir una secuencia de bases de ADN ( A G T o C) y pedir una base, y mediante una funcion el programa te dice cuantas veces aparece esa base, mi problema es que el contador se queda en cero.

#include <stdio.h>
#define TAM 200
int contador(char v[]);
void main(){
char v[TAM],base;
printf("Escribe secuencia");
gets(v);
printf("Escribe base");
scanf("%c",&base);
printf("El numero de veces que aparece es %d",contador(v));

}
int contador (char v[])
{
    int contador=0,i;

    for(i=0; v[i]!='\0'; i++)    {
        if(v[i]=='base')        {
            contador++;
        }
    }
    return contador;
}



Gracias :)
#10
Programación C/C++ / Programa con cadenas
2 Diciembre 2012, 18:12 PM
Hola, tengo un problema de cadenas, que es introducir dos, destino y original y me tiene que devolver el programa la destino copiada en la original pero con los caracteres al revés.
Es mi 2 programa con cadenas y me da varios errores, yo lo he planteado así pero probablemente haya hecho alguna barbaridad, gracias :)

#include <stdio.h>
#include <string.h>
#define TAM 200
void cambio (char v[], char m[]);
void main(){
char destino[TAM];
char original[TAM];
printf("Introduzca la primera cadena");
gets(destino);
printf("Introduzca la segunda cadena");
gets(original);
cambio(destino[TAM],original[TAM]);
puts(destino);
puts(original);
}
void cambio (char v[], char m[]){
    int i;
    strcat(char destino[TAM],char original[TAM]);
    for(i=0;v[i]!='\0';i++){
        char destino[i]=char destino[TAM-i-1];}

}
#11
Programación C/C++ / Programa con cadenas
1 Diciembre 2012, 18:24 PM
El programa consiste en que yo escribo una frase y me dice las palabras que tiene, y se repite hasta que la frase introducida sea "Fin del ejercicio"
Lo he planteado tal que así y me da error de windows, porque compilar compila y me da las palabras de la primera frase que introduzco (y ya se acaba el programa)

  #include <stdio.h>
#include <string.h>
#define TAM 200
int palabras (char v[]);
void main()
{
    int i;
    char f[TAM]="Fin del ejercicio";
    char v[TAM];
    do
    {
        printf("Introduzca la frase");
        gets(v);
        printf("El numero de palabras es %d",palabras(v));
    }
    while(v[i]!=f[i]);
}
int palabras (char v[])
{
    int palabras=1,i;
    for(i=0; v[i]!='\0'; i++)
    {
        if(v[i]==' ')
        {
            palabras++;
        }
    }
    return palabras;
}
#12
Almacenandolos en un vector, no sé como plantearlo
Si alguien es capaz de hacerlo por favor ayuda, o al menos unas pautas para no perderme.
Gracias!
#13
Estoy en inicios de C, trabajando con funciones e intento un programa que yo introduzco una matriz bidimensional y una opcion en forma de caracter, y segun este sea el programa hace una funcion u otra, lo he planteado asi pero no compila y no veo el error

#include <stdio.h>
#define FIL 2
#define COL 3
void sumaescalar (int [FIL][COL]);
void multescalar (int [FIL][COL]);
int media (int [FIL][COL]);
int main (void){
    char o;
    int v[FIL][COL],i,j;
    for (i=0; i<FIL;i++){
        for (j=0;j<COL;j++){
            printf("Introduce el elemento [%d,%d]", i,j);
            scanf("%d",&v[j]);}}
    printf("Introduce la opción, s sumar, m multiplicar y a media");
    scanf("%c",&o);
    switch(o){
              case 's': sumaescalar(v);
              break;
              case 'm': multescalar (v);
              break;
              case 'a': printf ("La media es media=media(v)");
              break;
              default :printf ("Opcion no valida");}
}
   void sumaescalar (int [FIL][COL]){
        int suma[FIL][COL],v[FIL][COL], n,i,j;
        printf("Introduce el escalar a sumar");
        scanf("%d",&n);
        for (i=0; i<FIL;i++){
                    for (j=0;j<COL;j++){
                        suma[j]=v[j]+n;}}}
     void multescalar (int [FIL][COL]){
        int m[FIL][COL],v[FIL][COL], n,i,j;
        printf("Introduce el escalar a multiplicar");
        scanf("%d",&n);
        for (i=0; i<FIL;i++){
                    for (j=0;j<COL;j++){
                        m[j]=v[j]*n;}}}
  int media (int [FIL][COL]){
      int suma,v[FIL][COL],i,j,media;
      for (i=0; i<FIL;i++){
                    for (j=0;j<COL;j++){
                        suma=suma+v[j];}}
      media=suma/(FIL*COL);
      return media;
      }