Aquest codi que he escrit és només per provar a veure si funciona de les
dues maneres, amb fòrmula i amb iteració, provant-ho sobre els 25 primers
casos, però si dieu que a la pregunta de l'examen era:
Entrada
C N N...
On C és la quantitat de casos i N la quantitat de bitlles que cal
col·locar com a mínim
Llavors cal canviar la iteració per a que demani els valors, malgrat no em
queda clar per on arriba l'entrada: teclat? fitxer? línia d'arguments?
Per teclat treuria
for (i=0; i<25; i++) {
N = i;
Per posar
scanf("%d", &C);
for (i=1; i<=C; i++) {
scanf("%d", &N);
Però lo dit: no he estat a l'examen, no he llegit l'enunciat exacte.
Si hagués estat a l'examen, hagués vist aquest enunciat tan senzill que
hagués pensat que havia trampa o que jo feia algo malament, i hagués anat a
per l'altre exercici del rio Congo, més complicat
El dia 30 de maig de 2017 a les 8:14, Ivan Ricart Rotllant <
ivandenbas@xxxxxxxxx> ha escrit:
N no era aleatòri per a cada iteració?. O sigui, es demanava C que era el
nombre de casos a fer i s'iterava fent un random per a obtenir N.
El dia 30 maig 2017 07:56, "ALEJANDRO CASTAN SALINAS" <acastan@xxxxxxxx>
va escriure:
#include <stdio.h>
#include <math.h>
int main(void) {
int F, N, i;
/* Prova les 25 primeres */
for (i=0; i<25; i++) {
N = i;
printf("%3d bitlles", N);
/* Solució amb fòrmula . Cost O(1) */
printf(" fòrmula: %.2lf", 0.5*sqrt(1+8*N) - 0.5);
/* Solució amb iteració . Cost O(F) = O(arrel(N)) */
F = 0;
while (F < N) {
F++;
N = N - F;
}
printf(" iterant: %d files i sobren %d bitlles\n", F, N);
}
return 0;
}
El dia 30 de maig de 2017 a les 7:29, ALEJANDRO CASTAN SALINAS <
acastan@xxxxxxxx> ha escrit:
El dia 29 de maig de 2017 a les 19:17, Alejandro Castán Salinas <
acastan@xxxxxxxx> ha escrit:
I si a algú no li agraden les mates amb un únic bucle de dos
instruccions també es troba F. Quelcom semblant a:
F = 0;
i = 1;
while (i < N) {
N = N - i;
i++;
F++
}
printf("%d files i sobren %d bitlles\n", F, N);
Perdó, on dic
while (i < N)
vull dir
while (i <= N)
i com que F sempre val i-1 encara es pot resoldre amb menys instruccions
...
F = 0;
while (F < N) {
F++;
N = N - F;
}
printf("%d files i sobren %d bitlles\n", F, N);
Però a aquesta solució, com a la de la fòrmula matemàtica. no hi ha cap
estructura de dades, només un parell de variables
--
Àlex Castán Salinas
Institut Ausiàs March
avinguda d’Esplugues, 38-42, 08034 Barcelona
telèfon. 93-203-33-32 (tardes) , 689-46-56-36