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

#1
Redes / WiFi y repetidor WiFi
11 Septiembre 2019, 21:38 PM
Buenas noches! Tengo una ONT de huawei in su WiFi y tal, y un repetirlo en modo AP. La cosa es que no sé si estoy haciendo las cosas bien. Tengo EL WiFi de la ONT con el canal 7 y el canal del repetido el 10 ( son los 2 menos congestionados), el repetidor WiFi tiene el mismo nombre que el WiFi de la ONT para que el móvil se conecte a AP que más potencia tenga. La cosa es, es correcto poner el mismo nombre al AP o hay que poner uno distinto?

Gracias
#2
Ejercicios / Pipes y Dup - ¿Qué hace?
17 Junio 2018, 05:25 AM
Hola. Alguien podría decirme qué hace este fragmento de código. Gracias!

#include <unistd.h>
main(){
   pipeline("/usr/bin/yes", "/bin/more");
}
int pipeline(char *proc1, char *proc2){
    int fd[2];
    pipe(fd);
    if (fork()!=0){
       close(fd[0]); // No lo necesitamos aqui
       close(1); // Cierra la salida estandar
       dup(fd[1]);
       close(fd[1]); // No lo necesitamos
       execl(proc1, proc1, 0);
   }
   else{
       close(fd[1]); // No lo necesitamos
       close(0); // Cierra la entrada estandar
       dup(fd[0]);
      close(fd[0]); // No lo necesitamos
      execl(proc2, proc2, 0);
   }
}
#3
GNU/Linux / Ayuda ejercicio [SOLUCIONADO]
16 Junio 2018, 02:35 AM
Hola. Me gustaría saber si alguien me puede ayudar a hacer este ejercicio debido a que no me funciona. El problema es el siguiente:

"Vamos a proceder a crear una nueva llamada al sistema, que llamaremos
int sys info process(int pid), a la cual pasamos como argumento un PID de un proceso, y queremos que nos devuelva el PPID de ese proceso, o -1 en caso de que no exista ning´un proceso con ese pid."

Todo ello debe ir bajo el núcleo linux, con una llamada en /usr/src/disop/arch/i386/kernel/entry.S

Os paso captura del código mediante imagen, ya que la máquina virtual no me deja copiar y pegar.

Primera parte del código https://ibb.co/bxk9sy
Segunda parte del código https://ibb.co/fuPPQJ
#4
Bases de Datos / Algebra relacional
6 Mayo 2018, 20:12 PM
Hola, me gustaría saber cómo se verían varias consultas en álgebra relacional ya que no tengo ni idea.

¿Alguien puede echarme una mano?

Gracias!
#5
Java / Ayuda crear radio FM Android
13 Diciembre 2017, 12:31 PM
Hola comunidad.
Estoy desarrollando una app para un trabajo de la universidad y no encuentro ni una pizca de código de radio FM, todas son streaming y me gustaría saber cómo puedo hacer una radio FM en Android Studio.

Gracias de antemano!
#6
Hola, estoy intentando hacer una app super sencilla, pero estoy estancado en un sitio del que no tengo ni idea de cómo salir.

La app consta en registrar en una base de datos una serie de datos. ;-)

Os dejo mis clases por orden de creación:
MainActivity
Código (java) [Seleccionar]
public class MainActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       //ConexionSQLiteHelper conn=new ConexionSQLiteHelper(this,"bdTiendas",null,1);

   }

   public void onClick(View view){
       Intent nueva_ventana = new Intent(MainActivity.this, registrarTienda.class);
       startActivity(nueva_ventana);
   }
}


Utilidades (declaro variables y creo BBDD):

Código (java) [Seleccionar]
public class Utilidades {


   public static final String TABLA_TIENDA="tienda";
   public static final String CampoNumeroTienda="numTienda";
   public static final String CampoNombreTienda="nombre";
   public static final String CampoMuelleFrio="muelleFrio";
   public static final String CampoMuelleFruta="muelleFruta";
   public static final String CampoMuelleSeco="muelleSeco";
   public static final String CampoDireccion="direccion";
   public static final String CampoTelefono="telefono";

   public static final String CREAR_TABLA_TIENDA="CREATE TABLE"+TABLA_TIENDA+"("+CampoNumeroTienda+" INTEGER, "+CampoNombreTienda+
           " TEXT,"+CampoMuelleFrio+" INTEGER, "+CampoMuelleFruta+" INTEGER,"+CampoMuelleSeco+" INTEGER,"+
           CampoDireccion+" TEXT,"+CampoTelefono+" TEXT)";




Tienda (pongo los metodos set y get):
Código (java) [Seleccionar]
public class Tienda {
   private Integer numTienda;
   private String nombre;
   private Integer muelleFrio;
   private Integer muelleFruta;
   private Integer muelleSeco;
   private String direccion;
   private String telefono;

   public Integer getNumTienda() {
       return numTienda;
   }

   public void setNumTienda(Integer numTienda) {
       this.numTienda = numTienda;
   }

   public String getNombre() {
       return nombre;
   }

   public void setNombre(String nombre) {
       this.nombre = nombre;
   }

   public Integer getMuelleFrio() {
       return muelleFrio;
   }

   public void setMuelleFrio(Integer muelleFrio) {
       this.muelleFrio = muelleFrio;
   }

   public Integer getMuelleFruta() {
       return muelleFruta;
   }

   public void setMuelleFruta(Integer muelleFruta) {
       this.muelleFruta = muelleFruta;
   }

   public Integer getMuelleSeco() {
       return muelleSeco;
   }

   public void setMuelleSeco(Integer muelleSeco) {
       this.muelleSeco = muelleSeco;
   }

   public String getDireccion() {
       return direccion;
   }

   public void setDireccion(String direccion) {
       this.direccion = direccion;
   }

   public String getTelefono() {
       return telefono;
   }

   public void setTelefono(String telefono) {
       this.telefono = telefono;
   }

   public Tienda(Integer numTienda, String nombre, Integer muelleFrio, Integer muelleFruta, Integer muelleSeco, String direccion, String telefono) {
       this.numTienda = numTienda;
       this.nombre = nombre;
       this.muelleFrio = muelleFrio;
       this.muelleFruta = muelleFruta;
       this.muelleSeco = muelleSeco;
       this.direccion = direccion;
       this.telefono = telefono;
   }
}


ConexionSQLiteHelper

Código (java) [Seleccionar]
public class ConexionSQLiteHelper extends SQLiteOpenHelper {

   public ConexionSQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
       super(context, name, factory, version);
   }

   @Override
   public void onCreate(SQLiteDatabase db) {

       db.execSQL(Utilidades.CREAR_TABLA_TIENDA);
   }

   @Override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
       db.execSQL("DROP TABLE IF EXISTS tabla");
       onCreate(db);
   }
}


Registrar Tienda

Código (java) [Seleccionar]
public class registrarTienda extends AppCompatActivity {
EditText nombre_tienda,numero_tienda,muelle_frio,muelle_fruta
       ,muelle_seco,direccion,telf;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_registrar_tienda);

       nombre_tienda=(EditText) findViewById(R.id.nombreTienda);
       numero_tienda=(EditText) findViewById(R.id.numeroTienda);
       muelle_frio=(EditText) findViewById(R.id.muelleFrio);
       muelle_fruta=(EditText) findViewById(R.id.muelleFruta);
       muelle_seco=(EditText) findViewById(R.id.muelleseco);
       direccion=(EditText) findViewById(R.id.direccionTienda);
       telf=(EditText) findViewById(R.id.numTelfTienda);


   }

   public void onClick(View view){
       registroTienda();
       }



   private void registroTienda() {
       ConexionSQLiteHelper conn=new ConexionSQLiteHelper(this,"bdTiendas",null,1);
       SQLiteDatabase db=conn.getWritableDatabase(); //PROBLEMA

       ContentValues values=new ContentValues();
       values.put(Utilidades.CampoNumeroTienda,numero_tienda.getText().toString());
       values.put(Utilidades.CampoNombreTienda ,nombre_tienda.getText().toString());
       values.put(Utilidades.CampoMuelleFrio,muelle_frio.getText().toString());
       values.put(Utilidades.CampoMuelleFruta,muelle_fruta.getText().toString());
       values.put(Utilidades.CampoMuelleSeco,muelle_seco.getText().toString());
       values.put(Utilidades.CampoDireccion,direccion.getText().toString());
       values.put(Utilidades.CampoTelefono,telf.getText().toString());

      // Long idResultante=db.insert(Utilidades.TABLA_TIENDA,Utilidades.CampoNombreTienda,values);
      // Toast.makeText(getApplicationContext(),"Tienda: "+idResultante+" agregada",Toast.LENGTH_SHORT).show();
   }
}


Y el problema está en esta última clase, donde lo indico. Comento esta línea (y las que dependen de ella) y la app no se crashea, mientras dejánlosa sin comentar, peta.

Gracias de antemano.


EDITO 7/10/2017 20:20

Solucionado, me faltaba un espacio en la secuencia del create table. Gracias amigos.
#7
Programación General / Poner sonido a Snake HTML5
28 Septiembre 2017, 10:14 AM
Hola amigos. Es un proyecto en el que necesito poner un tono (el mio llamado pac.mp3) cuando la serpiente come.

Tengo esta parte de código:

serpiente.js

Código (javascript) [Seleccionar]
$(document).ready(function() {

// Creamos un contexto 2d de nuestro canvas
var canvas = $("#snake")[0];
var context = canvas.getContext("2d");
var width = $("#snake").width();
var height = $("#snake").height();

var cellWidth = 10;
var d;
var food;
var score;
var level = 6; // 1 El nivel más lento, 10 el nivel más rápido.
// contiene el listado de celdas por donde pasa la serpiente
var snake;

// El juego tiene la dirección "right" por defecto y se ejecuta la función paint
// dependiendo el nivel que hayas configurado arriba
function init()
{
d = "right";
createSnake();
createFood();
score = 0;

if(typeof gameLoop != "undefined") {
clearInterval(gameLoop);
}

gameLoop = setInterval(paint, 500 / level);
}

init();

// Creamos la serpiente
function createSnake()
{
var length = 5;
snake = [];

for(var i = length - 1; i >= 0; i--)
{
snake.push({ x: i, y: 0 });
}
}

//Creamos el recuado que tiene que comerse la serpiente
function createFood()
{
food = {
x: Math.round(Math.random() * (width - cellWidth) / cellWidth),
y: Math.round(Math.random() * (height - cellWidth) / cellWidth),

};
}

//Dibujamos la serpiente
function paint()
{
context.fillStyle = "#ccc";
context.fillRect(0, 0, width, height);
context.strokeStyle = 'black';
context.strokeRect(0, 0, width, height);

var nx = snake[0].x;
var ny = snake[0].y;

if (d == "right") {
nx++;
} else if (d == "left") {
nx--;
} else if (d == "up") {
ny--;
} else if (d == "down") {
ny++;
}

if (nx == -1 || nx == width / cellWidth || ny == -1 || ny == height / cellWidth || checkCollision(nx, ny, snake)) {
init();
return;
}

if(nx == food.x && ny == food.y) {
var tail = {
x: nx,
y: ny
function pla();
};
score++;
createFood();
} else {
var tail = snake.pop();

tail.x = nx;
tail.y = ny;
}

snake.unshift(tail);

for(var i = 0; i < snake.length; i++) {
var c = snake[i];
paintCell(c.x, c.y);
}

paintCell(food.x, food.y);

var scoreText = "Score: " + score;

context.fillText(scoreText, 5, height - 5);
}

//Pintamos la celda
function paintCell(x, y)
{
context.fillStyle = "red";
context.fillRect(x * cellWidth, y * cellWidth, cellWidth, cellWidth);
context.strokeStyle = 'white';
context.strokeRect(x * cellWidth, y * cellWidth, cellWidth, cellWidth);
}

//Verificiamos si hubo alguna colisión (si la hubo el juego se reinicia)
function checkCollision(x, y, array)
{
for(var i = 0; i < array.length; i++)
{
if(array[i].x == x && array[i].y == y) {
return true;
}
}
return false;
}

// Capturamos la pulsación de las teclas
$(document).keydown(function(e) {
var key = e.which;

if (key == "37" && d != "right") {
d = "left";
} else if (key == "38" && d != "down") {
d = "up";
} else if (key == "39" && d != "left") {
d = "right";
} else if (key == "40" && d != "up") {
d = "down";
}
});
});


serpiente.html
Código (html4strict) [Seleccionar]
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
<script src="http://code.jquery.com/jquery-1.10.1.min.js" type="text/javascript"></script>
<script src="serpiente.js" type="text/javascript"></script>

<style>
.game
{
margin: 0 auto;
width: 450px;
}
</style>
</head>

<body>
<div class="game">
<canvas id="snake" width="450" height="450"></canvas>
</div>
<audio controls autoplay loop>
  <source src="horse.ogg" type="audio/ogg" >
  <source src="horse.mp3" type="audio/mpeg">
Your browser does not support the audio element.
</audio>
</body>
</html>


Gracias de antemano
#8
Hola, estoy intentando montarme una pequeña web que parece una gimcana.

Mi problema es que quiero cifrar cada una de las pruebas con un usuario y contraseña, inserto un formulario, el código php pertinente y todo funciona, pero el problema viene cuando pongo en la url la prueba que debería de estar cifrada, pongo la direccion en el buscador  y accede a ella sin pedirme datos ni nada. Que puedo hacer?




· Los títulos deben ser descriptivos
>Lee las reglas
-Engel Lex
#9
Redes / Ip con varias webs
13 Enero 2017, 14:25 PM
Hola buenas, tengo internet con un proveedor el cual reparte internet con una misma IP (WAN) y tiene su web en el puerto 80, y yo quiero levantar mi servidor con mi web en el puerto 83, pero no sé redirigirlo par que el dns (en no-ip) me redirija mi web al puerto 83 en vez del 80.

¿Alguna sugerencia?

Gracias!!
#10
Hola Buenas, tengo un programa en C que me gustaría pasar a subprogramas pero siempre me encuentro con algún tope. Me podéis ayudar? Gracias!

Aquí os dejo el código


DWORD umask = GetLogicalDrives();
    int i;
    char n;
    char c[32];
    int f = 0;
    for (i = 97; i <= 122; i++) {
        n = i;

        if (umask & 1) {
            printf("%c:\\ ", n);
            c[f] = n;
            f++;
        }
        umask >>= 1;
    }

    printf("\nDirectorio de origen %c:\\ \n", c[0]);
    printf("Directorio destino %c:\\ \n", c[f - 1]);
    char dire[100];

    sprintf(dire, "%c:\\copia_%c", c[0], c[f - 1]);
    if (CreateDirectory(dire, 0) == TRUE) {
        printf("Creado el directorio %c\\copia_%c\\\n", c[0], c[f - 1]);
    }
    if (SetCurrentDirectory(dire) == TRUE) {
        DWORD nBufferLength = GetCurrentDirectory(0, NULL);
        char *lpBuffer = (LPTSTR) malloc(nBufferLength);
        int tam = GetCurrentDirectory(nBufferLength, lpBuffer);
        printf("Lugar de trabajo actual : %s\\ \n", lpBuffer);
    }
    sprintf(dire,"%c:\\",c[f-1]);
    printf("Estoy en el directorio %s:\n",dire);
    SetCurrentDirectory(dire);

    HANDLE hFind;
    WIN32_FIND_DATA datos;
    hFind = FindFirstFile("*.*", &datos);
    if (hFind != INVALID_HANDLE_VALUE){
        while (FindNextFile(hFind,&datos)){
            if (!(datos.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
                SYSTEMTIME tiempo;
                FileTimeToSystemTime(&datos.ftCreationTime, &tiempo);
                printf("%2d/%2d/%d  %2d:%2d   %2s \n", tiempo.wDay, tiempo.wMonth, tiempo.wYear,tiempo.wHour + 1, tiempo.wMinute, datos.cFileName);
                sprintf(dire,"%c:\\copia_%c\\%s",c[0],c[f-1],datos.cFileName);
                CopyFile(datos.cFileName,dire,TRUE);
            }
        }
        FindClose(hFind);
    }


Lo que intento hacer con éste código es mostrar las unidades de mi pc, crear un directorio en una unidad de mi pc, y copiar archivos al anterior directorio en otra unidad.

Gracias!
#11
Hola, busco el libro Estructura y diseño de computadores: La interfaz hardware/softwate 4ª edición con ISBN 9788429126204. He navegado por Google pero no encuentro nada.

Gracias de antemano.

Si alguien lo tiene y está interesado en vender a un precio razonable, escucho ofertas.
#12
Dado un conjunto de M números enteros ordenados crecientemente se pretende extraer información del mismo. Por ej: (1,3,4,5)

Problema 1: ¿Existe algún subconjunto de índices del array cuyos elementos tengan una media aritmética igual a N(N es un valor que introducimos nosotros).

Proporciónese un algoritmo que en caso afirmativo lo muestre y que en caso contrario indique que no existe tal subconjunto.


Me han comentado de pasarlo a binario. Sé que hay 2^n subconjuntos del array, pero no logro dar en la diana.
#13
Java / Multiplicar polinomios y derivada
5 Marzo 2015, 20:43 PM
Hola amigos, hoy les traigo un reto, mi profesor nos ha mandado multiplicar dos polinomios y hacerles sus derivadas. El problema, no tengo ni idea de hacerlo. Aquí está lo que llevo hecho:

Código (java) [Seleccionar]

package polinomio

public class Poli {
        private double coef[];
    public Poli(){
       
    }
    public Poli(double c[]){
        coef=new double [c.length];
        for (int i = 0; i < c.length; i++) {
            coef[i]=c[i];
        }
       
    }
    public Poli (int g, double c){
        coef=new double [g+1];
        for (int i = 0; i <coef.length ; i++) {
            coef[i]=c;
        }
       
    }
    public Poli (Poli p){
        this(p.coef);
       
    }
    public Poli(int g){
        this(g,1);
       
    }
    public Poli(double c){
        this(0,c);
    }
    public int ObtenerGrado(){
        return coef.length-1;
    }
    public double obtenCoef(int t){
        return coef[t];
    }
    public double[] obtenTodosLosCoef(){
        double aux[]=new double[coef.length];
        for (int i = 0; i<coef.length; i++) {
            aux[i]=coef[i];}
        return aux;
    }
       
    public double obtenCoefInd(){
            return 0;
       
    }
    public void negado(){
        for (int i = 0; i < coef.length; i++) {
            coef[i]=-coef[i];
        }
    }
    public void suma(Poli b){
        Poli aux= new Poli(b);
       
        if (aux.coef.length>=coef.length) {
            for (int i = 0; i < coef.length; i++) {
                aux.coef[i]+=coef[i];
            }
        }
        else{
            for (int i = 0; i < aux.coef.length; i++) {
                coef[i]+=aux.coef[i];
            }
        }
       

       
       
    }
    public Polinomio suma2 (Poli b){
        Poli aux= new Poli(b);
        Poli aux2= new Poli(b);
        if(aux.coef.length>=aux2.coef.length){
            for (int i = 0; i < aux2.coef.length; i++) {
                aux2.coef[i]+=coef[i];
            }
        }
        else{
            for (int i = 0; i < aux2.coef.length; i++) {
                coef[i]=aux2.coef[i];
            }
        }
           
            return null;
       
    }
    public Poli resta(Poli p){
        Poli aux=new Poli (p);
        aux.negado();
        suma(aux);
        return aux;
       
       
    }
    public void multiplicar (Poli p){
        Poli aux=new Poli(p);
        for (int i = 0; i < coef.length; i++) {
           
           
        }
       
    }
    public void derivada(){
       
    }
    public double evalua(double x){
        return 0;
    }
    public void ponCoef(int t,double c){
       
    }
   
    @Override
    public String toString(){
       String aux= "";
       
        for (int i = 0; i < this.coef.length; i++) {
            if(coef[i]!=0){
               
                aux=aux+"("+coef[i]+"x^"+i+")"+" + ";
            }
        }
       
    return aux;
}
   
}



Y aquí el main:

Código (java) [Seleccionar]

package polinomio;



public class Polinomio {


   
   
   
    public static void main(String[] args) {
       
        Poli a,b,c;
        double datos1[]={3,1,5,6,9};
        double datos2[]={8,4,-5,9,-8};
        Polinomio p=new Polinomio();
        a=new Poli(datos1);
        b=new Poli(datos2);
        c=new Poli();
       
        //System.out.println("Polinomio a "+a);
        //System.out.println("Polinomio b "+b);
       // System.out.println("Polinomio c "+c);
        double datos3[]=b.obtenTodosLosCoef();//Para el obtenerTodosLosCoef
        for (int i = 0; i < datos3.length; i++) {
           // System.out.print(datos3[i]+" ");
        }
        b=new Poli(a);
        b.negado();
        a.suma(b);
        System.out.println(a);
        System.out.println(b);
       
       
       
       
    }

}


Sinceramente, llevo más de una semana con todo esto y ya estoy saliendo loco, no sé como hacer la multiplicación y la derivada, si alguien me pudiera ayudar se lo agradecería. Gracias de verdad.
#14
Java / Problema repetición de números
21 Febrero 2015, 02:08 AM
Hola amigos, tengo un problema. Un profesor nos ha mandado "jugar la lotería" con un boleto que siempre contiene los mismos números (los números van entre 1 y 49). Entonces su intención es averiguar el número de dias, meses, etc que se tarda en realizar n coincidencias (máximo 6 coincidencias). Entonces, mi problema reside en la comparación de número random generado y los que ya tengo en el vector. He probado mil métodos y no doy con el adecuado, si me pudiérais ayudar os lo agradezco.

Código (java) [Seleccionar]

package sorteo;
import java.util.Random;
import java.util.Scanner;

public class Sorteo {

   
   public static void main(String[] args) {
     
       int i,j,contador = 0,semanas=0,n;
       
       int numeros[]=new int[6];
       int boleto[]=new int[6];
       Scanner s= new Scanner(System.in);
       System.out.println("Dame número de coincidencias");
       n=s.nextInt();
       //Boleto predefinido
       boleto[0]=1;
       boleto[1]=3;
       boleto[2]=15;
       boleto[3]=35;
       boleto[4]=39;
       boleto[5]=40;
Random rnd=new Random();
       //Generar números aleatorios
       while(contador!=n){
           semanas++;
           contador=0;
           for( i=0;i<6;i++){
               int x=(int)(rnd.nextInt(49-1+1)+1);
               
                   if(i==0)//Sólo para la primera posición del vector
                       numeros[i]=x;
                   else{
                       for(j=0;j<i;j++){
                           if((numeros[j]!=x)){//Comparación de número generado con el del vector
                               numeros[i]=x;
                                   
                           }
                           else{
                               i--;
                               //j=6;
                           }
                           
                        }
                   }          
                       
                   
               
       }
           //Ver numeros del vector aleatorios
       for(i=0;i<6;i++)
           System.out.println(numeros[i]);
           System.out.println("------------------------------------");
           
           //Comparar números del boleto aleatorio del fijo
       for(i=0;i<6;i++){
           for(j=0;j<6;j++){
               if((boleto[i])==(numeros[j])) {
                   contador++;
               }
                   
               }
           }
       //System.out.println("Contador"+contador);
       }
      // System.out.println("Contador"+contador);
       System.out.println("Las semanas han sido: "+semanas);
       double meses,años,siglos;
       meses=semanas/4;
       años=meses/12;
       siglos=años/100;
       System.out.println(meses+" meses");
       System.out.println(años+" años");
       System.out.println(siglos+" siglos");
   }
   
   }
#15
Hola, quisiera saber si alguno me hace el favor de decirme en qué me he equivocado porque me estoy volviendo loco y no encuentro el motivo. El ejercicio es el siguiente:

Escribe un subprograma que muestre las asignaturas en las que se encuentra matriculado un alumno, al subprograma se le pasará como parámetro la lista de alumnos, y el dni del alumno del que se quiere mostrar sus datos. Escribe un ejemplo de llamada.

Bien, yo he hecho lo siguiente:

#include <stdio.h>
#include <stdlib.h>
void verDatos(struct lista la, char *cdni);

struct asignatura{
   char nombre[30];
   int creditos;
};
struct alumno{
   char nombre [30];
   char dni[10];
   struct asignatura matricula[12];
   int nsignaturas;
};
struct lista{
   struct alumno listadoAlumnos[100];
   int numero_real;
};
struct informe{
   int creditosTotales;
   int nalumnos;
};
struct lista listaAdmitidos={
   {
       {"juan","334g",{{"física",6}},1},
       {"maria","445h",{{"fisica",2},{"fundamentos1",6}},2},
       {"luis","145g",{{"fisica",6}},1},
       {"pedro","678p",{{"fisica",3}},1},
       {"lorena","745h",{{"fisica",6},{"fundamentos1",6}},2},
       {"pascual","554g",{{"fisica",6},{"calculo",6},{"dibujo",9}},3},        
   },
   6
};

int main(int argc, char** argv) {

 
}
void verDatos(struct lista la, char *cdni){
   int i,j;
   for(i=0;i<la.numero_real;i++){
       if(strcmp(la.listadoAlumnos.dni,cdni)==0){
           for(j=0;j<la.listadoAlumnos.nsignaturas;j++){
               printf("Asignatura: %s\n",la.listadoAlumnos.matricula[j].nombre);
           }
       }
           
   }
 
   
     
}

Me da error en el subprograma como conflicto en verDatos.

Muchas gracias de antemano por leer tanto rollo.