Domanda:
linguaggio C aiuto? Devo fare questo programma in C ma nono capisco che ragionamento devo fare.......me lo spiegate perfavore?
andrew
2015-12-17 10:21:29 UTC
Devo fare questo programma in C ma nono capisco che ragionamento devo fare.......
me lo spiegate perfavore??

"Definire in C, una funzione a valori naturali che, ricevuto come parametro un numero naturale N,calcoli e restituisca la somma dei quadrati dei numeri da 1 a N.
ad esempio N=4 quindi (1*1)+(2*2)+(3*3)+(4*4)=30, quindi restituisce 30."

10 punti al migliore.
Quattro risposte:
Steve W
2015-12-17 23:25:08 UTC
la funzione più semplice è quella ricorsiva

che fai banalmente notando che la somma di quadrati S2(n) cercata è

uguale ad 1 per S2(1)

ed uguale a n*n+S2(n-1) per tutti gli altri casi



quindi puoi definire



int S2(int n)

{

if(n==1)return 1; else return n*n+S2(--n);

}





- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -





volendo potresti definire altrettanto semplicemente la stessa funzione S2

in modo lineare usando un "while"



int S2(int n)

{

int s=0;

while(n>0)s+=n*n--;return s;

}





e lo stesso potresti altresì fare con decine di altri metodi che però richiederebbero più variabili,

più memoria ed altri orpelli.. in ogni programma che si fa, sia esso un database multirelazionae

con con milioni di record o la funzione per trovare una somma di quadrati, la regola principale

da seguire dovrebbe sempre essere quella della semplicità.
?
2015-12-17 15:41:07 UTC
RAGIONAMENTO CHE DEVI FARE

A) Acquisire il valore "N"

B) Emettere il valore dell'espressione "N*(N*(2*N + 3) + 1)/6"

C) Terminare



Poiché

* S(N) = Σ [k = 1, N] k^2 = N*(N*(2*N + 3) + 1)/6

una volta letto N te la cavi con

* tre moltiplicazioni

* due addizioni

* una divisione fra interi



Ad esempio N = 4, quindi

* S(4) = 4*(4*(2*4 + 3) + 1)/6 = 180/6 = 30





Lo sai che Y!A ti dà 3 punti se scegli una "Miglior risposta"? Se puoi, scegli questa!

v. http://www.yanswersblogit.com/b4/2010/01/08/evita-lo-spareggio-scegli-la-miglior-risposta/
?
2015-12-17 17:11:51 UTC
Lo fai con un solo ciclo FOR:



1)gli dai in pasto N da tastiera (lo fai con printf e scanf)

2)inizializzi a 0 la somma sum (intero);



int sum=0;

for( i=1; i<=N; i++) sum+=i*i;



3) dopo di che fai un printf di sum...



Il ragionamento è quello di sommare un quadrato alla volta N volte, accumulando di volta in volta i risultati parziali nella variabile sum...
anonymous
2015-12-17 10:38:33 UTC
#include "stdio.h"





{



textmode(2);

do{

printf("\nInserisci il numero: ");







bioskey(

}



unsigned int somm(unsigned int n)

{





}


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...