|
1181
|
Programación / Programación C/C++ / Re: Problemas con el vuelto en monedas
|
en: 5 Noviembre 2012, 21:01 pm
|
Creo que el planteamiento es quitar todas las posbles monedas de 0.249, a lo que resta las de 0.099 y así sucesivamente. ¿Por qué esos valores y no 0.25 y 0.10?. Por los dichosos redondeos que hacen que cantidad sea "ligeramente" inferior a partir del primer cálculo. Con este planteamiento resulta: #include <iostream> #include <stdio.h> using namespace std; int main(){ float cantidad; int e = 0,f = 0,g = 0,h = 0; cout << "escribe la cantidad: " ; cin >> cantidad; while(cantidad >= 0.249) { e++;cantidad -= 0.25; } cout << "de 0.25 = " << (e) << endl; while(cantidad >= 0.099) { f++;cantidad -= 0.1; } cout << "de 0.10 = " << (f) << endl; while(cantidad >= 0.049) { g++;cantidad -= 0.05; } cout << "de 0.05 = " << (g) << endl; while(cantidad >0) { h++;cantidad -= 0.01; } cout << "de 0.01 = " << (h) << endl; return 0; }
Saludos!.
|
|
|
1182
|
Programación / Programación C/C++ / Re: Como planteariais este problema?( en C)
|
en: 5 Noviembre 2012, 19:11 pm
|
El caso es tener 2 variables, uno para el maximo, y otro para el submaximo, cuando el maximo cambie, submaximo pasa a valer el anterior valor de maximo
No exactamente, ya que un número podría ser menor que max y superior a cuasi_max, con lo que éste tomaría su valor. Sin necesidad de ordenar previamente: #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 15 int main() { int i,a[N],aux,max,cuasi_maxi; srand(time(0)); for (i = 0; i < N; i++) { a[i]= 25+rand() % (101-25) ; printf("%d, ", a[i]); } printf("\b\b \n"); if (a[0]<=a[1]) {max= a[1]; cuasi_maxi=a[0];} else {max= a[0]; cuasi_maxi=a[1];} for (i = 2; i < N; i++) if (a[i]>=max) {aux=max;max=a[i];cuasi_maxi=aux;} else if (a[i]>cuasi_maxi ) {cuasi_maxi=a[i];} printf("%d %d",max,cuasi_maxi); return 0; }
Saludos!.
|
|
|
1183
|
Programación / Programación C/C++ / Re: [C][?]Como determinar que imprima ciertos caracteres
|
en: 5 Noviembre 2012, 16:15 pm
|
Sin iteraciones, sólo tienes que poner en MIN y MAX los valores que deseas imprimir, por ejemplo: #include <stdio.h> void uno(int MIN, int MAX) ; void uno(int MIN, int MAX) { int i; for(i=MIN; i<=MAX; i++) { printf("%c ", i); } } int main(){ int MIN1 =48,MAX1 =57,MIN2=65,MAX2= 90; uno(MIN1,MAX1); puts("\n"); uno(MIN2,MAX2); return 0; }
Saludos!.
|
|
|
1184
|
Programación / Programación C/C++ / Re: [C][?]Como determinar que imprima ciertos caracteres
|
en: 5 Noviembre 2012, 13:45 pm
|
¿Cómo debería hacer para que imprimiera de 0 a 2 y de 6 a 9? ¿Es sencillo o estoy intentando subir peldaños demasiado rápido?
Para que lo veas mejor he puesto a imprimir enteros:#include <stdio.h> void uno(int MIN, int MAX) ; void uno(int MIN, int MAX) { int i; for(i=MIN; i<=MAX; i++) { printf("%d ", i); } } int main(){ int MIN1 =0,MAX1 =2,MIN2=6,MAX2= 9; uno(MIN1,MAX1); puts("\n"); uno(MIN2,MAX2); return 0; }
Saludos!.
|
|
|
1185
|
Programación / Programación C/C++ / Re: Ayuda con ejercicio principiante
|
en: 5 Noviembre 2012, 13:23 pm
|
Hola! Alguien me puede echar un cable con este ejercicio? ¿No habíamos quedado en que no se hacen tareas?. Yo no vi colgado ningún código. ¡Ojo!, no planteo que esté mal o bien, sino que el criterio es muy relativo por lo que observo. Saludos!.
|
|
|
1186
|
Programación / Programación C/C++ / Re: ¿Alguien me puede ayudar con este programa?
|
en: 4 Noviembre 2012, 16:53 pm
|
El segundo for compara cada nuevo valor con todos los anteriores introducidos y si encuentra uno igual sale del bucle y no se toma ese valor, y como no se toma se restituye los contadores con i-- y j--, retornando a continuación al primer for, donde se continua la introducción de los números. No hace falta ningún goto. Si quieres la posición del valor puedes cambiar printf ("%d ",array[i]);
por esta otra: printf ("\ncomponente %d = %d",i+1,array[i]);
Por cierto, el código está en C, no en C++.
|
|
|
1187
|
Programación / Programación C/C++ / Re: ¿Alguien me puede ayudar con este programa?
|
en: 4 Noviembre 2012, 15:33 pm
|
Creo que esto es justo lo que pides: #include <stdio.h> #define N 10 int main(){ int array[N],array_[N],i,j; for (i=0;i<N;i++){ printf ("Introducir numero:"); scanf ("%d",&array[i]); for (j=0;j<i;j++) { if (array[j]==array[i]){ printf ("Numero repetido. ");i--;break; } } } for (i=0;i<N;i++) printf ("%d ",array[i]); return 0; }
Saludos!.
|
|
|
1189
|
Programación / Programación C/C++ / Re: ¿Cómo determinar que sólo acepte 8 dígitos?
|
en: 2 Noviembre 2012, 14:47 pm
|
ya solucioné ese problema, sólo que tengo otro, aparte de aceptar sólo 8 dígitos, necesito que sólo sean números y no letras, ¿saben como le puedo hacer con eso?.
Una opción sería tomar N como cadena y convertirla a entero, para después contar el número de dígitos: #include<iostream> #include<cstdlib> using namespace std; int main() { char N[20]; int n,contador=0; while (contador!=8) { cout<<"Introduzca 8 digitos: "; cin>> N; n = atoi (N); cout<<n<<endl; contador=0; while(n>0){ contador++; n=n/10; } cout<<contador<<endl; } return 0; }
Saludos!.
|
|
|
|
|
|
|