Avatar billede rasmust Nybegynder
29. november 2001 - 10:42 Der er 2 kommentarer og
1 løsning

Problemmer med en hjemmelavet funktion...

Jeg skal lave et program som kan lave beregninger inden for ohms lov og effekt loven.. først bliver brugeren spurgt om værdi 1 og derefter værdi 2, han skal skrive om det er V,A,O,W (Volt, Ampere, Ohm eller Watt) så finder min funktion ud af hvad der er blevet skrevet.. Men den viker selvfølig ikke, når man compiler programmet og kører det, kan man f.eks.  indtaste i værdi 1  20W  så finder den ud af at man har skrevet W, det er fint nok, og det virker.. men derefter står den helt af.. og hvis man så bageefter skriver 40V så siger den bare at den har fundet  40V... den skal sige at den har fundet V...
så det er kun første gang man skriver sin værdi at min funktion virker..

Her er min kode.. den er lidt rodet  da den er kopiret over fra Turbo C++
////// Includer filer
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <iostream.h>

////// Globale variabler
char *findtype;                            // Midlertidlig variable til at lede efter typer (A,V,O,W)
char *foundtypes[1];
char values[1][80];                        /* vores 2 dimisonele array der hold værdi 1 i values[0] og
                                          værdi 2 i values[1], de indeholder bægge 80 elementer. */

////// H‘nvisninger s† vi kan have vores main i toppen.
void findtypes(char *variable, int number);   
// finder typen (A,V,O,W) som man har skrevet, og gemmer den i foundtypes
void udregnresultat();        // udregner alle de resultater som man kan komme frem til

void main(void)
{
  char ch;

  clrscr();
  printf(\"Velkommen til Kim Hockerups og Rasmus Toelh›js\\nC++ program, som ikke kan en skid. \\nTryk en tast\");
  getch();
  do
  {
      clrscr();
      printf(\"Du skal skrive 2 v‘rdiere, med ben‘vense bagefter, f.eks. 40A og 20V s† vil vores program selv udregne resten for dig.\\n\");

      // indtast v‘rdi 1
      printf(\"Indtast v‘rdi 1\\n\");
      cin >> values[0];
      findtypes(values[0], 0);
        //findprefixes(values[0]);

      // indtast v‘rdi 2
      printf(\"\\nIndtast v‘rdi 2\\n\");
      cin >> values[1];
      findtypes(values[1], 1);
        //findprefixes(values[1]);

        udregnresultat();
      ch = getch();
  }
  while(ch != 27);
}

void findtypes(char *variable, int number)
{
  int i;
  char types[] = {\'V\',\'A\',\'O\',\'W\'};            // Volt, Ampere, Ohm og Watt

  /* Pr›v at se om en af de 4\'er typer
      findes i den variable vi har sendt */
  variable = strupr(variable);
  for (i = 0; i <= 3; i++) {
      printf(\"%i\", i);
      findtype = strchr(variable, types[i]);
      if(findtype) {
        /* Den fandt en type, l‘g den ned i fundne
            typer, og afslut loppet */
        foundtypes[number] = findtype;
        break;
      }
  }

  if(foundtypes[number]) {
      printf(\"fandt typen %s\", foundtypes[number]);
  }
  else {
      printf(\"Du skal skrive en v‘rdi\");
  }
}

void udregnresultat()
{
  if(foundtypes[0] && foundtypes[1]) {
        printf(\"\\nResultatet blev:\\n...%s...%s...\", foundtypes[0], foundtypes[1]);
  }
  else {
      printf(\"Du skal skrive en type ved begge steder\\n\");
  }
  printf(\"Tryk ESC for at afslutte\");
}
Avatar billede jpk Nybegynder
29. november 2001 - 11:05 #1
char values[1][80]; giver ikke et 2D array!!!
Skriv i stedet:
char values[2][80];

Avatar billede jpk Nybegynder
29. november 2001 - 11:06 #2
Tallene giver antal dimensioner, ikke indexet på den sidste dimension...

Avatar billede rasmust Nybegynder
29. november 2001 - 11:59 #3
tak..  det virker perfekt nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester