Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - GGZ

#91
Hola a todos!

Estaría bueno agregar algún plugin para dar votos a un artículo.
¿Hay algún plugin para dar negativos o positivos a ciertos artículos?
Y también a respuestas del propio artículo.

Saludos!
#93
Programación C/C++ / Re: Conectarme a servidor SMTP
24 Diciembre 2015, 06:13 AM
El protocolo de correo SMTP no requiere autenticación, no necesitás conectarte al SMTP de Gmail para enviarte a un correo.

Podés enviarte un correo desde una dirección falsa, en Gmail te va a saltar un aviso de que la dirección de correo puede ser falsa, de todos modos te llegará.

\m/
#94
Programación C/C++ / Re: programadores c/c++
24 Diciembre 2015, 06:07 AM
Como se nota que ni siquiera hiciste un mínimo esfuerzo para buscar información hay libros por todos lados. Usa GOOGLE!

Este tipo de post deberían ser directamente borrados.

>:(
Saludos!
#95
Primero de todo para que tenés una variable llamada IP si ni siquiera la usás.
Segundo, te faltó la etiqueta de código, queda horrible así.

Específicamente, ¿qué querés hacer? ¿comprobar si un puerto está abierto?
¿A qué carajo te referís con validación de IP?

Ya habías preguntado algo parecido ...

Puede que haya otras formas de hacerlo.
#96
Scripting / Re: Instalacion bash para Arch Linux
24 Diciembre 2015, 05:47 AM
Si podés ejecutar comandos desde la consola, como no vas a poder ejecutar scripts?

WTFF!!

Vos tenés por lo menos la más mínima idea de lo que estás hablando ?

#97
Hola a todos!

He creado estas funciones con el fin de entender como funcionan cada una de ellas.
Por eso algunas ya están definidas como por ejemplo tail,reverse, zip, ...

Código (diff) [Seleccionar]
fac 0 = 1
fac n = n * fac (n-1)

replicate' 0 n = [n]
replicate' x n = n:replicate (x-1) n

take' 0 xs = []
take' n [] = []
take' 1 xs = [head xs]
take' n xs = head xs:take (n-1) (tail xs)

reverse' [] = []
reverse' (x:xs)=last (x:xs):reverse'(init (x:xs))

haycero [] = False
haycero (x:xs) = (x==0) || haycero (xs)

todosceros [] = error "No está definido para una lista vacía"
todosceros [x] = (x==0)
todosceros (x':x:xs) = (x'==0) && todosceros(x:xs)


maximo n x = if (n>x) then n else x
minimo n x = if (n>x) then x else n

maximo' n x
 | n>=x = n
 | n<x = x

zip' xs []         = []
zip' [] ys         = []
zip' (x:xs) (y:ys) = [(x,y)]  ++  zip' xs ys

zip'' xs [] = []
zip'' [] ys = []
zip'' (x:xs) (y:ys) = (x,y) : zip'' xs ys

nth [] n = error "No está definida para lista vacía"
nth xs n = if (length xs > n) then xs !! n else error "No se puede acceder a esa posición ya que no existe"



{-
Comprueba si un elemento dado está en la lista
-}

elem' n []     = False
elem' n (x:xs) = (n==x) || elem' n xs

{-
ANALISIS POR CASOS
-}

elem'':: Eq a => a -> [a] -> Bool
elem'' n xs
 | length xs==0  = False
 | otherwise     = (n==head xs) || elem'' n (tail xs)

{-
quicksort [10,2,5,3,1,6,7,4,2,3,4,8,9] = [1,2,2,3,3,4,4,5,6,7,8,9,10]
-}


{-
zip [] []= []
zip [2] [5] = [(2,5)] ++ zip [] []
zip [1,2] [4,5] = [(1,4)] ++ zip[2][5]
-}

length' [] = 0
length' (x:xs) = 1 + length' xs

{-
repeat' 0
repeat'
-}

map' f [] = []
map' f (x:xs) = f x : map' f xs

tail' [] = []
tail' (x:xs) = xs

{-
filter (>3) [1,2,3,4,10,10,10,20,20,20] = [4,10,10,10,...]
-}

sumatoria [] = 0
sumatoria (x:xs) = x+sumatoria xs

multiplicar [] = 1
multiplicar (x:xs) = x*multiplicar xs

sumatoria' xs
 | length (xs) == 0 = 0
 | otherwise = head xs+sumatoria' (tail xs)

multidos [] = []
multidos (x:xs) = 2*x : multidos xs

multiPor n [] = []
multiPor n (x:xs) = n*x : multiPor n xs

h [] = [1]
h (x:xs) = (x+1) : h xs

test [] = []
test (5:[]) = error "Tu lista empieza por 5"

h' [] = [1]
h' (x:xs) = [(x+1)] ++ h xs

g 0 = error "El numero es cero"
g n = error "El numero no es cero"

multiplicar' xs
| length xs == 0 = 1
| length xs /= 0 = head xs*multiplicar'(tail xs)


filter' f [] = []
filter' f (x:xs)
     | f x =  x:filter' f xs
     | otherwise = filter' f xs


Ejecutan ghci y lo cargan con :l <nombre-del-archivo>
Después hagan los llamados que quieran.

Perdón como se ve, no hay una etiqueta para Haskell.

Saludos!
#98
Hola a todos!,


¿El proyecto sigue en pie?, la página está caída.

¿Qué pasó?
¿Existe algún otro proyecto parecido en el foro?

Saludos!
#99
Este es todo el programa

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

#define MAXTOKEN 100
#define NUMBER '0'

struct node {
  int v;
  struct node *next;
};

struct node *head = NULL;

void push(int i) {
  struct node *nuevo;
  nuevo = (struct node *) malloc (sizeof(struct node));
  if (nuevo==NULL){printf("No hay memoria suficiente.\n"); exit(-1);}
  nuevo->v =i;
  nuevo->next = head;
  head = nuevo;
}

int pop() {

  struct node *nuevo;
  int aux;

  nuevo = head;

  if (!nuevo) return 0;
  head = nuevo->next;

  aux = nuevo->v;
  free(nuevo);
  return aux;

}

int get_token(char buffer[]) {
  int a,c;

  c=getchar();
  buffer[0]=c;
  while (c == ' ' || c == '\t' || c=='\n')buffer[0]=c=getchar();  // SI ENCONTRAS UN ESPACIO UN SALTO DE LINEA O UN TABULADOR SEGUI LEYENDO

  buffer[1] = '\0';

  if (!isdigit(buffer[0]))
    return c;

  a = 0;
  if (isdigit(c))
    while (isdigit(buffer[++a] = c = getchar()));
     
  buffer[a] = '\0';
  if (c != EOF)
    return NUMBER;
}

void mostrar_lista(){
  struct node *auxiliar;
  int i;
  i=0;
  auxiliar=head;
  while (auxiliar!=NULL){
      printf("%d\n", auxiliar->v);
      auxiliar=auxiliar->next;
      i++;
  }
}

int main(void) {
  int type;
  int n;
  int sustraendo;
  int divisor;

  char buffer[MAXTOKEN];

  while((type = get_token(buffer)) != EOF) {
    switch(type) {
    case NUMBER:
      n = atoi(buffer); // convierte de cadena a entero
      push(n);
      break;
    case '+':
      push(pop() + pop());
      break;
    case '-':
      sustraendo = pop();
      push(pop() - sustraendo);
      break;
    case '*':
      push(pop() * pop());
      break;
    case '/':
      divisor = pop();
      if (divisor != 0){
          push(pop() / divisor);
      }
      else {
          printf("¡ERROR! ¡No se puede dividir por cero!\n");
      }
      break;
    default:
      printf("error: comando desconocido %s\n", buffer);
      break;
    }
  }

  mostrar_lista();

  return 0;

}



Calculadora polaca inversa
#100
 c=getchar();
buffer[0]=c;
while (c == ' ' || c == '\t' || c=='\n')buffer[0]=c=getchar();  // SI ENCONTRAS UN ESPACIO, UN SALTO DE LINEA O UN TABULADOR ENTONCES SEGUI LEYENDO


¿Está bien ese razonamiento?

Que es lo mismo que

while ((buffer[0] = c = getchar()) == ' ' || c == '\t' || c=='\n');

¿O me equivoco?