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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 [138] 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 ... 160
1371  Programación / Programación C/C++ / Re: un par de dudas sobre codigo en: 14 Enero 2012, 17:33 pm
No has indicado el lenguaje, supongo es C, ¿Correcto?

Si tengo dos vectores de enteros y quiero ver si son iguales, los he comparado asi:
Código:
if(num[0]==aleatorio[0] && num[1]==aleatorio[1] && num[2]==aleatorio[2] && num[3]==aleatorio[3])
hay alguna manera mas abreviada o otra formas de compararlos?
Para comparar dos arrays de enteros puedes utilizar la funcion memcmp (prototipo en string.h), esta recibe tres argumentos: las direcciones base de los arrays y el tercero es el numero de elementos (como caracteres).

En tu caso seria mas o menos así (N es el numero de elementos a comparar):
Código
  1. if (memcmp(num, aleatorio, N * sizeof *num) == 0){
  2.   /* Son iguales */
  3. }else {
  4.   /* Algun elemento distinto */
  5. }

Otra duda, si por ejemplo:
Código:
int a;
scanf("%d",&a);
if(125>a>100 ) FILE * fopen... (y que se abra un archivo)(y aqui un printf();)
if(200>a>125) FILE *fopen...(que se abra otro archivo distinto)printf()
if(a>200) FILE *fopen..(otro distinto tb) printf()...
y tengo esto en un bucle, ¿que puedo poner para que si ya puse por ejemplo 110 y me cree el primer archivo si luego lo vuelvo a poner no me lo vuelva a crear, abrir..?
No es posible utilizando solo C estándar ya que si bien la función "fopen" retorna diferente de NULL cuando el archivo se abre correctamente el caso contrario (retorna NULL) no permite concluir que no existe ya que la función puede fallar por otras razones (por ejemplo falla de dispositivo).

Tal vez haya una solución pero necesitamos que publiques el código fuente del programa.

Un saludo
1372  Programación / Programación C/C++ / Re: Probelma en C. Ayuda!!! en: 14 Enero 2012, 17:18 pm
Todo correcto salvo un detalle: no se debe utilizar la función "strcmp" de esa forma ya que "operador" no es un array, solo se puede almacenar en esta un carácter.

Basta con utilizar directamente el valor del carácter argv[2][0] o bien copiar este en la variable operador:
Código
  1. operador = argv[2][0];

Un saludo

1373  Programación / Programación C/C++ / Re: Ordenar un arreglo en c++ en: 14 Enero 2012, 14:38 pm
Ventajas hay varias, por ejemplo el manejo de memoria para almacenar el numero de elementos es cortesía de la clase, otra ventaja es tratar al vector como si fuera un array.

Un ejemplo de ello basado en tu programa (leer N números y ordenarlos) es:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <vector>
  7. using std::vector;
  8. typedef vector<int>::size_type vector_sz;
  9.  
  10. #include <algorithm>
  11. using std::sort;
  12.  
  13. int main()
  14. {
  15.   cout << "Indica el numero de elementos: ";
  16.   vector_sz num_elem;
  17.   if (! (cin >> num_elem) || num_elem < 1)
  18.      return 1;
  19.  
  20.   cout << "Introduce los numeros" << endl;
  21.   vector<int> v(num_elem);
  22.   for (vector_sz i = 0; i != num_elem; i++) {
  23.      cout << "v[" << i << "] == ";
  24.      cin >> v[i];
  25.   }
  26.  
  27.   sort(v.begin(), v.end());
  28.  
  29.   cout << "Vector ordenado" << endl;
  30.   for (vector_sz i = 0; i != num_elem; i++)
  31.      cout << ' ' << v[i];
  32.   cout << endl;
  33.  
  34.   return 0;
  35. }

Un saludo
1374  Programación / Programación C/C++ / Re: Ayuda con notepad en: 14 Enero 2012, 14:24 pm
Bueno, aquí hay varios problemas, para empezar HTML es un lenguaje de marcado, nada que ver con el lenguaje que mencionas (C#).

Si ya estas seguro del lenguaje indícalo así y alguno de los moderadores colocara el tema en el foro apropiado.

Si todavía no estas seguro una opción es el lenguaje tratado en este foro: C++.

Pero (y lo digo con la mejor intencion) por tus comentarios me parece mejor que empieces por estudiar programación en sus conceptos básicos, por ejemplo como funcionan lenguajes como C y C++ donde tienes un código fuente (texto plano que, en tu caso, editas en Notepad++) y este se procesa por el compilador para generar la aplicación y es esta ...

En mi opinión así te haces la vida mas fácil.

Un saludo
1375  Programación / Programación C/C++ / Re: Ordenar un arreglo en c++ en: 13 Enero 2012, 19:03 pm
Un problema (común, me temo) es aprender C++ sin sacar provecho de las facilidades que provee su biblioteca estándar. Como ya comento Xandrete lo mejor seria utilizar la clase "vector" (y de pasadita la función "sort").

Pero si la idea es practicar con el uso de arrays y punteros hay errores que corregir empezando por los nombres de los encabezados. Por favor revisa el tema |Lo que no hay que hacer en C/C++. Nivel basico|

En lo general el programa no funcionara correctamente por lo ya comentado: la declaración de una variable con el mismo nombre que un parámetro no es valida y el algoritmo tiene limites incorrectos.

La función de ordenación corregida es:
Código
  1. void ordenar (int arreglo[])
  2. {
  3.   int i, j, temporal;
  4.  
  5.   for (i = tam - 1; i > 0; i--)
  6.      for (j = 0; j < i; j++)
  7.         if (arreglo[j] > arreglo[j + 1]) {
  8.            temporal = arreglo[j];
  9.            arreglo[j] = arreglo[j + 1];
  10.            arreglo[j + 1] = temporal;
  11.         }
  12. }

Un saludo
1376  Programación / Programación C/C++ / Re: errores de programa en C al compilar gcc en: 13 Enero 2012, 18:40 pm
He hecho  un programita  en C que exactamente  rellenara una tabla con los 10 primeros números d ela sucesión de Fibonacci.
Abonando a lo ya comentado ...

Lo primero es conseguir (y devorar) un buen libro o manual sobre C, para ello empieza revisando el tema [Libros/Papers] C/C++.

Debes eliminar todas la llamadas a scanf ya que no tienen caso, en su lugar coloca un bucle para imprimir los números de la serie:
Código
  1. for (i = 0; i < 10; i++)
  2.   printf(" %d", tabla[i]);
  3. putchar('\n');

También hay que cambiar la definición de la macro "N" (el carácter '=' esta de mas) o bien eliminarla ya que no se utiliza en el programa.

Un saludo
1377  Programación / Programación C/C++ / Re: Ayuda en codigo que genera aleatorio en: 6 Enero 2012, 17:05 pm
una cosita mas hay algo facil para hacer que ninguno de los numeros generados sean iguales? Porque aveces sale por ejemplo 778 o 655 porque lo unico que se me ocurre es poner sentencias IF comparando uno con el anterior y si es igual, que lo vuelva a generar.
En C estándar no hay forma de garantizar que los números no se repitan, eso debe hacerse de forma manual ya sea comparando con los ya generados (como comentas) o bien, si el rango de números es pequeño, almacenando estos en un array y seleccionando (generando el indice) de forma aleatoria.

Por ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define NUM_ELEM 16
  6.  
  7. int main(void)
  8. {
  9.   int num[NUM_ELEM];
  10.   int i;
  11.   int j;
  12.  
  13.   srand((unsigned) time(NULL));
  14.  
  15.   for (i = 0; i < NUM_ELEM; i++)
  16.      num[i] = i;
  17.  
  18.   /* Seleccionar los numeros en orden aleatorio */
  19.   for (i = NUM_ELEM; i > 0; i--){
  20.      j = rand() % i;
  21.      printf(" %2d", num[j]);
  22.  
  23.      num[j] = num[i - 1];
  24.   }
  25.   putchar('\n');
  26.  
  27.   return EXIT_SUCCESS;
  28. }
Por supuesto ello no sirve si el rango de valores es significativo.

Un saludo
1378  Programación / Programación C/C++ / Re: Ayuda con un programa en C en: 6 Enero 2012, 16:49 pm
A riesgo de repetir las soluciones que ya te han dado ...

El problema en la función "recoger_libro" no es la declaración del parámetro "libro" sino su uso.

Cuando una función se declara de esta forma:
Código
  1. void recoger_libro(T_libreria libro[]) ...
Se procesa como si el parámetro fuera declarado así:
Código
  1. void recoger_libro(T_libreria *libro) ...
Y para acceder al objeto apuntado por "libro" debes utilizar el operador "[]" (como ya te indicaron) o bien el operador "->".

Por ello hay que cambiar esa funcion a:
Código
  1. int recoger_libro(T_libreria libro[])
  2. {
  3.   int n, i;
  4.  
  5.   printf("Libros a introducir? ");
  6.   scanf("%d", &n);
  7.  
  8.   for (i = 0; i < n; i++){
  9.      printf("Titulo del libro: ");
  10.      gets(libro[i].titulo);
  11.  
  12.      printf("Autor del libro: ");
  13.      gets(libro[i].autor);
  14.  
  15.      printf("A%co de publicaci%cn: ", 164, 162);
  16.      scanf("%d", &libro[i].fecha_publicacion.anno);
  17.  
  18.      printf("Mes de publicaci%cn: ", 162);
  19.      scanf("%d", &libro[i].fecha_publicacion.mes);
  20.  
  21.      printf("Datos guardados.");
  22.      system("cls");
  23.   }
  24.  
  25.   return i;
  26. }

También hay que evitar el uso de la función "gets" utilizando en su lugar "fgets". Mas información sobre el tema en |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
1379  Programación / Programación C/C++ / Re: [Duda] Creación de un programa que calcule la moda en: 6 Enero 2012, 16:10 pm
Pero una cosa Ghastlyx, si lo hago como tu dices, como creo una variable para cada palabra? Debo crear otro vector que lo vaya guardando no ? Sino no veo como hacerlo, aun así voy ha intentarlo haber que sale.
No. No necesitas crear otro vector.

Primero lees cada una de las palabras y las almacenas en el vector de strings, eso ya lo tienes (salvo algunos detalles como el uso de "and not(false)", esa parte hay que cambiarla). Agregas cada palabra al vector mediante la función miembro "push_back" (puedes revisar ejemplos mediante el motor de búsqueda de los foros).

Después ordenas el vector mediante la función "sort", antes de utilizarla debes incluir el encabezado <algorithm>.

Por ultimo revisas los elementos del vector como te indico ghastlyX utilizando el operador "[]" (como si fuera un array).

Un saludo
1380  Programación / Programación C/C++ / Re: [RETO] + Funcion Extraer Numeros de Cadenas! [Cpp/C] en: 6 Enero 2012, 00:23 am
¡Absurda! ¿Porqué?! :xD

const char *p;

indica que los caracteres apuntados por p no serán modificados como es el caso de la función. La función printf también hace uso de const char *.

BlackZeroX (Astaroth) se refiere (supongo) a que no es necesario declarar la variable ya que en su lugar puedes utilizar el parámetro "s". De hacerlo así la función se reduce a:
Código
  1. int extraernum(const char *s)
  2. {
  3.   int n = 0;
  4.  
  5.   while (*s){
  6.      if (isdigit(*s))
  7.         n = 10 * n + *s - '0';
  8.  
  9.      s++;
  10.   }
  11.  
  12.   return n;
  13. }

Un saludo
Páginas: 1 ... 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 [138] 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines