[cfinformatica-grup] Re: [cfinformatica-grup] Re: [cfinformatica-grup] Re: [cfinformatica-grup] Re: [cfinformatica-grup] Re: [cfinformatica-grup] Exercicis de programació

  • From: Mària Merino <mariamerinosanjuan@xxxxxxxxx>
  • To: cfinformatica-grup@xxxxxxxxxxxxx
  • Date: Tue, 30 May 2017 09:42:18 +0200

Doncs jo vaig estar a l'exament, i vaig entendre que primer demanava número
de casos: C, que els introduies per teclat, i per a cada cas demanava
número de bitlles a col·locar N, que també introduies per teclat.

Vaig tenir una feinada tan gran per arribar-hi fins ahi, que vaig quedar
KO, suada estava, i vaig pensar que segurament hi havia trampa, però ja no
me donava temps a posar-me a pensar com es feia l'altre......😰😱

Vaig fer això

*import* java*.*util*.*Scanner*;*

public class ProgramaB*{*

   public static void main*(*String*[]* args*){*

Scanner sc *=* *new* Scanner*(*System*.*in*);*

System*.*out*.*println*(*"Introdueix número de casos"*);*

int C *=* sc*.*nextInt*();*

*for**(*int i*=*0*;* i*<=*C*;* i*++){*

System*.*out*.*println*(*"Introdueix numero de bitlles"*);*

int N *=* sc*.*nextInt*();*

int files *=* 1*;*

int bitlles *=* 0*;*

*while**(*bitlles*<*N*){*
bitlles *+=* files*;*

files*++;*

*}*

files*--;*

System*.*out*.*println*(*"*N*: " *+* N *+* " files necesaries: " *+* files
*);*

*}*
*  }*

*}*


I ho vaig modular.




2017-05-30 8:53 GMT+02:00 ALEJANDRO CASTAN SALINAS <acastan@xxxxxxxx>:

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




--
À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

Other related posts: