|
1251
|
Programación / Programación C/C++ / Re: RETOS C++
|
en: 3 Octubre 2012, 22:31 pm
|
A parte de eso funciono asi k te sumo los puntos
EHHHHHH, que yo había puesto en un post anterior la solución a la pirámide y al del cumpleaños...¡¡¡¡¡ no hay puntos para mí GRRMMMMM!!!!!!!!!!
|
|
|
1252
|
Programación / Programación C/C++ / Re: duda: funcionamiento operador unario de conversion de tipo
|
en: 3 Octubre 2012, 22:26 pm
|
¿es así su funcionamiento? sino es así ¿cual es su funcionamiento?Creo que no es así, si ejecutas el programa verás que total sigue valiendo 8. Otra cosa es que hagas:#include <iostream> using namespace std; int main () { double promedio; int total=8; int contadorCalif=3; promedio = static_cast <int> (total) / contadorCalif; cout << promedio << endl; }
Veras que promedio vale 2, en lugar de 2.66667.
|
|
|
1253
|
Programación / Programación C/C++ / Re: Estoy perdido con la recursividad
|
en: 3 Octubre 2012, 22:11 pm
|
Te dejo como ejemplo la sucesión de fibonacci, que empieza con 1 y 1 y cada número es la suma de los dos anteriores: 1,1,2,3,5,8,13,21,34,55,.....: #include <stdio.h> long int fibonacci(long int k); int main(void) { int i; for ( i=0; ;i++ ) { if (fibonacci(i)>10000) /*<==cuando supere este valor se para*/ break; } return 0; } long int fibonacci(long int k) { if (k < 2) return 1; else return fibonacci(k - 1) + fibonacci(k - 2); } /* Por ejemplo, si llamo a fibonacci(6) esto es lo que sucede: 6 <==llamada a fibonacci(6),este llama fibonacci(5)+fibonacci(4) llamada a fibonacci(5),este llama fibonacci(4)+fibonacci(3) 5 ...................... 4 <== Y llamada a fibonacci(4),este llama fibonacci(3)+fibonacci(2) y así sucesivamente.....fíjate que 4.......3 3.........2 en cada llamada se resta uno hasta que es uno. 3.......2 2.....1 2.......1 1 2.......1 1 1 1 1 1 1 1 + 1 + 1+1 + 1 + 1 + 1 + 1 =8 =fibonacci(6) Como dice tu libro "la primera llamada que se hizo,en este caso fibonacci(6), es la ultima en ejecutarse"*/
Otro ejemplo más simple que calcula el factorial:#include <stdio.h> long fact(int n) { if (n==1) return 1; return n * fact (n-1); } main() { int num; printf("Introduzca un número entero: "); printf("Su factorial es: %ld\n", fact (num )); } /*por ejemplo: num=6 ==>fact (6)) return:6*fact (5) return:6*5*fact (4) return:6*5*4*fact (3) return:6*5*4*3*fact (2) return:6*5*4*3*2*fact (1) return:6*5*4*3*2*1
PD:tú código no funciona. Saludos!.
|
|
|
1254
|
Programación / Programación C/C++ / Re: RETOS C++
|
en: 3 Octubre 2012, 20:21 pm
|
[quote ] 11- Un programa que al introducirle tu data de nacimiento te diga los días, meses y semanas que faltan para tu próximo cumpleaños [/quote] Bueno, creo que ha salido:/*Programa que al introducirle tu data de nacimiento te diga los días, meses y semanas que faltan para tu próximo cumpleaños*/ #include <iostream> using namespace std; int main() { int i,dias=0,mes_cumple,mes,dia,dia_cumple,dias_mes [12]={31,29,31,30,31,30,31,31,30,31,30,31}; cout << "DIA CUMPLE= ";cin >>dia_cumple; cout << "MES CUMPLE= ";cin >>mes_cumple; cout << "DIA ACTUAL= ";cin >>dia; cout << "MES ACTUAL= ";cin >>mes; if (mes_cumple>mes ) { for (i=mes;i<mes_cumple-1;i++) dias+=dias_mes [i]; dias+=dias_mes [mes-1]-dia+dia_cumple; cout << "dias = "<<dias; cout << " meses = "<<mes_cumple-mes-1; } else if ((mes_cumple<mes) || (mes_cumple==mes && dia_cumple<dia)) { for (i=mes;i<12;i++) dias+=dias_mes [i]; for (i=0;i<mes_cumple-1;i++) dias+=dias_mes [i]; dias+=dias_mes [mes-1]-dia+dia_cumple-1; cout << "dias = "<<dias-1; if (mes_cumple==mes && dia_cumple<dia) cout << " meses = 11"; else cout << " meses = "<<12-mes+mes_cumple-1; } else if (mes_cumple==mes && dia_cumple>dia) cout << "dias = "<<dia_cumple-dia<< " meses =0"; cout << " semanas = "<<dias/7; return 0; }
Saludos!.
|
|
|
1258
|
Programación / Programación C/C++ / Re: [Solucionado] ¿Cambia el valor de una variable dentro una funcion?
|
en: 2 Octubre 2012, 19:48 pm
|
Los punteros los tratan mas adelante en el libro que estoy leyendo, asi que voy a dejarlos para cuando toque, he compilado el codigo que has dejado Sólo necesitas saber ahora que puedes pasar a una función un parámetro o variable por valor -que es lo que has visto hasta ahora- y por referencia -que hace uso de punteros y es lo que te queda por ver-. La diferencia fundamental es que en el paso por valor, en la función donde está declarada la variable, su valor no cambia aún después de "pasar" por la función, mientras que en el paso por referencia sí puede cambiar el valor de la variable.Te dejo el código funcionando para los dos métodos:#include <stdio.h> void modificar(int a) { a *= 3; printf("\n\na = %d (desde la funcion, modificando el valor)", a ); return ; } void modificar1(int *a) { *a *= 3; printf("\n\na = %d (desde la funcion, modificando el valor)", *a ); return ; } int main() { int *a = 2; printf("\n\nPaso por valor\n"); printf("\na = %d (desde main, antes de llamar a la funcion)", a ); modificar(a); printf("\n\na = %d (desde main, despues de llamar a la funcion por valor)", a ); printf("\n\nPaso por referencia con puntero\n"); printf("\na = %d (desde main, antes de llamar a la funcion)", a ); modificar1(&a); printf("\n\na = %d (desde main, despues de llamar a la funcion por referencia)", a ); printf("\n\na = %d (desde main, OTRA VEZ antes de llamar a la funcion)", a ); modificar1(&a); printf("\n\na = %d (desde main, despues de llamar a la funcionpor referencia )", a ); return 0; }
Por si te animas a empezar a leer sobre punteros, aquí va un ejemplo:#include <stdio.h> int main() { int i=0,*puntero,*pmat; int valor = 52; int mat [10]; mat[0]=10, mat[1]=30,mat[2]=50,mat[3]=60; puntero = &valor; printf("puntero apunta a %p\n", puntero ); printf("la direccion de memoria de &valor es %p\n", &valor ); printf("el valor de 'valor' es %d\n", valor ); printf("el valor de aquello a lo que apunta *puntero es %d\n", *puntero ); *puntero += 25; printf("el valor de aquello a lo que apunta *puntero += 25 es %d\n\n\n", *puntero ); pmat=&mat[0] ;//<=== pmat "apunta=da" a la direccion de mat[0] printf("pmat apunta a la direccion %p\n\n", pmat ); printf("el valor de aquello a lo que apunta *pmat=mat[0] es %d\n\n", *pmat );//10 i=*++pmat;//<=== pmat "apunta" a la direccion de mat[1] printf("el valor de aquello a lo que apunta *++pmat=mat[1] es %d\n\n", i );//30 i=*pmat+1; printf("el valor de aquello a lo que apunta *pmat+1=30+1 es %d\n\n", i );//31 i=*(pmat+1);//<=== pmat "apunta" a la direccion de mat[2] printf("el valor de aquello a lo que apunta *(pmat+1)=mat[2] es %d\n\n", i );//50 i=*++pmat;//<=== pmat "apunta" a la direccion de mat[2]; printf("el valor de aquello a lo que apunta *++pmat=mat[2] es %d\n\n", i );//50 i=*++pmat;//<=== pmat "apunta" a la direccion de mat[3] printf("el valor de aquello a lo que apunta *++pmat=mat[3] es %d\n\n", i );//60 i=*pmat+5;//<=== pmat "apunta" a la direccion de mat[3]+5 printf("el valor de aquello a lo que apunta *pmat+5=mat[3]+5 es %d\n\n", i );//65 return 0; }
Saludos!
|
|
|
1259
|
Programación / Programación C/C++ / Re: RETOS C++
|
en: 2 Octubre 2012, 18:33 pm
|
12- Un programa que haga diversos rombos de 2 * n -1 lineas como en el siguiente ejemplo Entrada: 4 SAlida: * *** ***** ******* ***** *** * 25 puntos #include <iostream> using namespace std; int main() { int n,fila,col; cout << "tamanyo de la piramide: "<<endl; cin >> n; for(fila=1;fila<=n;fila++) { for(col=1;col<=n-fila;col++) cout<<" "; for(col=1;col<=2*fila-1;col++) cout<<"*"; cout<<endl; } /* Escritura de la parte inferior */ for(fila=n-1;fila>=1;fila--) { for(col=1;col<=n-fila;col++) cout<<" "; for(col=1;col<=2*fila-1;col++) cout<<"*"; cout<<endl; } }
__ EI: juntando mensajes.1-Un programa que cuente los caracteres que tiene un texto previamente introducido por el usuario (parece más fácil de lo que es)ejemplo de entrada: "ho la" ejemplo salida:el texto tiene 5 caracteres 1 punto Incluyendo espacios en blanco: #include <iostream> #include <stdio.h> using namespace std; main() { int i; char cadena [200]; gets (cadena); for (i=0;cadena [i]!='\0';i++) ; cout << "El texto tiene " << i << " caracteres." << endl; return 0; }
|
|
|
1260
|
Programación / .NET (C#, VB.NET, ASP) / Re: Tengo una duda al compilar mi programa me marca error en esto
|
en: 2 Octubre 2012, 15:52 pm
|
Hola a todos, alguien podría disipar mi duda a que se debe que me marque el error en esta parte por favor?, se los agradezco mucho y tengan buen día. Lo estuve mirando y me pareció mejor así:#include <stdio.h> int main() { int num_mes=0,anyo; char mes [12][10]={"ENERO","FEBRERO","MARZO","ABRIL","MAYO","JUNIO","JULIO","AGOSTO","SEPTIEMBRE","OCTUBRE","NOVIEMBRE","DICIEMBRE"}; printf("MES = ");scanf ("%d",&num_mes ); printf("ANYO = ");scanf ("%d",&anyo ); switch (num_mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 / %s / %d\n" ,mes [num_mes -1],anyo ); break; case 4: case 6: case 9: case 11: printf("30 / %s / %d\n" ,mes [num_mes -1],anyo ); break; case 2: if (( anyo % 4==0) && (anyo % 100 != 0) || (anyo % 400==0) ) printf("29 / %s / %d\n" ,mes [1],anyo ); else printf("28 / %s / %d\n",mes [1],anyo ); break; default: printf ("\nEl mes no es valido"); break; } return 0; }
O como tú lo tenías, corregido más o menos: #include <stdio.h> int main() { int num_mes=0,anyo; printf("MES = ");scanf ("%d",&num_mes ); printf("ANYO = ");scanf ("%d",&anyo ); switch (num_mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 / %d / %d\n" ,num_mes ,anyo ); break; case 4: case 6: case 9: case 11: printf("30 / %d / %d\n" ,num_mes ,anyo ); break; case 2: if (( anyo % 4==0) && (anyo % 100 != 0) || (anyo % 400==0) ) printf("29 / 2 / %d\n" ,anyo ); else break; default: printf ("\nEl mes no es valido"); break; } return 0; }
Saludos!
|
|
|
|
|
|
|