Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
valuta omregner
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Scandinavian
View previous topic :: View next topic  
Author Message
dub.wav
Tux's lil' helper
Tux's lil' helper


Joined: 09 Apr 2003
Posts: 149
Location: Norway

PostPosted: Thu Mar 04, 2004 3:23 pm    Post subject: valuta omregner Reply with quote

I tilfelle noen av de norske her er interessert, her er en liten valuta omregner jeg har skrevet. Det er mitt første C program, så det er sikkert en del mulige forbedringer. (Noen forslag til et lite C prosjekt?)
"Screenshot":
Quote:
1) USD > NOK
2) EUR > NOK
3) GBP > NOK
4) SEK > NOK
5) DKK > NOK
w) Oppdater
q) Avslutt
> 3

Antall GBP: 5.21
5.21 GBP = 67.16 NOK

1) USD > NOK
2) EUR > NOK
3) GBP > NOK
4) SEK > NOK
5) DKK > NOK
w) Oppdater
q) Avslutt
> q
Poenget med den er at den skal være rask å bruke, dvs at jeg ikke trenger å vade gjennom titalls valutakurser for å finne den jeg skal ha, den kan derfor heller ikke konverte fra NOK til noe annet. For å kompilere den, se kommentaren på linje 13. Håper noen får bruk for den. :)
Code:
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#define KURSER_URL "http://www.kbank.no/markets/valuta/Kurser.txt"
#define KURSER_FILENAME "Kurser.txt"
#define VKURSER "valuta_kurser.txt"
#define TV "NOK"
/* gcc Valuta.c -o Valuta `curl-config --libs` */


void meny();
void clear();
void garbage();
int fileExists(char x[]);
void getKurs(char x[], double *y, double *z);
size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream);
int lastNed();
void tno(char x[]);

int main(int argc, char *argv[]) {
   if (strspn(argv[0], ".exe"))
      clear();
   if (!fileExists(KURSER_FILENAME))
      lastNed();
   while (1) {
      meny();
      printf("\n");
   }
   return 0;
}

void meny() {
   static char valuta[255][255] = { "USD", "EUR", "GBP", "SEK", "DKK" };
   static int read = 0;
   int i, v, n;
   for (n=0; strlen(valuta[n]) == 3; n++);
   char valg[255];
   
   if (!read) {
      FILE *VKurser;
      if (!fileExists(VKURSER)) {
         VKurser = fopen(VKURSER, "w");
         for (i=0; i < n; i++)
            fprintf(VKurser, "%s\n", valuta[i]);
         fclose(VKurser);
         printf("Programmet har generert %s.\n", VKURSER);
         printf("For å legge til valutakurser, rediger den filen.\n\n");
      }
   
      VKurser = fopen(VKURSER, "r");
      for (n=0; !feof(VKurser) && fscanf(VKurser, "%s\n", valuta[n]); n++);
      fclose(VKurser);
      read = 1;
   }
   
   for (i=0; i < n; i++)
      printf("%d) %s > %s\n",i+1, valuta[i], TV);
   printf("w) Oppdater\n");
   printf("q) Avslutt\n");
   printf("> ");
   scanf("%s", valg);
   garbage();

   switch(valg[0]) {
      case 'q': printf("\n"); exit(0); break;
      case 'w': lastNed(); return; break;
   }
                  
   v = atoi(valg) - 1;
   if (v < n && strlen(valuta[v]) == 3) {
      tno(valuta[v]);
      return;
   }
}

void clear() {
   printf("%c[1J",27);
   printf("%c[H",27);
}

void garbage() {
   char leftovers[255];
   fgets(leftovers, 255, stdin);
}

int fileExists(char x[]) {
   struct stat buf;
   if (stat(x, &buf) == -1 && errno == ENOENT)
      return 0;
   else
      return 1;
}

void tno(char x[]) {
   double antall, kurs;
   getKurs(x, &antall, &kurs);
   double tall;
   printf("\n");
   printf("Antall %s: ", x);
   scanf("%lf", &tall);
   garbage();
   double svar = (tall * kurs) / antall;
   printf("%4.2lf %s = %4.2lf %s\n", tall, x, svar, TV);
}

void getKurs(char x[], double *y, double *z) {
   FILE *Kurser;
   char kurser[255];
   char *valuta;
   char *kurs;
   char *antall;
   int i;
   
   Kurser = fopen(KURSER_FILENAME,"r");
   
   while(!feof(Kurser) && fgets(kurser, 255, Kurser)) {
      antall = strtok(kurser,"\t");
      valuta = strtok(0,"\t");
      if (!valuta)
         continue;
      if (!strcmp(valuta,x)) {
         for (i=0; i < 4; i++)
            kurs = strtok(0,"\t");
         *y=atof(antall);
         *z=atof(kurs);
         break;
      }
   }
   if (!antall || !kurs) {
      printf("%s inneholder ikke nok ", KURSER_FILENAME);
      printf("informasjon om valgt kurs(%s)!\n", x);
      exit(1);
   }
   fclose(Kurser);
}

size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) {
   int written = fwrite(ptr, size, nmemb, (FILE *)stream);
   return written;
}

int lastNed() {
   if (fileExists(KURSER_FILENAME))
      unlink(KURSER_FILENAME);
   
   CURL *curl_handle;
   FILE *Kurser;
   curl_global_init(CURL_GLOBAL_ALL);
   curl_handle = curl_easy_init();
   curl_easy_setopt(curl_handle, CURLOPT_URL, KURSER_URL);
   curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);

   Kurser = fopen(KURSER_FILENAME, "w");
   if (Kurser == NULL) {
      curl_easy_cleanup(curl_handle);
      return -1;
   }
   curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, Kurser);
   curl_easy_perform(curl_handle);
   fclose(Kurser);
   curl_easy_cleanup(curl_handle);
   return 0;   
}
Back to top
View user's profile Send private message
Spawn of Lovechild
Apprentice
Apprentice


Joined: 03 Feb 2004
Posts: 253
Location: Århus, Denmark

PostPosted: Thu Mar 04, 2004 5:08 pm    Post subject: Reply with quote

Man kunne også bare bruge : www.xe.net/ucc
_________________
Proud to be a 22 year old Infidel, GNOME lover and member of LIK.
Back to top
View user's profile Send private message
dub.wav
Tux's lil' helper
Tux's lil' helper


Joined: 09 Apr 2003
Posts: 149
Location: Norway

PostPosted: Thu Mar 04, 2004 10:11 pm    Post subject: Reply with quote

Spawn of Lovechild wrote:
Man kunne også bare bruge : www.xe.net/ucc
La meg se...klikke på url, vade gjennom to lister over mulige valutaer (de fleste uinteressante), skrive inn beløp, klikke på knapp...Total tid 30 sekunder. Hele poenget med å skrive en liten valuta omregner var å slippe det.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Scandinavian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum