Προς το περιεχόμενο

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • 0
lfc88

voitheia gia programma sti c

Ερώτηση

Paidia kalimera sas...

 

Epeidi den eimai sigouros an mporo na to kano sosta (mallon den mporo) kai to xreiazomai tha ithela an mporouse kapoios na me voithisei grafontas mou ena programma sti c xrisimopoiontas tin fscanf, to opoio tha diavazei apo kathe grammi tou arxeiou c:\stocks.txt tis times kleisimatos 20 metoxon. Kathe grammi antistoixei se mia mera kai exoume 100 meres. Sti sinexeia, tha grafei sto c:returns.txt tis imerisies apodoseis kathe metoxis (20 se kathe grammi, dilmia gia kathe metoxi). I apodosi ipologizetai an apo tin timi tis mias meras afairethei i timi tis proigoumenis kai to apotelesma diairethei me tin timi tis proigoumenis. Elpizo na einai sxetika eukolo kai na mporesei kapoios na to kanei. Tha imoun ipoxreos, euxaristo.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

12 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

vasika den leitourgei gia tin eikosti metoxi (ipologizei lathos apotelesma) alla den peirazei. Apla tha ithela an mporouses na mou exigiseis giati stin epanalipsi vazeis for (c=0;c<19;c++) kai meta xexorista tin 20. an vazame for (c=1;c<=20;c++) den tha douleue??

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

>#include <stdio.h>
#include <stdlib.h>

int main()
{
 FILE * fp = fopen ("c:/stocks.txt","r");
 if (fp==NULL){
    printf("Stocks.txt does not exist\n");
    return -1;
 }
 FILE * fw = fopen ("c:/returns.txt","w");
 int i=1;
 int c=0;
 float price_today[20];
 float price_yesterday[20];
 while (i<=10){
    if (i>1){
       for (c=0;c<20;c++)
           price_yesterday[c]=price_today[c];            
    }
    for (c=0;c<19;c++)
       fscanf (fp,"%f ",&price_today[c]);
    fscanf (fp,"%f\n",&price_today[19]);
    if (i>1)
    {
       float metabolh=0.0;       
       for (c=0;c<19;c++){
           metabolh = (price_today[c]-price_yesterday[c])/price_yesterday[c];
           fprintf (fw,"%2.3f ",metabolh);
       }
       metabolh = (price_today[19]-price_yesterday[19])/price_yesterday[19];
       fprintf (fw,"%2.3f\n",metabolh);
    }
    i++;
 }
 fclose (fp);
 fclose (fw);
 return 0;
}

 

Οκ το έφτιαξα. Αντί για price_today[20] ήθελε price_today[19] και κάτι αντίστοιχες αλλαγές. (Οι πίνακες στην C έχουν 1ο στοιχείο το στοιχείο 0 και 20ο το στοιχείο 19).

 

Κάθε γραμμή σου έχει 20 αριθμούς, τις τιμές των μετοχών. Για τις 19 πρώτες μετοχές της γραμμής υπάρχει η τιμή και μετά ακολουθείται από κενό. Για την 20ή μετοχή, υπάρχει η τιμή και αμέσως μετά ακολουθεί ο χαρακτήρας αλλαγής γραμμής. Γι'αυτό οι 19 επαναλήψεις και μια fscanf μόνη της.

 

Μπορούσες να το κάνεις και :

fscanf (fp,"%f %f %f .... %f\n", &timh1, &timh2, &timh3, &timh4, ... , &timh20);

αλλά θα ήταν λίγο κουραστικό...

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

λογικά θα πρέπει να πείς πως χωρίζονται (με ποιά σειρά χαρακτήρων ή με ποιόν χαρακτήρα) οι διάφορες τιμές,.. με κενό με παύλα;

 

σε Lua πάντως έιναι έυκολο... :)

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

>#include <stdio.h>
#include <stdlib.h>

int main()
{
 FILE * fp = fopen ("c:/stocks.txt","r");
 FILE * fw = fopen ("c:/returns.txt","w");
 int i=1;
 int c=0;
 float price_today[20];
 float price_yesterday[20];
 while (i<=10){
    if (i>1){
       for (c=0;c<20;c++)
           price_yesterday[c]=price_today[c];            
    }
    for (c=0;c<19;c++)
       fscanf (fp,"%f ",&price_today[c]);
    fscanf (fp,"%f\n",&price_today[20]);
    if (i>1)
    {
       float metabolh=0.0;       
       for (c=0;c<19;c++){
           metabolh = (price_today[c]-price_yesterday[c])/price_yesterday[c];
           fprintf (fw,"%2.3f ",metabolh);
       }
       metabolh = (price_today[20]-price_yesterday[20])/price_yesterday[20];
       fprintf (fw,"%2.3f\n",metabolh);
    }
    i++;
 }
 fclose (fp);
 fclose (fw);
 return 0;
}

 

Όλο το πρόγραμμα με το stocks.txt κλπ βρίσκεται στο παρακάτω link. Κάνει μια χαρά τη δουλεία του για 10 γραμμές αρχείο μετοχών. Αλλάζεις το stocks.txt και του βάζεις 100 γραμμές και το κάνεις το while (i<=10), while (i<=100). Από εκεί και πέρα δεν προβλέπει σφάλματα, όπως μη ύπαρξη ή μικρό αρχείο stocks.txt κλπ.

 

http://rapidshare.com/files/53333541/ins.rar.html

 

Έσκασες ξαφνικά στο forum με 1ο post να ζητάς έτοιμο πρόγραμμα. Επόμενη φορά δεν θα υπάρξει...

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Euxaristo para poli kai zito signomi gia tin akompsi eisodo mou. Exeis dikio gia auto pou grafeis aplos simera to vrika to forum kai epeidi to xreiazomoun skeftika na zitiso voitheia. Apo edo kai pera tha simmetexo sixna xoris na zitao etoima programmata i alla paromoia. Euxaristo kai pali kai signomi.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Οκ όλοι έχουμε δυσκολευτεί με την C...

 

Απο εκεί και πέρα μπορείς ελέγχεις αν υπάρχει το αρχείο σου βάζοντας τον παρακάτω κώδικα μεταξύ των σειρών που ξεκινούν με FILE *

 

>if (fp==NULL){
    printf("Stocks.txt does not exist\n");
    return -1;
 }

 

Για ότι άλλη βοήθεια θες / πως δουλεύει το πρόγραμμα εδώ είμαστε. Απλά πάλεψε το γιατί ήταν σχετικά εύκολο...

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
×
×
  • Δημιουργία νέου...