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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 132
151  Programación / Programación C/C++ / Re: strcpy en puntero matriz en: 23 Junio 2014, 19:24 pm
La forma que propuso el compañero engel lex seria la mas apropiada. El cast en el nuevo estandar de C es innecesario ya que malloc retorna un puntero generico el cual puede ser asignado a cualquier tipo de puntero excepto los punteros de función, sin la necesidad de un molde.
 .................................................

En C, no así, creo, en C++.

Pero estoy de acuerdo con lo que había propuesto engel lex, sólo que me salió más breve, sorry:

Código
  1. cad2[0] = malloc(10) = malloc(10*1) = malloc(10*sizeof (char))

...............................................................
 Con respecto a sizeof por cuestiones de seguridad creo que es importante calcular el tamaño exacto de un tipo de dato en particular ya que segun las implementaciones este puede variar
................................

Habalmos, yo al menos, de char, no de int ni float. ¿Cambia el tamaño de char en distintas implementaciones, o no es siempre 1?. Me acabas de crear una duda. :o

¡¡¡¡ Saluditos! ..... !!!!


152  Programación / Programación C/C++ / Re: strcpy en puntero matriz en: 23 Junio 2014, 16:43 pm
sip es asi leosansan... en dado caso por seguridad...
Código
  1. malloc( 10 * sizeof( char ) );

¿No sería?:

Código
  1. cad2[ 0 ] = ( char* ) malloc( 10 );

¡¡¡¡ Saluditos! ..... !!!!


153  Programación / Programación C/C++ / Re: strcpy en puntero matriz en: 23 Junio 2014, 16:24 pm


* Con malloc
Código
  1. char *cad2[ 3 ];
  2. cad2[ 0 ] = malloc( 10, sizeof( char ) );
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

¿No sería?:

Código
  1. cad2[ 0 ] = malloc( 10 );

¡¡¡¡ Saluditos! ..... !!!!


154  Programación / Programación C/C++ / Re: Multiplicación de vectores C++ en: 20 Junio 2014, 21:03 pm
Para imprimir el vector  C de forma descendente simplemente puedes utilizar un for de esta forma:
............................

Pues a mi entender, claro, va a ser que no. De esa forma los imprime al revés pero no ordenados.

Necesita implementar previamente un método que los ordene de mayor a menor, al menos como yo lo entiendo, aunque vaya usted a saber, si no se explican mejor podría ser lo que propones.


¡¡¡¡ Saluditos! ..... !!!!


155  Programación / Programación C/C++ / Re: Multiplicación de vectores C++ en: 20 Junio 2014, 19:06 pm
Hola!!

Tengo que realizar el siguiente algoritmo:
Construya un algoritmo que realice la siguiente operación. Sean 2 vectores numéricos A y B de 9 elementos numéricos cada uno. El vector A se debe llenar solo con valores pares y el vector B solo con valores impares. En un vector C guarde el resultado de ejecutar 3A + 2B. Imprima el vector C en forma descendente. Determine el promedio del vector A y el promedio del Vector B.

Se presentan errores al realizar las multiplicaciones he intentado de varias formas pero no logro obtener un buen resultado y no sé como realizar la impresión en forma descendente! :c

Les agradecería si lograran ayudarme este es el código


Ante semejante petición cualquiera se niega.

Permite me la licencia de hacerte algunas observaciones respecto al código.

* Creo que cuando pusiste:

Código
  1. A[p]*3;

en realidad querías poner:

Código
  1. A[i] *= 3;

* Usar una línea para declarar cada variable "desparrama" en exceso el código. Yo te sugiero que agrupes al menos por tipo:

Código
  1.  int A[N], B[N], C[N];
  2.  int sum1 = 0, sum2 = 0;
  3.  float prom1, prom2;

* Al calcular los promedios necesitas "algo" para que te salgan decimales si procede. Una opción:

Código
  1.  prom1 = 1. * sum1 / N;
  2.  prom2 = 1. * sum2 / N;

* Deberías usar una confirmación de que el valor introducido es realmente par o impar, y si no lo es volver a pedir el dato:

Con las sugerencias anteriores y a falta de que implementes un método para la ordenación del vector C[]:

Código
  1. #include <iostream>
  2. #include <cstdlib> /// para "sysstem"
  3. #define N 9
  4.  
  5. using namespace std;
  6. int main(){
  7.  int A[N], B[N], C[N];
  8.  int sum1 = 0, sum2 = 0;
  9.  float prom1, prom2;
  10.  for (int i = 0; i < N; i++){
  11.    do{
  12.      cout << "Ingrese un numero PAR " << i+1 << ": ";
  13.      cin >> A[i];
  14.      sum1 += A[i];
  15.      A[i] *= 3;
  16.    }while ( A[i] %2 != 0 );
  17.    do{
  18.      cout << "Ingrese un numero IMPAR " << i+1 << ": ";
  19.      cin >> B[i];
  20.      sum2 += B[i];
  21.      B[i] *= 3;
  22.      C[i] = A[i] + B[i];
  23.    }while ( ( B[i] + 1 ) %2 != 0 );
  24.  }
  25.  prom1 = 1. * sum1 / N;
  26.  prom2 = 1. * sum2 / N;
  27.  ///
  28.  cout  << endl << "La suma de 3A + 2B es igual a: " << endl;
  29.  for (int i = 0; i < N; i++)
  30.    cout << C[i] << "   ";
  31.  cout  << endl << "El promedio del vector A es igual a: " <<  prom1 << endl;
  32.  cout << "El promedio del vector B es igual a: " <<  prom2 << endl;
  33.  system ("PAUSE");
  34.  /// Aqui te falta implementar un sistema de ordenacion del C[]
  35.  /// Si no  te quieres liar usa el metodo burbuja
  36.  return EXIT_SUCCESS;
  37. }

Y por cierto, al usar las etiquetas GeSHi elige las de C++ para que el código salga numerado y coloreado.

¡¡¡¡ Saluditos! ..... !!!!


156  Programación / Programación C/C++ / Re: Error de compilación programa c++ en: 18 Junio 2014, 00:11 am
El error se debe al manejo del índice de la matriz, que se va más allá de 30, tal como lo tienes (observa si no que inicias con p=2) y se va a 113, mucho mayor que los 30 que tienes declarados.

Con ese detalle corregido e indentando el código un poquitito mejor, creo:

Código
  1. #include<cstdlib>
  2. #include<iostream>
  3.  
  4. using namespace std;
  5.  
  6. void Primos(){
  7.  int n = 2, k = 0, p, nc = 0, Primos[30];
  8.  cout << "Los primeros 30 numeros primos son:" << endl << endl;
  9.  while( n <= 115 ){
  10.    for ( p = 2; n % p != 0; p++ );
  11.    if ( p == n ){
  12.      cout << n <<", ";
  13.      Primos[k]= n;
  14.      cout << Primos [k++] << ", ";
  15.      if( ++nc % 10 == 0 )
  16.        cout << endl << endl;
  17.    }
  18.    n++;
  19.  }
  20.  cout << endl << endl;
  21. }
  22.  
  23. int main(){
  24.  Primos();
  25.  system ("PAUSE");
  26.  return EXIT_SUCCESS;
  27. }

¡¡¡¡ Saluditos! ..... !!!!


157  Programación / Programación C/C++ / Re: Como remover espacios en C/C++? en: 17 Junio 2014, 14:22 pm
Que todo sea por una línea menos  ;) :

Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.  int i, k, flag = 0, j = 0;
  5.  char cadena[] = "A  BCD   EF 9'12  3 45'   G  H  I  '67   890'  J  K  MN   '1'   L  9  ";
  6.  char cadena_final[sizeof(cadena)] = {0};
  7.  for ( i = 0; cadena[i]; i++ ){
  8.    flag = ( cadena[i] == '\'' ) ? 1 - flag : 0 + flag;
  9.    if ( ( cadena[i] != ' ')  || flag == 1 )
  10.      cadena_final[j++] = cadena[i];
  11.  }
  12.  printf ( "\n%s\n", cadena_final );
  13.  return 0;
  14. }

¡¡¡¡ Saluditos! ..... !!!!


158  Programación / Programación C/C++ / Re: Como remover espacios en C/C++? en: 15 Junio 2014, 21:37 pm
Con una idea parecida a daryo solo que desplazo los caracteres de la cadena a la izquierda cada vez que encuentro un espacio fuera de los delimitadores:

Código
  1. #include <stdio.h>
  2.  
  3. void eliminar ( char cadena[], int pos ){
  4.  int i;
  5.  for ( i = pos; cadena[i]; i++ )
  6.    cadena[i] = cadena[i+1];
  7. }
  8.  
  9. int main(void){
  10.  int i, flag=0;
  11.  char cadena[] = "A  BCD   EF 9'12  3 45'   G  H  I  '67   890'  J  K  MN   '1'   L  9  ";
  12.  for ( i = 0; cadena[i] ; i++ ){
  13.    if ( cadena[i] == '\'' )
  14.      flag = ( flag ==1 ) ? 0 : 1;
  15.    else if ( flag == 0 && cadena[i] == ' ' )
  16.      eliminar ( cadena, i-- );
  17.  }
  18.  printf ( "\n%s\n", cadena );
  19.  return 0;
  20. }

Y con la misma idea, pero un poco más cpmprimido:

Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.  int i, flag=0, j = 0;
  5.  char cadena[] = "A  BCD   EF 9'12  3 45'   G  H  I  '67   890'  J  K  MN   '1'   L  9  ";
  6.  char cadena_final[sizeof(cadena)] = {0};
  7.  for ( i = 0; cadena[i]; i++ ){
  8.    if ( cadena[i] == '\'' )
  9.      flag = ( flag ==1 ) ? 0 : 1;
  10.    if ( (flag == 0 &&  cadena[i] != ' ')  || flag == 1 )
  11.      cadena_final[j++] = cadena[i];
  12.  }
  13.  printf ( "\n%s\n", cadena_final );
  14.  return 0;
  15. }

¡¡¡¡ Saluditos! ..... !!!!


159  Programación / Programación C/C++ / Re: Solución a error de bibliotecas libstdc++-6.dll y otras con SFML y CodeBlocks en: 15 Junio 2014, 14:56 pm
Hola gente. Hasta hace un momento habia estado luchando por hacer funcionar SFML con CodeBlocks hasta que lo logre. El error que me mostraba era este:

O si lo tienen en ingles:



Al menos a mi me funcionó lo siguiente:

Ir a la carpeta Equipo y con el botón derecho elegir Propiedades.

Elegir ahí Configuración avanzada del sistema y en la nueva ventana Variables de entorno.

Ahora en Variables del sistema editas Path y añades:

;C:\CONOCI\PROGRAMACION\CodeBlocks\MinGW\msys\1.0\bin;%PATH%;

donde pones la dirección en que tú tengas instalado el MinGW, claro.

Y ya está.

Y yo incluyo en la carpeta del proyecto el contenido de SMFL\bin.

Por cierto, trabaja con SFML 2.1, pero tienes que elegir "Empty project", no el "SFML project".

¡Suerte!.


¡¡¡¡ Saluditos! ..... !!!!


160  Programación / Programación C/C++ / Re: Array de cadenas por teclado en C en: 11 Junio 2014, 23:05 pm
........................................

Acá lo modifiqué un poco a lo que había echo. Lo pruebo y me muestra correctamente los datos luego de cada pedido, pero mal al final. O sea, al principio pido que se escriba "cadena0", se asigna a letra, se asigna letra a a[0], y se muestran letra y cadena[0] correctamente. Se hace eso con las tres a. Pero al final cuando las imprime todas las muestra como "cadena2" a las tres (o sea, la última entrada escrita). No llego a entender por qué reescribe las dos primeras a.
...........................


Como tan acertadamente apunta JorgeEMX los tres  punteros "a" apuntan a la dirección de "letra" y a medida que introduces un nuevo valor de "letra" con gets estas "actualizando" la dirección, y por tanto el valor al que apuntan, de los punteros anteriores.

Lo veras mejor si imprimes el puntero del gets y los anteriores. De esa manera veras mejor como se actualizan cada vez que usas el gets los valores a los que apuntan  los punteros:

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  char *a[2];
  5.  char letra[50];
  6.  puts("Ingrese cadena0:");
  7.  a[0]=gets(letra);
  8.  printf("a[0]=%s  \n",a[0]);
  9.  
  10.  puts("Ingrese cadena1:");
  11.  a[1]=gets(letra);
  12.  printf("a[0]=%s  \n",a[0]);
  13.  printf("a[1]=%s  \n",a[1]);
  14.  
  15.  puts("Ingrese cadena2:");
  16.  a[2]=gets(letra);
  17.  printf("a[0]=%s  \n",a[0]);
  18.  printf("a[1]=%s  \n",a[1]);
  19.  printf("a[2]=%s  \n",a[2]);
  20.  return 0;
  21. }

Citar
Ingrese cadena0:
111
a[0]=111
Ingrese cadena1:
222
a[0]=222
a[1]=222
Ingrese cadena2:
333
a[0]=333
a[1]=333
a[2]=333

Process returned 0 (0x0)

Como ves los valores se han ido actualizando en cada gets.

¡¡¡¡ Saluditos! ..... !!!!


Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines