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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 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 32 33 34 35 36 37 ... 132
211  Programación / Programación C/C++ / Re: Algoritmo: Suma N numeros pares implementando ciclo while en: 12 Abril 2014, 16:07 pm
Pero él pidió el uso de while.

Si y en mi primer mensaje se lo di con un while. Lo otro ha sido una curiosidad matemática. ;)

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


212  Programación / Programación C/C++ / Re: Algoritmo: Suma N numeros pares implementando ciclo while en: 12 Abril 2014, 14:59 pm
Teniendo en cuenta que la suma de los pares es la suma de los términos de una progresión aritmética: 2, 4,6, 8, 10, 12.......donde el término general es:

an=a1+(n-1)*d, donde d=2

se puede aplicar:

Sn=(a1+an)*n/2=(2+2+(n-1)*2)*n/2=

=(4+2*n-2)*n/2=)(2+2*n)*n/2=(n+1)*n ==> Sn=n*(n+1)

De donde sale la curiosa propiedad que mencioné en mi mensaje anterior. Por ejemplo, empezando desde 2, la suma de los cinco primeros pares es 5*6=30.

Claro que si empezamos contando, y sumando, los pares desde 0,es decir 0,2,4,6,8,... entonces queda la fórmula anterior queda como:

 Sn=n*(n-1)

Y la suma de los cinco primeros pares es 5*4=20.

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



213  Programación / Programación C/C++ / Re: Algoritmo: Suma N numeros pares implementando ciclo while en: 11 Abril 2014, 23:18 pm
* El inicializar las variables es el primer paso:

Código
  1. int i=0,N=2,Num,Suma=0;

* N=2 que incrementando de dos en dos irán dando los pares a sumar a suma.

* una variable i para ir contando los términos que se toman hasta Num.

Con ello el while te quedaría:


Código
  1. while (i<Num) {
  2.      cout<<N<<endl;//esto obra, es para ver los pares que salen
  3.      Suma+=N;
  4.      N+=2;
  5.      i++;
  6. }
  7.  

El resto O.K.

Como cosa curiosa la suma es el número de pares pedido por el mismo más uno, te podrías ahorrar el while:


Código
  1. int main()
  2. {
  3.  int i=0,N=2,Num,Suma=0;
  4.  cout<<"Ingrese un valor numerico: ";
  5.  cin>>Num;
  6.  cout<<endl<<"La suma de los primeros "<<Num<<" numeros impares es igual a: "      <<Num*(Num+1)<<endl;
  7.  system ("PAUSE");
  8.  return EXIT_SUCCESS;
  9. }

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


214  Programación / Programación C/C++ / Re: com imprimir varibles varias veces en: 11 Abril 2014, 21:39 pm
....................................
 si es esa tabla nada mas que yo la habia encontradocon los simbolos para ya no leer y  rapido identificarlos con la simbologia pero gracias me servira.



Al final de la página encuentras el enlace a los 127 primeros caracteres o tabla no extendida de ASCII.
215  Programación / Programación C/C++ / Re: Duda EOF en: 11 Abril 2014, 21:25 pm

muchas gracias


De nada campeón. Y espero que alguien más lucido nos explique el por qué del comportamiento anómalo de len en el while.

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


216  Programación / Programación C/C++ / Re: Cadenas de caracteres con punteros en: 11 Abril 2014, 21:12 pm
pero si vos me decis que en ese puntero se almacena la direccion de la cadena "Hola como te va", porque cuando quiero imprimir la cadena no se pone el astarisco?

Código:

    char *cadena = "Hola como te va";
    printf("%s", cadena);



Porque el puntero apunta al primer caracter de la cadena, ni más ni menos. Otra cosa es la cadena entera.

Puedes comprobarlo con:


Código
  1. printf("%c", *cadena);

Citar
H

¿Ves como apunta al primer caracter?. Ya si quieres la cadena entera usas cadena sin el asterisco inicial y, como cadena que es, con el formato %s en el printf.

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


217  Programación / Programación C/C++ / Re: Duda EOF en: 11 Abril 2014, 21:00 pm
perdon, pero no me funciona

Funcionar, lo que se dice funcionar, funciona. Otra cosa es que los resultados sean los previstos, que no lo son.

Además de declarar main como int inicializo max a cero, que no lo estaba y la salida poniendo un printf justito después del while:


Código
  1. printf("len=%d \n", len);

Citar
123
len=1
12345
len=1
1234567
len=1
12
len=1
^Z
123

Process returned 0 (0x0)


Al parecer la variable len no pilla el retorno de la función, al menos dentro del while ¿?. :huh:

En cambio si la sacamos del while funciona perfecto. Lo he ajustado para que al entrar un enter solitario, sin nada en la linea, se acabe la ejecución sin así tener que recurrir al CTR-Z:


Citar
123
len=4
max=4
12345
len=6
max=6
123456789
len=10
max=10
3215
len=5
32
len=3
1
len=2
 <==ESTO ES UN ENTER SOLITARIO
len=1

Cadena mas larga: 123456789

Process returned 0 (0x0)


Código
  1. #include <stdio.h>
  2.  
  3. #define MAXLINE 1000
  4.  
  5. int getline(char line[], int maxline);
  6.  
  7. void copy(char to[], char from[]);
  8.  
  9. int main(){
  10.    int len=2, max=0;
  11.    char line[MAXLINE];
  12.    char longest[MAXLINE];
  13.    while (len>1){
  14.        len=getline(line, MAXLINE);
  15.        printf("len=%d   ", len);
  16.        if(len > max){
  17.            max = len;
  18.            printf("max=%d\n", max);
  19.            copy(longest, line);
  20.            }
  21.        }
  22.    if(max > 0)
  23.        printf("\nCadena mas larga: %s", longest);
  24.    return 0;
  25. }
  26.  
  27. int getline(char s[], int lim){
  28.    int c, i;
  29.    for(i=0; i<lim-1 && (c=getchar()) != EOF && c != '\n'; ++i)
  30.        s[i] = c;
  31.    if(c == '\n'){
  32.        s[i] = c;
  33.        ++i;
  34.    }
  35.    s[i] = '\0';
  36.    printf("%d\n", i);
  37.    return i;
  38. }
  39.  
  40. void copy(char to[], char from[]){
  41.    int i;
  42.    i=0;
  43.    while((to[i] = from[i]) != '\0'){
  44.        ++i;
  45.    }
  46. }

Aún no le encuentro justificación al comportamiento de len dentro del while. :silbar:

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





218  Programación / Programación C/C++ / Re: Piramide de asteriscos en: 11 Abril 2014, 15:47 pm
En este enlace tienes multitud de opciones. Aunque son para rombos, en tu caso es más sencillo, sólo tomas la mitad.

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



EDITO: En tu caso, para no variar mucho lo que tienes, te vale:

Código
  1. ..................
  2. scanf ...............
  3. for (k=1;k<=altura;k++)
  4. {
  5.  for (j=1;j<=altura-k;j++)
  6.    printf(" ");
  7.  for(j=1;j<=2*k-1;j++)
  8.    if (j%2==0)
  9.      printf(" ");
  10.    else
  11.      printf("*");
  12.    printf("\n");
  13. }
  14. system("PAUSE");

Código
  1.         *
  2.        * *
  3.       * * *
  4.      * * * *
  5.     * * * * *
  6.    * * * * * *
  7.   * * * * * * *
  8.  * * * * * * * *
  9. * * * * * * * * *
  10. * * * * * * * * * *
  11.  
219  Programación / Programación C/C++ / Re: Prioridad y asociatividad de los operadores en C. (Programa propio) en: 11 Abril 2014, 14:25 pm

Te funciona sin problemas:

Código
  1. i = k = -5;
  2. i = i MAS k;
  3.  
  4.  
  5. seria:-5+(-5)=-10  O.K

En tu código y con macros sería:

Código
  1. case'+':resultado = atoi(aux[0]) MAS atoi(aux[1]);
  2.  break;
  3. case'-':resultado = atoi(aux[0]) MENOS atoi(aux[1]);
  4. ................................................

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



220  Programación / Programación C/C++ / Re: Ejercicio compila pero no se ejecuta en: 10 Abril 2014, 21:31 pm
Funciona!!! Muchísimas gracias.
Aunque no comprendo muy bien lo de punteros a punteros, pero eso es cuestión de estudiarlo mejor.

Ya que me lo dijiste, ¿es mejor hacer
Código:
int notasEnteras[alumnos];
como un array dinámico? Sólo lo uso para almacenar enteros. (perdona mi ignorancia)

Un saludo

Es otra alternativa a la que puede ponerse el pero de que algún compilador no la acepte. En general la uso para matrices normalitas. Si el tamaño es importante uso asignación dinámica de memoria.

Salu2!.
Páginas: 1 ... 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 32 33 34 35 36 37 ... 132
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines