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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7
21  Programación / Programación C/C++ / Re: ¿Qué me falla? en: 17 Octubre 2013, 00:46 am
en "reserva" pasas una copia de la variable de tipo puntero a puntero asi que el puntero a la memroia reservada en el parametro es eliminada cuando se retorna la funcion, debes de pasar un puntero a puntero que apunta a otro puntero ( float***) pasando la direccion de la variable por supuesto o pasarla por referencia.

ademas reservar un array dinamico de esa manera no es lo mismo que declarar uno dinamico asi que esto:
Código:
m[i][j]=0;
esta incorrecto, esto es más usado en tiempo de diseño ya que el compilador resuelve el tamaño de la primera dimension, asi que debe ser:

Código:
(m[i])[j] = 0;

thx por la respuesta pero como se pasa por argumento eso?
sería correcto esto?

float ***m2 = &m1;

reserva(m2,,,);

22  Programación / Programación C/C++ / ¿Qué me falla? en: 17 Octubre 2013, 00:22 am
Lo que quiero hacer es crear un array de 2 dimensiones para guardar varias notas por cada alumno.
Creo que la reserva de memoria está bien lo que me falla es al intentar cambiar un valor y nose porque.
He probado haciendo  m[j]=0;
Lo que quiero es hacer un scanf("%f",m[j]);


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void reserva(float **w,int filas,int columnas) {
  5.     int i,j;
  6.     w = (float**) calloc(filas,sizeof(float *));
  7.     for(i=0;i<columnas;i++) {
  8.        w[i] = (float *) calloc(columnas,sizeof(float));
  9.        }
  10.  
  11. }
  12.  
  13.  
  14. int main()
  15. {
  16.    int numeroalumnos;
  17.    int numeronotas;
  18.    float **m;
  19.    int i,j;
  20.    printf("Cuantos alumnos?: ");
  21.    scanf("%d",&numeroalumnos);
  22.    printf("Cuantas notas por alumno?: ");
  23.    scanf("%d",&numeronotas);
  24.  
  25.    reserva(m,numeroalumnos,numeronotas);
  26.  
  27.    for(i=0;i<numeroalumnos;i++)
  28.    {
  29.        printf("Alumno %d\n",i+1);
  30.        for(j=0;j<numeronotas;j++) {
  31.            printf("\tNota %d: ",j+1);
  32.            m[i][j]=0; //Esto me falla
  33.        }
  34.        printf("\n");
  35.    }
  36.  
  37.  
  38.    return 0;
  39.  
  40. }
  41.  
23  Programación / Programación C/C++ / Re: Ayuda!! en: 8 Octubre 2013, 16:16 pm
Código
  1. *pointer++=i+10;
  2.  
  3. *pointer++ = *pointer+POSITIONS-i-1;

Vale que funcione pero, realmente es necesario tener código así?? Te ahorras una o dos líneas de código... realmente merece la pena?? La primera línea todavía... pero la segunda...

Tu piensa lo que te puede llegar a costar entender esto cuando vuelvas al código un par de meses después.

¿Como lo harias tu? Gracias.



Cumple su función.

¿Qué fallos crees que tiene?

La cosa es que lo he hecho pero nose ni como xD no me ha quedao claro lo que hago en turn()



Código
  1. for(i=0;i<POSITIONS;i++)
  2. {
  3.        temp = *pointer;
  4.        *pointer++ = *pointer+POSITIONS-i-1;
  5.        *pointer = temp;
  6. }

1.- Guardo en temp el valor que haya en la direccion de memoria a la que apunta pointer.
2.- Al valor que haya en pointer le meto lo que haya en la ultima y despues se incrementa la posicion.
3.- Ahora a que posicion del array apunta pointer en esta linea?  En la primera ejecucion del for -> ¿0 o 1?
24  Programación / Programación C/C++ / Ayuda!! en: 8 Octubre 2013, 15:47 pm
Buenas tengo que hacer un programa que le de la vuelta a un array pasandolo como argumento a una funcion. Lo tengo hecho y me sale el resultado bien pero creo k tiene fallos.¿Alguien puede echarle un vistazo? Gracias
Código
  1. #include <stdio.h>
  2.  
  3. #define POSITIONS 25
  4.  
  5. void create(int *pointer);
  6. void print(int *pointer);
  7. void turn(int *pointer);
  8.  
  9. int main()
  10. {
  11.    int numeros[POSITIONS];
  12.    create(numeros);
  13.    print(numeros);
  14.    turn(numeros);
  15.    print(numeros);
  16.  
  17.  
  18.    return 0;
  19. }
  20.  
  21. void create(int *pointer)
  22. {
  23.    int i;
  24.    for(i=0;i<POSITIONS;i++)
  25.    {
  26.        *pointer++=i+10;
  27.    }
  28. }
  29.  
  30. void print(int *pointer)
  31. {
  32.    int i;
  33.    for(i=0;i<POSITIONS;i++)
  34.    {
  35.        printf("%d\n",*pointer++);
  36.    }
  37.  
  38. }
  39.  
  40. void turn(int *pointer)
  41. {
  42.    int i;
  43.    int temp;
  44.    for(i=0;i<POSITIONS;i++)
  45.    {
  46.        temp = *pointer;
  47.        *pointer++ = *pointer+POSITIONS-i-1;
  48.        *pointer = temp;
  49.    }
  50.  
  51. }
25  Programación / Programación C/C++ / Re: Ayuda con punteros en: 2 Octubre 2013, 08:16 am
Gracias Jefe!!! Muy claro.
26  Programación / Programación C/C++ / Ayuda con punteros en: 1 Octubre 2013, 17:23 pm
Buenas estoy practicando con punteros y he hecho este programa y funciona bien pero me da warnings y quisiera saber porque son.
El programa crea una baraja de cartas que van del 1 al 10 repetidas 4 veces simulando que hubiese 4 palos. Despues las imprime.

||In function 'main':|
|14|warning: passing argument 1 of 'CrearBaraja' from incompatible pointer type [enabled by default]|
|5|note: expected 'int **' but argument is of type 'int (*)[(sizetype)(ncartas)]'|
|15|warning: passing argument 1 of 'ImprimirBaraja' from incompatible pointer type [enabled by default]|
|6|note: expected 'int **' but argument is of type 'int (*)[(sizetype)(ncartas)]'|
||In function 'CrearBaraja':|
|26|warning: assignment makes pointer from integer without a cast [enabled by default]|
||=== Build finished: 0 errors, 3 warnings (0 minutes, 0 seconds) ===|

Aquí esta el code. ¿Como estaría bien?

Código
  1. #include <stdio.h>
  2. //#include <stdlib.h>
  3. //#include <time.h>
  4.  
  5. void CrearBaraja(int *matriz[],int numerocartas);
  6. void ImprimirBaraja(int *matriz[],int numerocartas);
  7.  
  8. int main()
  9. {
  10.    int j;
  11.    int ncartas=40;
  12.    int cartas[ncartas];
  13.  
  14.    CrearBaraja(&cartas,ncartas);
  15.    ImprimirBaraja(&cartas,ncartas);
  16.  
  17.  
  18.    return 0;
  19. }
  20.  
  21. void CrearBaraja(int *matriz[],int numerocartas)
  22. {
  23.    int j;
  24.    for(j=0;j<numerocartas;j++)
  25.    {
  26.        matriz[j]=(j%10)+1;
  27.  
  28.    }
  29. }
  30.  
  31. void ImprimirBaraja(int *matriz[],int numerocartas)
  32. {
  33.    int j;
  34.    for(j=0;j<numerocartas;j++)
  35.    {
  36.        printf("Carta %d = %d\n",j+1,matriz[j]);
  37.    }
  38. }
  39.  

Gracias por la ayuda!!
27  Programación / Programación C/C++ / Re: Ayuda con un programa en C++ en: 3 Diciembre 2012, 23:54 pm
Hola de nuevo a todos. Antes os había preguntado por un programa en C++, ahora os pido que me ayudeis con este. Dice así:

"Leemos un número entero por teclado. Calcular la media de los números primos introducidos y decir cuál es el más grande y el más pequeño"

Necesito hacerlo con el código más simple posible, con
#include<iostream>   y  #include<cmath>

¡¡Gracias!!

Repite el enunciado de nuevo, si leemos un numero no podemos hacer medias. Luego dices calcular la media de los numeros PRIMOS introducidos ???
28  Programación / Programación C/C++ / Re: Comparar palabras en C en: 3 Diciembre 2012, 23:51 pm
lo siento es la primer vez que lo hago,..
¿pero sabes como hacerlo?

Me resulta casi inentendible tu codigo jaja. Tienes que leer n numero de cadenas y decir cual es la que mas se repite no? Puedes usar mas librerias? Hay una funcion que compara cadenas que se llama strcmp() de la libreria string, tambien puedes cojer los datos de las cadenas con fgets() busca información al respecto y postea tus dudas. Tratare de hacerte un code pero ahora mismo no tengo tiempo. Un saludo!
29  Programación / Programación C/C++ / Re: Comparar palabras en C en: 3 Diciembre 2012, 21:19 pm
Por favor ponlo un poco mas visible.

Código
  1. #include<stdio.h>
  2.  
  3. #define N 100
  4. int main (void){
  5.    int n,i,j,k,max;
  6.    int repe[N];
  7.    char p[N][N];
  8.    printf("Da un n:\n");
  9.    scanf("%d",&n);
  10.  
  11.    for(i=0;i<N;i++){
  12.        repe[i]=0;
  13.    }
  14.  
  15.    printf("Da las palabras:\n");
  16.    for(i=0;i<n;i++){
  17.        scanf("%s",p[i]);
  18.    }
  19.    for(k=0;k<N;k++){
  20.     for(i=1;i<n;i++){
  21.        for(j=0;j<i;j++){
  22.            if(p[k][i]==p[k][j]){
  23.                repe[k]++;
  24.            }
  25.        }
  26.      }
  27.    }
  28.    k=0;
  29.    max=0;
  30.    for(i=0; i<N; i++){
  31.        if(max<repe[i]){
  32.            max=repe[i];
  33.            k=i;
  34.        }
  35.    }
  36.  
  37.    if(k==0){
  38.        printf("La  palabra que mas se repite es %s",p[0]);
  39.    }else{
  40.        printf("La  palabra que mas se repite es %s",p[k]);
  41.    }
  42.    return 0;
  43. }
  44.  
30  Programación / Programación C/C++ / Re: Ayuda con un programa en C++ en: 3 Diciembre 2012, 20:08 pm
La librería math no se usa en este caso y más simple que el de  Xenomorfo77 sería sin usar array ni función:
Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. using namespace std;
  4. main() {
  5.    int i,cont=0,j,num,k;
  6.  
  7.  
  8.    for (i=0;i<10;i++){
  9.        cout <<"Ingresa el numero "<<i+1<<": ";
  10.        cin >>num;
  11.        k=0;
  12.        for (j=1; j<=num; j++)
  13.            if (num%j == 0)
  14.                k++;
  15.        if (k == 2 || num == 1){
  16.            cont++;
  17.            cout <<"El numero "<<num<<" esprimo"<<endl;
  18.        }
  19.        else cout <<"El numero "<<num<<" NO esprimo"<<endl;
  20.    }
  21.    cout <<"El numero de primos es :"<<cont<<endl;
  22.    return 0;
  23. }
Saluditos!.



Buen code, a veces hago las cosas mas complicadas de lo que son jajaja. Un saludo!
Páginas: 1 2 [3] 4 5 6 7
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines