elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9 10
61  Programación / Programación C/C++ / Re: [C] Arreglos de m*n enteros en: 2 Octubre 2015, 17:26 pm
Lo que te pide el enunciado es ésto

Código
  1. int pos(int array[], int fila, int columna){
  2.  return array[fila*NCOL + columna];
  3. }

Pero te pongo un poco más de código que creo que te ayudará a comprenderlo mejor

Código
  1. #include <stdio.h>
  2. #define NFIL 4
  3. #define NCOL 10
  4. #define NELEM NFIL * NCOL
  5.  
  6. int pos(int array[], int fila, int columna){
  7.  return array[fila*NCOL + columna];
  8. }
  9.  
  10.  
  11. int main (){
  12.  int elArray [NELEM];
  13.  int fila, columna, i;
  14.  
  15.  for (i = 0; i < NELEM; i++)
  16.    elArray[i] = i;
  17.  
  18.  printf("Fila: ");
  19.  scanf("%d", &fila);
  20.  
  21.  printf("Columna: ");
  22.  scanf("%d", &columna);
  23.  
  24.  printf("(%d,%d) = %d\n", fila, columna, pos(elArray, fila, columna));
  25.  
  26.  return 0;
  27. }

Si no entiendes alguna parte pregunta ;-)
62  Programación / Programación C/C++ / Re: [C] Arreglos de m*n enteros en: 2 Octubre 2015, 00:25 am
El que llama a la función "ve" esto

10 10 10 // Ésto es una matriz
10 99 10
10 10 10

Sin embargo la función sólo conoce ésto

10 10 10 10 99 10 10 10  //Ésto es un array unidimensional

Tienes que hacer algo para que a partir de la fila y la columna, la función pueda obtener el indice equivalente para el array.

Es decir si llamas a la función así:

Código
  1. pos(array, 1, 1) ;

la función debe transformar ese (1,1) que son las coordenadas del elemento en la matriz a un 4 y entonces hacer

Código
  1. return array[4];

Que en este caso sería el 99.

Si no sabes como rellenar un array quizá este problema te venga grande...
Haz un for de N iteraciones donde en cada una pida, genere (o lo que quieras)... un número y lo vaya asignando a posiciones consecutivas del array. Pero hazlo tras declarar el array y no antes.
63  Programación / Programación C/C++ / Re: [C] Arreglos de m*n enteros en: 1 Octubre 2015, 23:54 pm
Tienes que crear un array unidimensional de m*n posiciones.

Código
  1. int elArray[N]; //donde N es igual a n*m

Pero tienes que hacer que para el que llama a la función lo vea como una matriz de n filas y m columnas. Es decir a la función le pasas las coordenadas de matriz (fila, columna) y te debe devolver ese elemento.

Código
  1. elementoArray ( elArray, fila, columna); //asi seria la llamada a la funcion

Básicamente es hacer un poco de aritmética a la hora de seleccionar la posición del array unidimensional partiendo de coordenadas bidimensionales.
64  Foros Generales / Foro Libre / Re: Teoría de la Computación en: 1 Octubre 2015, 21:31 pm
Yo estoy tan interesado que es lo que estudié :-P.
Si quieres puedo intentar conseguirte material en pdf de la universidad, o alguna lista de libros.
65  Foros Generales / Foro Libre / Re: La NASA prepara un "anuncio mayor" sobre Marte en: 27 Septiembre 2015, 18:24 pm
Pues si conozco uno se trata de UCF-1.01 que se encuentra a 33 años luz y lo convierte "posiblemente" en el más cercano a nuestro sistema solar con un tamaño inferior al de la Tierra.

Ver más en: http://www.20minutos.es/noticia/1544230/0/planeta/cercano-tierra/sistema-solar/#xtor=AD-15&xts=467263

Y otro mas cercano Alpha Centauri B a unos 4,3 años luz pero este no esta dentro de la llamada zona de habitabilidad.

¿33 años luz? eh! pues vamos que es un momentico... xD. Evidentemente no sabes lo que supone que algo esté a esa distancia y la imposibilidad de hacer misiones tipo las de Marte.
Lanzaron la voyager en los 70 y está ahora mismo en los limites del sistema solar, que son unas pocas horas luz...
66  Programación / Programación C/C++ / Re: multiplicacion de matrices rectangulares con pthreads en: 25 Septiembre 2015, 04:09 am
El problema es que no puedes asignar un número de columnas que no sea múltiplo de tu número de hilos de forma totalmente equitativa entre ellos (que es lo que intenta hacer tú código).  Como lo tienes siempre que no sea múltiplo se van a quedar sin procesar entre 1 e hilos-1 filas.

La solución más sencilla es detectar ésto en el hilo que más te guste y procesar esas filas en él.
Si fuesen demasiados hilos o el tiempo necesario para procesar una fila demasiado alto: detectarlo y repartirlas.

Como detalle, utilizar más hilos que cores no suele reportar ningún beneficio, más bien al contrario. Además si no son matrices bastantes grandes tampoco notarás aceleración con respecto a un código secuencial. Sí sólo lo haces para practicar hilos bien, si aspiras hacer esto con matrices inmensas en maquinas chulas mírate cosas cómo omp o mpi (dependiendo del tipo de máquina).
67  Programación / Programación C/C++ / Re: Pasar solo una columna de una matriz como argumento de una funcion en: 22 Septiembre 2015, 18:24 pm
Estoy haciendo una copia en un vector, pero es precisamente lo que quiero evitar, mi interés en pasarle directamente la matriz pero que me tome la columna que le indique.

Estaba seguro que se podía hacer, aunque quizás ya estoy confundiendo lenguajes xd

Se puede, exactamente como te dije en mi respuesta anterior.

A la función le pasas un puntero al primer elemento de la columna (o  a la matriz según te interese) y ahí haces los incrementos según las dimensiones.

Ejemplifico

le pasas el puntero a la columna, si quieres recorrer los elementos de la columna c,  para recorrerla le vas sumando el número de elementos que tiene una fila, supongamos f. por lo tanto.

puntero_a_columna (que sería equivalente a &A[0][c]) <- dirección del primer elemento de la clomna c
puntero_a_columna + f  <- dirección de memoria del segundo elemento...

Puedes controlar no salirte de la matriz con el número de columnas o un poco más laborioso con el número de elementos de la matriz.

También podrías hacer, si pasas el puntero a la matriz completa
A[i ][c] e ir incrementando la i, todo depende de como te venga mejor para lo que quieras hacer
68  Programación / Programación C/C++ / Re: Pasar solo una columna de una matriz como argumento de una funcion en: 22 Septiembre 2015, 16:03 pm
Puedes hacer una copia de la columna en un vector, o mejor, pasarle un puntero del elemento inicial de la columna.
Ej con matriz bidimensional:
Primera columna -> puntero a A[0][0], haces el for para el número de columnas y el incremento que sea del número de elementos por fila.

Segunda columna puntero a A[0][1]... etc
69  Programación / Programación C/C++ / Re: [C] ¿Debería usar un puntero? en: 22 Septiembre 2015, 12:45 pm
Escribir un programa que lea un entero n y luego solicite al usuario el ingreso de n enteros, luego devolver la posición del primer entero duplicado.


¿Debería usar un puntero de ser así, como lo declararía usando malloc?



Sí, deberías usar un puntero.

Código
  1. int *numeros, n;
  2.  
  3. //...
  4.  
  5. numeros = (int *) malloc( n * sizeof(int) );
70  Programación / Programación C/C++ / Re: C no puede hacer esto? en: 9 Septiembre 2015, 20:28 pm
El problema no es de C, con el que puedes programar cualquier cosa que sea programable, si no de tu visión.  

Código
  1. if(numero < 0){
  2. printf("Es negativo.\n");
  3. }
  4. else{
  5. printf("Es positivo.\n");
  6. }
Páginas: 1 2 3 4 5 6 [7] 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines