|
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: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:while (i<Num) { cout<<N<<endl;//esto obra, es para ver los pares que salen Suma+=N; N+=2; i++; }
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:int main() { int i=0,N=2,Num,Suma=0; cout<<"Ingrese un valor numerico: "; cin>>Num; cout<<endl<<"La suma de los primeros "<<Num<<" numeros impares es igual a: " <<Num*(Num+1)<<endl; system ("PAUSE"); return EXIT_SUCCESS; }
¡¡¡¡ 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? 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:printf("%c", *cadena);
¿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:printf("len=%d \n", len);
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 ¿?.
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: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)
#include <stdio.h> #define MAXLINE 1000 int getline(char line[], int maxline); void copy(char to[], char from[]); int main(){ int len=2, max=0; char line[MAXLINE]; char longest[MAXLINE]; while (len>1){ len=getline(line, MAXLINE); printf("len=%d ", len); if(len > max){ max = len; printf("max=%d\n", max); copy(longest, line); } } if(max > 0) printf("\nCadena mas larga: %s", longest); return 0; } int getline(char s[], int lim){ int c, i; for(i=0; i<lim-1 && (c=getchar()) != EOF && c != '\n'; ++i) s[i] = c; if(c == '\n'){ s[i] = c; ++i; } s[i] = '\0'; printf("%d\n", i); return i; } void copy(char to[], char from[]){ int i; i=0; while((to[i] = from[i]) != '\0'){ ++i; } }
Aún no le encuentro justificación al comportamiento de len dentro del while. ¡¡¡¡ 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:.................. scanf ............... for (k=1;k<=altura;k++) { for (j=1;j<=altura-k;j++) printf(" "); for(j=1;j<=2*k-1;j++) if (j%2==0) printf(" "); else printf("*"); printf("\n"); } system("PAUSE");
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
|
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 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!.
|
|
|
|
|
|
|