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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  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 ... 24
51  Programación / Programación C/C++ / Re: Punteros! en: 20 Mayo 2016, 21:40 pm
Hola la verdad es que si puedes usar el -> pero es una chorrada cuando hablamos de arreglos ya que con acceder al arreglo en forma de indice basta

Pero si quieres que tu codigo original funcione basta con que imprimas los valores asi

Código
  1. (pEmployee+indice)->id=800;
  2. printf("indice %d",(pEmployee+indice)->id);
52  Programación / Programación C/C++ / Re: Punteros! en: 20 Mayo 2016, 21:31 pm
Mira te dejo este codigo corregido para que le des una mirada:

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. typedef struct
  5. {
  6.    int id;
  7.    char name[50];
  8.    char lastName[50];
  9.    char email[50];
  10.    char gender[50];
  11.    char ip[50];
  12.  
  13. }Employee;
  14.  
  15. int main()
  16. {
  17.        Employee pEmployee[10];
  18.        int indice;
  19.  
  20.        printf("Ingrese el indice donde quiere guardar los datos: ");
  21.        scanf("%d",&indice);
  22.  
  23.  
  24.        pEmployee[indice].id=800;
  25.        strcpy(pEmployee[indice].name,"name"); //creo que un error lo tengo aca, como lo estoy guardando
  26.        strcpy(pEmployee[indice].lastName,"lastName");
  27.        strcpy(pEmployee[indice].email,"email");
  28.        strcpy(pEmployee[indice].gender,"gender");
  29.        strcpy(pEmployee[indice].ip,"ip");
  30.  
  31.        printf("ID: %d\t IP: %s",pEmployee[indice].id,pEmployee[indice].ip); //y ya me sale error..
  32.        return 0;
  33. }

En realidad no estas usando punteros, esta forma seria usando arreglos dinamicos o "punteros"

Código
  1. int main()
  2. {
  3.        Employee *pEmployee=malloc(sizeof(Employee)*10);
  4.        int indice;
  5.  
  6.        printf("Ingrese el indice donde quiere guardar los datos: ");
  7.        scanf("%d",&indice);
  8.  
  9.  
  10.        pEmployee[indice].id=800;
  11.        strcpy(pEmployee[indice].name,"name"); //creo que un error lo tengo aca, como lo estoy guardando
  12.        strcpy(pEmployee[indice].lastName,"lastName");
  13.        strcpy(pEmployee[indice].email,"email");
  14.        strcpy(pEmployee[indice].gender,"gender");
  15.        strcpy(pEmployee[indice].ip,"ip");
  16.  
  17.        printf("ID: %d\t IP: %s",pEmployee[indice].id,pEmployee[indice].ip); //y ya me sale error..
  18.  
  19.        free(pEmployee); //liberamos la memoria
  20.        return 0;
  21. }
53  Programación / Programación C/C++ / Re: Explicación de un codigo en: 8 Mayo 2016, 06:32 am
Lo que hace tu codigo primero es dividir el numero luego lo multiplica por dos  y despues compararlo con el numero original

Ejemplo
si ingresas un 5
el if quedaria asi ===> 5/2*2==5
que si resolvemos las operaciones realmente quedaria esto

5/2==> 2, en efecto daria dos y no 2.5 ya que en programacion cuando divides un variable de tipo int entre otro entero siempre dara un entero, para que quedara con decimales tendrias que cambiar el tipo de dato de int a float o especificar el numero como float ejemplo: 2.0
osea especificando la parte decimal

Despues haria esta operacion
2*2==>4
ya teniendo ese numero lo comparia con el 5 original si es igual da true en este caso dara un false por ende es impar

Otro ejemplo seria usando el numero 8
8/2 ==>4
4*2==> 8

8==8
Al comparar el resultado seria true por ende par

El algortimo funciona pero la forma clasica es hacerto

if(numero%2==0)
    esPar
else
  noesPar

Lo que hace es dividir el numero entre dos y si su residuo es cero entonces es par en caso contrario es impar.

si tienes dudas avisa
Saludos... :silbar:
54  Programación / Programación C/C++ / Re: C vs C++ [Civil War] en: 4 Mayo 2016, 06:07 am
Hola @boctulus en C no existen las referencias solo punteros encambio en pascal o c++ existe el concepto puntero y referencia, inclusive c++ incluye algunos otros conceptos como referencia a puntero el equivalente en C podria ser un puntero doble a diferencia de estos dos ultimos en pascal no se usan los punteros de manera indiscriminada solo cuando es necesario.

Ejemplos

paso por referencia en C
Código
  1. void foo(int *value){
  2.   *value=10;
  3. }
  4.  
  5. int main()
  6. {
  7.    int value=5;
  8.    //simula el paso por referencia
  9.    foo(&value);
  10.    printf("%d",value);
  11.  
  12.    return 0;
  13. }
  14.  

En C++

Código
  1. void foo(int &value){
  2.   value=10;
  3. }
  4.  
  5. int main(){
  6.  
  7.    int value=5;
  8.    foo(value);
  9.    cout<<value<<endl;
  10.    return 0;
  11. }
  12.  

En  Pascal

Código
  1. procedure foo(var value:Integer);
  2. begin
  3.  value:=10;
  4. end;
  5.  
  6. var
  7.  value:Integer;
  8. begin
  9.  value:=5;
  10.  foo(value);
  11.  WriteLn(value);
  12. end.
  13.  
55  Programación / Programación C/C++ / Re: C vs C++ [Civil War] en: 4 Mayo 2016, 01:16 am
Con respecto a esto "A muchos no les gusta o no entienden los punteros " creo que el origen es la forma en que se ensena, personalmente me gusta mas la  forma que implementa los punteros pascal principalmente para los que se estan iniciando en programacion, pero ya que se entienden son "faciles" de implementar.
56  Programación / Java / Re: Ayuda para que un metodo me devuelva un objeto en: 1 Mayo 2016, 03:44 am
Hola  @rych primero que todo tu codigo parece mas codico style C que codigo java, ya que
esta hecho de manera  secuencial lo cual no esta mal pero en java se "supe" se deberia trabajar con el paradigma de programacion orientada a objetos.

Bueno con respecto a tu pregunta la respuesta es esta:

Código
  1. public Alumno(Alumno a1,Alumno a2,Alumno a3 ){
  2.       if((a1.califacion>a2.califiacion) && (a1.califacion>a3.califiacion)){
  3.          return a1;
  4.       }
  5.       else if ((a2.califacion>a1.califiacion) && (a2.califacion>a3.califiacion)){
  6.           return a2;
  7.       }
  8.       else{
  9.          return a3;
  10.       }
  11.   }

Pero no es precisamente lo mejor, imagina que tienes mas de 3 alumnos esta funcion no serviria lo mejor es guardar tus alumnas en un arreglo o lista de alumnos para despues
recorrerlos con un for y saber cual tiene mejor califiacion.

Bueno me decidi ha armarte una posible solucion

Código
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class ElhackerNET {
  5.  
  6.  
  7.    public static void main(String[] args) {
  8.        Alumno al1=new Alumno("jose", 10, 8);
  9.        Alumno al2=new Alumno("Maria", 12, 9);
  10.        Alumno al3=new Alumno("Pedro", 11, 7);
  11.  
  12.        AdministrarAlumnos alumnos=new AdministrarAlumnos();
  13.  
  14.        //Insertar los alumanos uno por uno
  15.        alumnos.anadirAlumno(al1);
  16.        alumnos.anadirAlumno(al2);
  17.        alumnos.anadirAlumno(al3);
  18.  
  19.        //Mostramos los resultados
  20.        System.out.println("El promedio es "+alumnos.promedio());
  21.        System.out.println("El mejor estudiante es "+alumnos.mejorAlumno().getNombre());
  22.  
  23.  
  24.        //Eliminamos los alumnos
  25.        alumnos.eliminarAlumnos();
  26.    }
  27.  
  28. }
  29.  
  30. class Alumno{
  31.  
  32.    private String nombre;
  33.    private int edad;
  34.    private int calificacion;
  35.  
  36.    public Alumno(String nombre, int edad, int calificacion) {
  37.        this.nombre = nombre;
  38.        this.edad = edad;
  39.        this.calificacion = calificacion;
  40.    }
  41.  
  42.    public String getNombre() {
  43.        return nombre;
  44.    }
  45.  
  46.    public int getEdad() {
  47.        return edad;
  48.    }
  49.  
  50.    public int getCalificacion() {
  51.        return calificacion;
  52.    }  
  53. }
  54.  
  55. class AdministrarAlumnos{
  56.  
  57.    private List<Alumno> alumnos;
  58.  
  59.    /*Constructores de la clase*/
  60.    public AdministrarAlumnos(){
  61.       this.alumnos=new ArrayList<>();
  62.    }
  63.    public AdministrarAlumnos(List<Alumno> alumnos){
  64.       this.alumnos.addAll(alumnos);
  65.    }
  66.  
  67.    /*
  68.       Anadimos un solo alumno
  69.     */
  70.    public void anadirAlumno(Alumno alumno){
  71.        alumnos.add(alumno);
  72.    }
  73.  
  74.    /*
  75.       Anadimos una lista de alumnos
  76.     */
  77.    public void anadirAlumnos(List<Alumno> alumnos){
  78.        this.alumnos.addAll(alumnos);
  79.    }
  80.  
  81.  
  82.   /*
  83.     Obtenemos el promedio de las califaciones
  84.     */
  85.   public float promedio(){
  86.       float promedio=0;
  87.       for(Alumno a:alumnos){
  88.          promedio+=a.getCalificacion();
  89.       }
  90.       return promedio/alumnos.size();
  91.   }
  92.  
  93.   /*
  94.      Obtenemos el Alumno con la mejor calificacion
  95.    */
  96.   public Alumno mejorAlumno(){
  97.       int maxCalifacion=0;
  98.       Alumno xAlumno=null;
  99.  
  100.       for(Alumno a:alumnos){
  101.          if(maxCalifacion<a.getCalificacion()){
  102.            maxCalifacion=a.getCalificacion();
  103.            xAlumno=a;
  104.          }
  105.       }
  106.       return xAlumno;
  107.   }
  108.  
  109.   public void eliminarAlumnos(){
  110.     this.alumnos.clear();
  111.   }
  112.  
  113. }
  114.  
57  Foros Generales / Foro Libre / Re: "¿Era Jesús vegetariano? ¿Debería un cristiano ser vegetariano?" en: 29 Abril 2016, 02:15 am
En teoría al ser Jesus de origen judío  solo estaría exento de comer animales impuros como el cerdo como lo dice el pentateuco de ahi no veria razon para que no lo hiciera si fuera lo contrario creo que el motivo seria que simplemente no le gustaba la carne.  :silbar:

Saludos... ;D

58  Programación / Programación C/C++ / Re: Pointers en: 27 Abril 2016, 04:38 am
Hola no entiendo que quieres hacer, detalla mejor tu pregunta ya que tu codigo no es muy claro.

Si lo que quieres es invertir un arreglo de enteros una forma podria ser esta:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void reverseArray(int *arreglo, int tamano){
  5.    int *temp=new int[tamano];
  6.    int pos=0;
  7.  
  8.    for(int i=0;i<tamano;i++) //Copiamos el arreglo
  9.        temp[i]=arreglo[i];
  10.  
  11.    for(int j=tamano-1;j>=0;j--, pos++)  //Lo invertimos
  12.        arreglo[pos]=temp[j];
  13.  
  14.    delete[] temp;  //Liberamos la memoria
  15. }
  16.  
  17. void imprimirArreglo(int *arreglo,int tamano){
  18.    for(int i=0;i<tamano;i++)
  19.        cout<<arreglo[i]<<" ";
  20.    cout<<endl;
  21. }
  22.  
  23.  
  24. int main()
  25. {
  26.    int arreglo[]={1,2,3,4,5,6,7,8,9,10,12,13};      //Definiamos el arreglo
  27.    int tamano=sizeof(arreglo)/sizeof(int); //Tamano del arreglo
  28.  
  29.    imprimirArreglo(arreglo,tamano);
  30.    reverseArray(arreglo,tamano);
  31.    imprimirArreglo(arreglo,tamano);
  32.  
  33.    return 0;
  34. }
  35.  

Saludos...
59  Programación / Programación C/C++ / Re: Forward declaration generator en: 23 Abril 2016, 23:17 pm
Holal que es exactamente eso o para que sirve  ;D
Saludos...
60  Programación / Programación C/C++ / Re: Forma segura de implementar tipo Naturales positivos en: 23 Abril 2016, 06:35 am
Bueno lo mas cercano a lo que tu quieres son las famosas propiedades "lenguajes" como Delphi desde hace mucho años las implementan, son variables de clase que simulan estar accediendo a un variable comun y corriente

ejemplo:

Código
  1. Clase.miVariable:=valor;

Visualmente parece una simple asignación pero internamente se estan ejecutando métodos escritura y lectura que validan el valor asignado, para muchos mejor que los famosos getters y setters clásicos pero es ya cuestión de gustos.

Si no mal recuerdo c++ nativo no posee esto las únicas veces que lo he visto algo similar han sido en c++ builder de embarcadero y visual studio de microsoft.

Te dejo unos links si te interesan.  :silbar:

Version visual studio  :-[
https://msdn.microsoft.com/en-us/library/2f1ec0b1.aspx

Version c++ builder  ;D
http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4031/Implementing-a-Property-in-C.htm


Por ultimo dale una mirada a la biblioteca cstdint para implementar de manera mas comoda los enteros con y sin signo

ejemplo:



link:http://www.cplusplus.com/reference/cstdint/

Si tienes dudas avisa
Saludos...


PD: Eso que quieres implementar de:
Código
  1. Natural 5; // declaro 5 de tipo Natural
  2. Natural -3; // aca se lanzaria excepcion o error en tiempo de compilacion (de implementarse de alguna manera que no me imagino con macros que lo dudo)

Es imposible ya que Natural por fuerza es el tipo de dato por ende no puedes declarar una variable llamada 5 o -3

la implementacion correcta a la que te refieres es esta:
Código
  1. Natural value1=5;
  2. Nautral value2=-3;

y al momento de hacer la asignación valide los datos, similar a las propiedades que te mencione arriba.
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 24
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines