Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-12-2010, 18:42   #1
Aldin
Bannato
 
Iscritto dal: Jan 2008
Messaggi: 140
[C++] Problema nelle sommatorie (+=) nei cicli for e nella formattazione dei numeri

Sto svolgendo qualche esercizio di programmazione dal Resnick ma ho un problema con la forma:
Codice:
for(int i=0; i<n; i++)
Sommatoria+=array[n];
Nel seguente programma:
Codice:
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;

int main() {
    //numero particelle
    int n;//numero di particelle
    double q[n];//carica di ogni paricella
    double x[n], y[n];//coordinate delle particelle
    double X, Y;//punto in cui voglio calcolare il campo
    double r[n];//distanza del punto da ogni particella 
    double sX, sY;//sommatorie dei campi sugli assi 
    double k=8996365468.;// =(1/ 4*pi*epsilon_0) 
    
    cout<<"Quante sono le particelle?\n";
    cin>>n;
    
    //Chiedo i dati
    for (int i=0; i<n; i++) {
     cout<<"Inserisci ordinatamente x, y, q\n";
     cin>>x[i]>>y[i]>>q[i];
    }
    cout<<"Per quale punto vuoi calcolare il campo elettrostatico?";
    cin>>X>>Y;
    
    //Riassumo in tabella
    cout<<"Hai inserito i seguenti dati\n\n";
    cout<<setw(13)<<"CARICA"<<setw(13)<<"x"<<setw(13)<<"y";
    for(int j; j<n; j++)
     cout<<q[j]<<setw(7)<<x[j]<<setw(7)<<y[j];
     
    //Calcolo le distanze
    for(int i=0; i>n; i++)
     r[i]=pow(pow(X-x[i],2.)+pow(Y-y[i],2.),1.5);
    
    //Calcolo le sommatorie dei campi sugli assi
    for(int i=0; i>n; i++)
  -->sX+=(k *(q[i]/(pow(r[i],3)))(x[i]-X)); //ERRORE!!
    
    for(int i=0; i>n; i++)
  -->sY+=(k *(q[i]/(pow(r[i],3)))(y[i]-Y));//ERRORE!!
   
    cout<<"Il modulo del campo elettrico vale:\n"<<"x = "<<sX<<"\ny = "<<sY;
    
    return 0;
}
Le freccine sono volutamente inserite per indicare dove Dev C++ segnala il seguente errore:
Codice:
`#`rdiv_expr' not supported by dump_expr#<expression error>' cannot be used as a function
Inoltre non saprei come limitare il numero di cifre significative in ouput...
Il testo del problema, abbastanza banale, è il seguente, dove ho evidenziato le sommatorie:


Ancora, vorrei sapere se posso chiedere l'errore in questo programma per la regressione lineare dei minimi quadrati, altrimenti edito:

Codice:
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;

int main() {
    cout<<"\n********************************"<<endl;
    cout<<"Quanti sono i punti della regressione?\n";
    int n;//
    char ascisse[100], ordinate[100];//per titolare la tabella
    cin>>n;//dimensione degli array che contengono x e y
    double x[n], y[n], sigma, S_sigma;
    
    //Passaggi:
    //Elemento(Sx^2)
    //Elemento (Sx)^2
    //Elemento Sy
    //Elemento Sxy
    //elemento Sx ...cicli for terminati
    //Calcolo delta, calcolo A, calcolo B
    //Calcolo l'errore sulle y
    
    cout<<">>>Titola le ascisse:\n";
     cin>>ascisse;
    cout<<">>>Titola le ordinate:\n";
     cin>>ordinate;
    cout<<">>>Inserisci i valori delle x seguiti dai valori delle y\n";
    for(int i=0; i<n; i++) {
     cout<<"Inserisci i valori della coppia n° "<<i<<"\n_ ";
     cin>>x[i]>>y[i]; }
    
    cout<<"\nSono state inserite le seguenti misure\n";
     cout<<ascisse<<setw(13)<<ordinate<<"\n";
    for(int j=0; j<n; j++)
     cout<<setw(7)<<x[j]<<setw(7)<<y[j]<<"\n";
    
    //Ho raccolto le varie sommatorie per semplificare i calcoli
    double S_xquadrato, Sx_quadrato, Sy, Sxy, Sx;
    
    for(int a=0; a<n; a++)
     S_xquadrato+=(pow(x[a], 2.0));
    for(int b=0; b<n; b++)
     Sx_quadrato+=x[b];
     Sx_quadrato=(pow(Sx_quadrato, 2.0));
    for(int c=0; c<n; c++)
     Sy=y[c];
    for(int d; d<n; d++)
     Sx+=((x[d])*(y[d]));
    for(int e; e<n; e++)
     Sx=x[e];
    
    //Calcolo delta, A e B
    double delta=(n*(S_xquadrato)-Sx_quadrato);
    double A=((S_xquadrato)*(Sy)-(Sx)*(Sxy))/delta;//intercetta dall'origine
    double B=(n*(Sxy)-(Sx)*(Sy))/delta;//inclinazione della retta
    
    cout<<"\nRisultati della retta interpolante.\n";
    cout<<"A= "<<A<<"\n"<<"B= "<<B<<endl;
    cout<<"\nOvvero y = "<<A<<" x + "<<B<<"\n";
    
    //Calcolo dell'errore sulle y
    for(int f; f<n; f++)
     S_sigma+=((1.0/(n-2))*(pow((x[f]-A-B*y[f]), 2.0)));
    for(int g; g<n; g++)
     sigma+=pow(S_sigma, 0.5);
    cout<<"In particolare l'errore sulle y è il seguente: "<<sigma;
    
    return 0;
}
Aldin è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2010, 21:49   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
nel primo hai solo dimenticato di mettere * prima di (x[i]-X) e (y[i]-Y)
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2010, 22:45   #3
Aldin
Bannato
 
Iscritto dal: Jan 2008
Messaggi: 140
Grazie mille, ho trovato anche qualche errorino logico. Mentre per le cifre significative? Qualcuno sa come si fa?
Aldin è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2010, 23:34   #4
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
Quote:
Originariamente inviato da Aldin Guarda i messaggi
Grazie mille, ho trovato anche qualche errorino logico. Mentre per le cifre significative? Qualcuno sa come si fa?
Codice:
cout.precision(n_cifre);
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2010, 11:32   #5
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 13015
Ad occhio mi sembra anche che nel primo tu non abbia inizializzato sX e sY, il che significa che sX e sY in partenza potrebbero contenere la qualunque.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Comprare uno smartphone economico sta pe...
Google in pole position per utilizzare i...
Nintendo valuta una Switch 2 OLED con sc...
ChatGPT torna disponibile su WhatsApp in...
Non vuoi usare l'intelligenza artificial...
Metà del web ormai è bot: ...
Le big IA obbligate a cedere metà...
HP blocca anche le cartucce di inchiostr...
Acquisizione Apple: SigScalr chiude, gli...
Cooler Master HAF II 500 integra le vent...
I musulmani non dovrebbero usare le crip...
AMD Radeon 9000 pronte a sorpassare le N...
Soulframe, il nuovo gameplay chiarisce m...
La Commissione UE presenterà una ...
Niente più eliche: con due ali, i...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v