Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    43

    C++ [problema di sintassi??]

    ciao ragazzi,

    qualcuno potrebbe,gentilmente, dare
    un'occhiata al seguente doppio ciclo for?
    la sintassi è corretta? Voglio sommare
    ogni quattro elementi dei vettori rev[] e prof[]
    e mettere il risultato rispettivamente in reva[] e preof[a]
    Vi ringrazio tanto,



    const int a=(Ntrim/4);
    double revprofa[a][2];
    double reva[a],profa[a];
    sommar=0;
    sommap=0;
    printf("a vale :%d",a);
    for(j=1; j=a; j++)
    {
    for(k=(4*j-4); k=(4*j-1); k++)
    {
    sommar=sommar+rev[k];
    sommap=sommap+prof[k];
    };
    reva[j]=sommar;
    profa[j]=sommap;
    sommar=0;
    sommap=0;
    };

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dai un'occhiata al regolamento prima di postare ...

    A parte il titolo e il linguaggio, devi dare una migliore spiegazione del problema ...

    Che vuol dire "si inchioda" ? Hai fatto un po' di debugging ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    43

    spiacente..

    ho fatto un errore...mi spiace.

    ho sistemato il messaggio, avevo immaginato
    che potesse essere troppo vago il problema.


    Il programma viene compilato, non completa
    il ciclo che ho riportato sul messaggio.
    Chiedevo se qualcuno riesce ad individuare il
    problema.

    grazie e...scusa ancora.

  4. #4
    dovresti postare un frammento di codice compilabile.

    Comunque i vettori in C iniziano dall'indice 0 e non 1.
    Se poi vuoi leggere i valori ogni quattro il ciclo lo devi scrivere così
    codice:
      unsigned int k;	
      for ( k = 0; k < n; k += 4 )
    dove n è la dimensione del vettore
    ciao
    sergio

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    43
    grazie per la risposta.

    non voglio leggere gli elementi del
    vettore ogni 4, ma sommarli 4 alla volta.
    Parte da 0 il vettore che leggo, infatti
    se j=1, 4J-4=0.

    Ecco tutto il programma:

    /*
    ################################# PROGRAM F500 ##############################
    Finds correlations in profit-revenue space
    Mon Nov 3 14:48:36 CET 2008
    Ver. 0.1
    */
    //--------------------------------- HEADER -------------------------------------
    #include "stat.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include "rng.h"
    #include "math.h"
    //#include "parse.h"
    #include <iostream>
    #include <fstream>
    #include <sstream>
    //#include <gsl/gsl_math.h>
    //#include <gsl/gsl_eigen.h>
    //#include <gsl/gsl_fit.h>
    //#include <gsl/gsl_statistics.h>
    using namespace std;

    #define SPACE << "\n " <<
    #define SP << " " <<
    //--------------------------------- CONSTANTS -----------------------------------
    const int F500_maxcomp=500;
    //-------------------------------------------------------------------------------
    //------------------------------- PROGRAMS TO RUN -------------------------------
    #define MAIN 1;
    //-------------------------------------------------------------------------------
    //--------------------------------- FUNCTIONS -----------------------------------
    //-------------------------------------------------------------------------------

    //-------------------------------------------------------------------------------
    //---------------------------------- MAIN ---------------------------------------

    //-------------------------------- VARIABLES ------------------------------------

    //-------------------------------------------------------------------------------
    //int main(int argc, char* argv[]){
    /* bool verbose=false,vverbose=false;
    fstream outfile; //General File for output
    CCmdLine commands;
    commands.SplitLine(argc,argv);
    StringType infile;
    // If requested, print a short help
    if (commands.HasSwitch("-h")){
    cout <<
    "Usage:" << endl <<
    " stat.x -f <prof rev file>" << endl<<
    " -v <verbose mode>"<<endl<<
    " -vv <very verbose mode>"<<endl;
    exit(1);};
    try {
    infile=commands.GetArgument("-f",0);

    //lowbound=atoi(commands.GetSafeArgument("-b",0,"0").c_str());
    if(commands.HasSwitch("-v")){ verbose=true;};
    if(commands.HasSwitch("-vv")){ verbose=true;vverbose=true;};}
    catch (...) {
    cout << "You must supply compulsory flags: -f <prof rev file>" << endl;
    cout << "Use -h for help..." << endl;
    exit(1);};*/
    //-------------------------------------------------------------------------------

    int main(){
    int a,i,m,j,k,s;
    double sommar,sommap;

    // Read File with epsilons and scaled revenues
    //fstream indata(infile.c_str(),ios::in);
    fstream indata("ge.dat",ios::in);
    indata.seekp(0,ios::beg); //positioning at the beginning of the file
    int Ntrim=0; // Number of trim
    string line;
    while(getline(indata,line)){ Ntrim++; }
    // and read them
    cout << "# Number of steps:" SP Ntrim << endl;

    // Read data and put into matrix timeserie(i,j):
    double (*revprof)[2] = new double[Ntrim][2];
    double (*rev) = new double[Ntrim];
    double (*prof) = new double[Ntrim];
    indata.clear();
    indata.seekp(0,ios::beg);
    for (j=0;j<Ntrim;j++) //rows
    {
    for (i=0;i<2;i++) //columns
    { indata >> revprof[j][i];
    };
    rev[j]=revprof[j][0];
    prof[j]=revprof[j][1];
    }

    // Calculate Means
    cout << "Moments of Revenues: " << Mean (rev,Ntrim) SP Sigma(rev,Ntrim) SP Skew(rev,Ntrim) SP Kurtosis(rev,Ntrim)<<endl<<
    "Mean Profit: " << Mean (prof,Ntrim)<<endl;

    // profitti e revenue annuali
    a=(Ntrim/4);

    double revprofa[a][2];
    double reva[a],profa[a];
    sommar=0;
    sommap=0;

    for(j=1; j=a; j++)
    { printf("ciao\n");
    for(k=(4*j-4); k=(4*j-1); k++)
    {
    sommar=sommar+rev[k];
    sommap=sommap+prof[k];
    };
    reva[j]=sommar;
    profa[j]=sommap;
    sommar=0;
    sommap=0;
    };
    printf("nnnn:%f, %f\n", reva[3],profa[3]); //controllo

    fstream outdata("ge annuali.dat",ios:ut);
    for (j=0;j<a;j++) //rows
    {
    for (i=0;i<2;i++) //columns
    {
    revprofa[j][0]=reva[j];
    revprofa[j][1]=profa[j];
    outdata << revprofa[j][i];
    };
    }
    exit(0);
    //-------------------------------------------------------------------------------
    //SP Sigma(rev,Ntrim) SP Skew(rev,Ntrim) SP Kurtosis(rev,Ntrim)<<
    //-------------------------------------------------------------------------------
    // ################################################## ############################


    //-------------------------------------------------------------------------------


    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sei sicuro di questa linea

    for(j=1; j=a; j++)

    j=a ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    43
    quale dovrebbe essere il problema?
    j va da 1 ad a che ho definito come parametro fisso...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    j=a

    assegna il valore di a a j
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    43
    giusto:
    voglio un ciclo con j che va da 1 ad a...
    non è corretto?
    dimmi come lo scriveresti. hai capito
    cosa voglio fare?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    for(j=1; j<a; j++)

    oppure

    for(j=1; j<=a; j++)

    se vuoi includere anche a
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.