|
|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - player_
26
« en: Martes 8 de Diciembre de 2009, 01:05 »
printf("nIntroduzca un numero: "); scanf("%dn",&n);
Elimina ese n de dentro del scanf y ya no te pasará eso. Y al final, primero va system("PAUSE") (necesitarás la librería stdlib.h) y luego return 0;
27
« en: Viernes 20 de Noviembre de 2009, 22:22 »
Haz un bucle general para el número de filas que desees introducir y dentro dos bucles más: (no necesitas usar arrays) Uno que imprima esta parte 1 <-- Fila 1, de 1 hasta 1 1 2 <-- FIla 2, de 1 hasta 2 1 2 3 <-- Fila 3, de 1 hasta 3... 1 2 3 4 1 2 3 4 5 si te fijas siempre va de 1 hasta el número de fila en la que te encuentras. Y el otro que imprima la parte que falta 1 1 2 11 2 3 2 11 2 3 4 3 2 11 2 3 4 5 4 3 2 1si te fijas, aquí esta parte va desde el número de fila - 1, hasta 1 Por ejemplo para la fila 3 deberías hacer: Bucle que va desde 1 hasta el número de fila (3 en este caso) imprimiendo los números y seguidamente bucle que vaya desde el número de fila - 1 (3-1 en este caso) hasta 1 y te imprimirá 1 2 3 2 1 Creo que con esto deberías saber hacerlo ya
28
« en: Martes 6 de Octubre de 2009, 20:10 »
No te compliques la vida.
Números reales son los que tienen decimales, por ejemplo: 3 / 2 = 1.5 (para simplificar, declararías las variables como float). Si haces 2 / 2 el resultado será 1.0 (o más decimales según la precisión que estés usando). Con los números enteros tus resultados no tendrán decimales, por ejemplo 3 / 2 te daría como resultado 1 sin tener en cuenta los decimales.
29
« en: Martes 6 de Octubre de 2009, 11:10 »
Hola a todos. Tengo que crear una base de datos con access y a parte realizar un menú que me de acceso a la base de datos para poder dar de alta, modificar, eliminar...etc Había pensado hacer ese menú en VB y conectarlo a la base de datos hecha con access.
La pregunta es la siguiente, pensáis que tiene mucha dificultad? Sería mejor hacer toda la aplicación con access y olvidarme de VB?
No tengo nada de experiencia programando con VB y tendría que ponerme desde cero, también aprovecho para pediros algún tutorial bueno sobre VB donde explique como declarar las variables, tipos de datos, bucles, funciones, estructuras...etc porque los que he visto por internet no me convencen demasiado.
Tengo tiempo para hacerlo tranquilamente y mi intención es la de aprender, por eso pregunto si vale la pena complicarse la vida o no.
Gracias.
30
« en: Domingo 27 de Septiembre de 2009, 22:36 »
Bueno ya no hace falta, sería *(array+1) para el segundo elemento y así sucesivamente
31
« en: Domingo 27 de Septiembre de 2009, 22:13 »
Tenemos un array
int array[3] = {10, 20, 30};
para acceder al primer elemento mediante un puntero podemos acceder como *array, pero como accederiamos al segundo y tercero mediante un puntero?
Gracias.
32
« en: Lunes 17 de Agosto de 2009, 01:25 »
Funcion (a, b, c) devuelve el valor de x, si yo la llamo invocándola de esa forma, al hacer printf("%d", Funcion (a, b, c)); aunque x no aparezca en los parámetros de la función, debería imprimir el valor que devuelve, no?? Pues no me lo devuelve...
33
« en: Domingo 16 de Agosto de 2009, 23:47 »
Si por ejemplo tengo una funcion con 3 parametros (uno de ellos pasado por referencia como si estuviera usando C++, ya sé que en C no se hace así) que devuelve un valor x declarado dentro de la función:
int Funcion (int a, int &b, int c) { int x; - - - return x; }
como llamo a la función dentro del main para que me imprima ese valor devuelto?
main() { - - - printf("El valor es que devuelve la funcion es %d", Funcion(a, b, c)); return 0; }
lo hago así y no me sale, de qué forma se llama correctamente a la función?
34
« en: Martes 14 de Julio de 2009, 13:51 »
#include<iostream.h> #include<math.h> /*NO USAS ESTA LIBRERIA ASI QUE NO HACE FALTA DECLARARLA*/ int cubo(signed int); /*TIENES QUE DECLARAR EL PROTOTIPO DE FUNCION*/ int main(){ signed int numero; /*TE FALTABA DECLARAR LA VARIABLE DENTRO DEL MAIN*/ cout<<"ingrese el numero al cual quiere que le eleven al cubo:"<<endl; cin>>numero; for(signed int i=0;i<=numero;i++) { cout<<","<<cubo(i); } cin.ignore(); cin.get(); return 0; } signed int cubo(signed int numero) /*AQUI REALIZAS LA FUNCION*/ { return numero*numero*numero; }
35
« en: Martes 14 de Julio de 2009, 11:04 »
Lo que intentaba emular con la depuración es la forma en la que la variable hold cambiaba las posiciones en la memoria, el resultado está bien, pero la interpretación de esos cambios es lo que no sé si es correcto. Gracias.
36
« en: Martes 14 de Julio de 2009, 10:50 »
int aux; aux = a; a = b; b = a;
Eso sería así? Creo que al final b tiene que ser igual a aux y no igual a "a" int aux; aux = a; a = b; b = aux;
Y mi depuración del código con la variable hold, está bien? Así cambiaría de posición paso a paso la variable hold, no?
37
« en: Martes 14 de Julio de 2009, 10:17 »
Mi duda viene por la utilización de la variable auxiliar, que no consigo ver cuál es realmente su función a la hora de depurar el código.
Tenemos { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }
for ( i = 0; i < SIZE - 1; i++ ) { if ( a[ i ] > a[ i + 1 ] ) { hold = a[ i ]; a[ i ] = a[ i + 1 ]; a[ i + 1 ] = hold;
si a[0] no entra en el if
Resultado --> Tenemos { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }
si a[1] sí que entra en el if, entonces tenemos
hold = a[1] { 2, HOLD(6), 4, 8, 10, 12, 89, 68, 45, 37 } a[1] = a[2] a[2] = hold
Variable hold --> { 2, 4, HOLD(6), 8, 10, 12, 89, 68, 45, 37 }
Resultado --> Tenemos { 2, 4, 6, 8, 10, 12, 89, 68, 45, 37 }
si a[2] no entra en el if? Porque se supone 6<8
si a[3] no entra en el if? Porque 8<10
si a[4] no entra en el if? Porque 10<12
SI a[5] no entra en el if? Porque 12<89
si a[6] sí que entra en el if, entonces tenemos
hold = a[6] { 2, 4, 6, 8, 10, 12, HOLD(89), 68, 45, 37 } a[6] = a[7] a[7] = hold
Variable hold --> { 2, 4, 6, 8, 10, 12, 68, HOLD(89), 45, 37 }
Resultado --> Tenemos { 2, 4, 6, 8, 10, 12, 68, 89, 45, 37 }
De forma depurada y paso por paso, este sería el modo de funcionamiento de hold a la hora de cambiar de lugar?
38
« en: Martes 14 de Julio de 2009, 02:35 »
Es muy fácil, introduces el número y después recorres un for que te eleve a 3 cada número (0,1,2,3,4...) tantas veces como el número que has introducido. Para ello puedes usar la librería math.h y la función pow.
39
« en: Domingo 12 de Julio de 2009, 20:42 »
stdlib.h lo declaro para usarlo con el system("PAUSE");
Pero con el ejemplo que has puesto, a está valiendo 0 en las 10 primeras pasadas y sólo a[j] cambia de valor, entonces estás comparando a[0] con a[1], a[0], a[2], a[0] con a[3].... de la otra forma se compara a[0] con a[1], a[1] con a[2], a[2] con a[3] y se va cambiando de argumento todo el rato para comparar si el valor de antes es mayor al de después, y entonces lo cambia de posición para ordenarlo de menor a mayor. Lo que no entiendo es cómo los cambia de posición, el cómo va almacenando esos números en la variable aux ó en la variable hold de mi ejemplo, una aclaración mediante depuración de como va almacenando esos números es lo que necesito para verlo claro.
Supongo que no cambiará los valores de posición tal cual y los irá poniendo uno tras otro eliminando por ejemplo el que sobra como aquí: { 2, 6, 4}
pasará a ser {2, 4} y el 6 desaparece, entonces cuando acaban esas 10 pasadas se vuelve al for ( pass = 1; pass < SIZE; pass++ ) { y pass se incrementa a 2, en las siguientes 10 pasadas del segundo for comparará de nuevo el 6 y lo añadirá a la lista de números ordenados? Eso es lo que no veo bien y me hace no entender el problema.
Gracias..
EI: juntando mensajes, usa el boton Editar por favor.
Es correcta mi explicación? Aún no he conseguido ver este código y hasta que no lo vea claro no puedo seguir avanzando. Gracias.
40
« en: Domingo 12 de Julio de 2009, 00:22 »
Hola a todos. Estoy revisando este código que imprime un array y luego ordena sus números de menor a mayor, pero tengo una duda con este proceso. El código es el siguiente: #include <stdio.h> #include <stdlib.h> #define SIZE 10 int main( void ) { int a[ SIZE ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 }; int pass; int i; int hold; printf( "Data items in original ordern" ); for ( i = 0; i < SIZE; i++ ) { printf( "%4d", a[ i ] ); } for ( pass = 1; pass < SIZE; pass++ ) { for ( i = 0; i < SIZE - 1; i++ ) { if ( a[ i ] > a[ i + 1 ] ) { hold = a[ i ]; a[ i ] = a[ i + 1 ]; a[ i + 1 ] = hold; } } }/ printf( "nData items in ascending ordern" ); for ( i = 0; i < SIZE; i++ ) { printf( "%4d", a[ i ] ); } printf( "n" ); system("PAUSE"); return 0; }
La parte que está en negrita es la que me da dudas. Voy a depurarla hasta donde me pierdo: for ( pass = 1; pass < SIZE; pass++ ) { EMPEZAMOS CON LA PRIMERA PASADA for ( i = 0; i < SIZE - 1; i++ ) {
if ( a[ i ] > a[ i + 1 ] ) { hold = a[ i ]; a[ i ] = a[ i + 1 ]; a[ i + 1 ] = hold;primer ciclo del segundo for i=0; i<9; 0++si a[0] es mayor que a[1] EN ESTE CASO NO, valor de a[0] almacenado, SEGUIMOS CON EL FOR segundo ciclo del segundo for i=1; i<9, 1++si a[1] mayor que a[2] EN ESTE CASO CIERTO, 6 es mayor que 4, SEGUIMOS hold= a[1] a[1]=a[2] a[2]=hold ahora hold tiene asignado el valor de a[2] entonces, como quedaría el array en este momento? { 2, 4, ¿6?,} ó {2, 4} La verdad que no entiendo muy bien cómo la variable hold va almacenando los nuevos valores y sustituyéndolos o intercambiándolos en el array, a ver si alguien me lo puede explicar. Gracias!!
41
« en: Jueves 9 de Julio de 2009, 13:55 »
De nada amigo!!
42
« en: Jueves 9 de Julio de 2009, 00:27 »
Si no indicas que s= a + b, como quieres que te haga la suma? #include<iostream.h> int main(){ signed short int a,b,s; cout<<"1er numero:"<<endl; cin>>a; cout<<"2do numero:"<<endl; cin>>b; s= a+b; cout<<"la suma sera "<<s<<endl; cin.ignore(); cin.get(); return 0; }
43
« en: Lunes 6 de Julio de 2009, 15:30 »
Perfecto, esta vez lo entendí a la primera. Gracias de nuevo por la explicación!!!
44
« en: Lunes 6 de Julio de 2009, 13:48 »
En el código anterior de dibujar un cuadrado con asteriscos, no se volvía al primer for hasta que j era mayor que columnas y se se hacían todos sus ciclos. Por qué en estos 2 while se vuelve al primer while si no se han cumplido los 10 ciclos de while (column <= 10)? A cada ciclo, sale de ese while, hace n y vuelve a entrar al primero, por qué no lo hace 10 veces seguidas y cuando 11<=10 y da falso sale de ahí, hace n y vuelve al primer while? Y también quería preguntar, qué hace if (row % 2)? Al principio del todo row = 10, por lo tanto 10 % 2 = 0, entonces cómo es la condición? Si row % 2, qué más? Gracias. #include <stdio.h> #include <stdlib.h> main() { int row = 10, column; while (row >=1) { column =1; while (column <= 10){ if(row % 2) printf("<"); else printf(">"); ++column; } --row; printf("n"); } system ("PAUSE"); return 0; }
45
« en: Lunes 6 de Julio de 2009, 10:23 »
Gracias, por fin lo veo claramente.
46
« en: Lunes 6 de Julio de 2009, 09:49 »
Bueno, entonces me fiaré de que está bien. Me puedes confirmar que el n sólo se hace cuando salimos del segundo for? Así ya creo que lo tengo bastante claro.
47
« en: Lunes 6 de Julio de 2009, 01:22 »
Ok... entonces el printf("n"); se imprime cada vez que salimos del segundo for La condición es if (i == 1 || i == filas || j == 1 || j == columnas) i=1 j=1 La primera condición del if es verdadera por lo que imprimimos asterisco y seguimos en la misma línea * i=1 j=2 La primera condicion del if es verdadera por lo que imprimimos asterisco y seguimos en la misma línea ** i=1 j=3 La primera condicion del if es verdadera por lo que imprimimos asterisco y hacemos n porque salimos del for *** volvemos al primer for e incrementamos i a 2 i=2 j=1 La tercera condición se cumple, imprimimos asterisco y seguimos en la misma línea *** * i=2 j=2 No se cumple ninguna condición, imprimimos espacio y seguimos en la misma línea *** * i=2 j=3 Se cumple la cuarta condición, imprimimos asterisco y hacemos n porque salimos del for *** * * volvemos al primer for e incrementamos i a 3 i=3 j=1 Se cumple la segunda condición, imprimimos asterisco y seguimos en la misma línea *** * * * i=3 j=2 Se cumple la segunda condición, imprimimos asterisco y seguimos en la misma línea *** * * ** i=3 j=3 Se cumple la segunda condición, imprimimos asterisco y hacemos n porque salimos del for *** * * *** 3 filas y 3 columnas, ya está bien así no? Lo del n de antes lo puse así porque creía que se imprimía después de hacer cada condición pero ya veo que únicamente se imprime cuando salimos del for. Ok, si así ya me dices que está bien te agradezco mucho tu ayuda
48
« en: Lunes 6 de Julio de 2009, 00:19 »
vemos... 3 filas y 3 columnas para que hayan espacios en el medio La condición es if (i == 1 || i == filas || j == 1 || j == columnas) i=1 j=1 La primera condición del if es verdadera por lo que imprimimos asterisco y hacemos n * i=1 j=2 La primera condicion del if es verdadera por lo que imprimimos asterisco y hacemos n * * i=1 j=3 La primera condicion del if es verdadera por lo que imprimimos asterisco y hacemos n * * * volvemos al primer for e incrementamos i a 2 i=2 j=1 La tercera condición se cumple, imprimimos asterisco y hacemos n ** * * i=2 j=2 No se cumple ninguna condición, imprimimos espacio y hacemos n ** * * i=2 j=3 Se cumple la cuarta condición, imprimimos asterisco y hacemos n ** * ** volvemos al primer for e incrementamos i a 3 i=3 j=1 Se cumple la segunda condición, imprimimos asterisco y hacemos n *** * ** i=3 j=2 Se cumple la segunda condición, imprimimos asterisco y hacemos n (recordemos que ya hay un espacio en la segunda posición) *** * * ** i=3 j=3 Se cumple la segunda condición, imprimimos asterisco y hacemos n *** * * *** Cuadrado de 3 filas y 3 columnas...está bien así??? Si te fijas en el primer for este usa la variable i como contador y es la primera condicion del if. Por eso la primera fila es todo asteriscos No tengo claro que esto sea así, ya que por ejemplo cuando i=1 durante las 3 primeras veces, todas las filas serían todo asteriscos.
49
« en: Domingo 5 de Julio de 2009, 23:51 »
Si se cumplen 2 condiciones del if, se imprimen 2 asteriscos o sólo 1? Creo que sólo 1...Ya entiendo la estructura de los 2 for pero al intentar hacerlo manualmente no me salen los asteriscos cerrando el cuadrado, me faltan los laterales de la derecha.
Y otra cosa, si primero i==1 se imprime un asterisco y si despueés i==2 y concide con el número de filas se vuelve a imprimir asterisco? Si es así me salen más asteriscos de los que deben formar un cuadrado....me rindo, lo dejo por imposible.
50
« en: Domingo 5 de Julio de 2009, 21:09 »
A ver.. tenemos for (i = 1; i <= filas; i++){ for(j = 1; j <= columnas ; j++) if (i == 1 || i == filas || j == 1 || j == columnas) printf("*"); else printf(" "); printf("n");
Supongamos que el número de filas es 4 y el número de columnas 6. Primero se entra en el primer for y tenemos ( i=1; 1<= 4; 1++) Después se entra en el segundo for y tenemos (j=1; 1<=6;1++) de ahí se evalúan las 2 primeras condiciones, si i==1 ó j==1 se imprime * sino se imprime espacio, si j==1 ó j==6 se imprime * sino se imprime espacio entonces en este primer turno como i==1 y j==1, se imprimen los asteriscos y hace salto de línea. El contador ahora vale 2 al incrementarse ****** Por segunda vez se vuelve a entrar al for y tenemos (i=2; 2<=4; 2++) Seguidamente se entra en el segundo for y tenemos (j=2; 2<=6;2++) como ahora no se cumple ninguna condición, no se imprime ningún asterisco, se ponen todo espacios y se haría salto de línea ****** Tercera vez Por tercera vez se vuelve a entrar al for y tenemos (i=3; 3<=4; 3++) Seguidamente se entra en el segundo for y tenemos (j=3; 3<=6;3++) no se cumple ninguna condición y no se imprime nada, se hace salto de línea ****** Por cuarta vez se vuelve a entrar al for y tenemos (i=4; 4<=4; 4++) Seguidamente se entra en el segundo for y tenemos (j=4; 4<=6;4++) Ahora se cumple para el primer for que i == filas entonces se imprime 1 asterisco y para j no se cumple ninguna condición ****** * Y ahora que pasa hasta que j<=6? Ya sé que los pasos no los hace así, pero siguiendo los for paso a paso es como yo lo entiendo y lo estoy entendiendo mal. No me lo podéis explicar paso a paso como he hecho yo para ver como se va formando el cuadrado a medida que va pasando por los for y la condición if?
|
|
|