Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema con funzione prefixSum in C++

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Problema con funzione prefixSum in C++

Messaggioda Foto Utentexeletro91 » 2 gen 2015, 19:40

Salve a tutti, ho un problema con un programma creato da me in linguaggio c++. dovrei stampare, dato un vettore di N componenti (ad esempio 5) cioè V=(v1,v2,v3,v4,v5), un vettore U=(u1,u2,u3,u4,u5) le cui componenti sono:
u1=v1
u2=v1+v2
u3=v1+v2+v3
u4=v1+v2+v3+v4
u5=v1+v2+v3+v4+v5

io ho scritto il seguente programma, ma credo che ci sia qualcosa che non va, dato che continua a stamparmi valori a caso quando vado a compilare:


Codice: Seleziona tutto
#include <iostream>
using namespace std;
const int N = 5;
void prefixSum(float x[N], float u[N])
{
int i, j;
int s = 0;
for (i = 0; i < N; i++)
{
for (j = 0; j < N ; j++)
{
s =+ x[j];
u[i] = s;
if(j == i)
{
cout << "u[" << i << "]= " << u[N] << endl;
}
}
}
}
int main()
{
float v[N] = {1.0, 2.0, 3.0, 4.0, 5.0};
float y[N];
prefixSum(v, y);
return 0;
}
Avatar utente
Foto Utentexeletro91
58 1 1 6
Frequentatore
Frequentatore
 
Messaggi: 165
Iscritto il: 11 lug 2014, 12:43

0
voti

[2] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentefairyvilje » 2 gen 2015, 20:00

Sicuro di quel "s =+ x[j];" ?
Non è l'unico problema che si vede in realtà.
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[3] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentexeletro91 » 2 gen 2015, 20:09

Ciao scusa, mi sono accorto di aver commesso un grave errore, cioè sulla riga:
cout << "u[" << i << "]= " << u[N] << endl;

..ho inserito u[N] invece di u[i], ora non mi stampa più valori a caso perché l'ho inizializzata, però stampa somme che sono non corrette, se ci fai caso ho inserito per esempio le componenti di v che sono 1,2,3,4,5;
le componenti di u che stampa sono ora: 1, 18, 36,55,75, anziché le tanto sperate 1, 3, 6, 10 ,15. C'è ancora qualcosa che non va, poi per quanto riguarda la riga che hai detto tu, si è il contrario per la fretta mi sono sbagliato, sarebbe s += x[j].
Avatar utente
Foto Utentexeletro91
58 1 1 6
Frequentatore
Frequentatore
 
Messaggi: 165
Iscritto il: 11 lug 2014, 12:43

0
voti

[4] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentefairyvilje » 2 gen 2015, 20:10

Visto che non mi costa niente ti posto una soluzione più adeguata. L'idea sarebbe che dovresti analizzare il codice e capirlo :). NON L'HO TESTATO!

Codice: Seleziona tutto
void prefix_sum(const float* src, float *dest, unsigned int len){
   //Assumo che dest sia già pulito a zero... altrimenti
   //for(unsigned int c=0;c<len;c++)dest[c]=0;
   
   for(unsigned int i=0;i<len;i++){
      for(unsigned int j=0;j<=i;j++)dest[i]+=src[j];
   }
}
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[5] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentexeletro91 » 2 gen 2015, 20:11

tra l'altro se tolgo l'If mi stampa 1,3,6,10,15 ma poi continua a stampare somme fino a 75.
Avatar utente
Foto Utentexeletro91
58 1 1 6
Frequentatore
Frequentatore
 
Messaggi: 165
Iscritto il: 11 lug 2014, 12:43

0
voti

[6] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentefairyvilje » 2 gen 2015, 20:13

Questo perché il tuo codice è sbagliato :).
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[7] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentexeletro91 » 2 gen 2015, 20:14

Guarda ti ringrazio per la risposta, sono sicuro che sia giusta però quello che studio io è molto meno complicato, sono di ingegneria meccanica e questo è il mio terz'ultimo esame (tra l'altro è del primo). Noi ci limitiamo ad usare i for qualche array multidimensionale, funzioni come void ecc... niente di più di quanto abbia scritto sul programma. comunque ti ringrazio ancora per il suggerimento ;)
Avatar utente
Foto Utentexeletro91
58 1 1 6
Frequentatore
Frequentatore
 
Messaggi: 165
Iscritto il: 11 lug 2014, 12:43

0
voti

[8] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentefairyvilje » 2 gen 2015, 20:17

Perdonami ed io cosa avrei usato di diverso di grazia D:?
Ad ogni modo questa versione è migliore di quella postata in precedenza da me per vari motivi.

Codice: Seleziona tutto
void prefix_sum(const float* src, float *dest, unsigned int len){
   float s=0;
   for(unsigned int i=0;i<len;i++){
      s+=src[i];
      dest[i]=s;
   }
}
"640K ought to be enough for anybody" Bill Gates (?) 1981
Qualcosa non ha funzionato...

Lo sapete che l'arroganza in informatica si misura in nanodijkstra? :D
Avatar utente
Foto Utentefairyvilje
15,0k 4 9 12
G.Master EY
G.Master EY
 
Messaggi: 3047
Iscritto il: 24 gen 2012, 19:23

0
voti

[9] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentexeletro91 » 2 gen 2015, 20:29

si ora notando con più precisione, mi accorgo che non hai aggiunto nessuna strana "diavoleria", però avrei un paio di domande da farti:
len sarebbe la dimensione dei vettori giusto? se fosse così perché lo hai inserito nell'argomento della funzione void?? non sarebbe uguale immetterla come costante globale al di fuori sia di void che del main???
Per quale motivo hai inizializzato a zero l'array u (tu l'hai chiamato dest senon vado errato) ???
scusami ancora e grazie per la pazienza.
Avatar utente
Foto Utentexeletro91
58 1 1 6
Frequentatore
Frequentatore
 
Messaggi: 165
Iscritto il: 11 lug 2014, 12:43

0
voti

[10] Re: Problema con funzione prefixSum in C++

Messaggioda Foto Utentexeletro91 » 2 gen 2015, 20:31

Ho risolto, ho visto la tua seconda versione e funziona alla grande Grazie mille!!!!!
Avatar utente
Foto Utentexeletro91
58 1 1 6
Frequentatore
Frequentatore
 
Messaggi: 165
Iscritto il: 11 lug 2014, 12:43

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti