Cita de: Stakewinner00 en 3 Octubre 2012, 21:22 PMA parte de eso funciono asi k te sumo los puntosEHHHHHH, 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!!!!!!!!!!
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úCita de: Stakewinner00 en 3 Octubre 2012, 21:22 PMA parte de eso funciono asi k te sumo los puntosEHHHHHH, 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!!!!!!!!!!
Citar¿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.
CitarTe 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;
printf ("%ld ",fibonacci(i));
}
printf ("%ld",fibonacci(i));
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"*/
#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: ");
scanf("%d", &num);
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
/*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;
}
Cita de: Xafi en 3 Octubre 2012, 13:01 PM#define f(x) cout << x;
CitarExacto. Y lo que te comenté, cuando el compilador va a a ejecutar el código, previamente hace una sustitución de todos los define por sus valores correspondientes. Es decir,antes de ejecutar el código, donde tengas puesto f() él pondrá cout << x.
En el enlace http://es.wikipedia.org/wiki/C%C3%B3digo_objeto creo que correspondería a Traducción
Cita de: Caster en 3 Octubre 2012, 07:05 AMAunque te toque más adelante procura guardar los ejemplos que te postee, son clarificadores e incluyen aritmética de punteros. Por cierto, ¿Qué libro estas siguiendo para el estudio del C?.
lo de los punteros y esas cosas vienen explicadas mas adelante, asi que las vere cuando toque
Cita de: Caster en 1 Octubre 2012, 20:40 PMSó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.
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
#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);
getchar();
return 0;
}
#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;
}
#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;
}
}
#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;
}
Cita de: Ivs_mx en 2 Octubre 2012, 03:49 AMLo estuve mirando y me pareció mejor así:
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.
#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;
}
#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
printf("28 / 2 / %d\n",anyo);
break;
default:
printf ("\nEl mes no es valido");
break;
}
return 0;
}