Avatar billede -123- Nybegynder
14. juni 2002 - 10:00 Der er 16 kommentarer og
1 løsning

hjaelp igen....

Hey eksperten

jeg har et problem med mit program habber vi kan hjaelpe mig...

jeg har lavet en del af programmer men ved ikke helt hvad jeg skal goere nu

her er hvad jeg har lavet:


programmer skal:
i starten skal den skrive

1. ´du skal gaette et gal mellem 0 og x (max 1000)
2. hvor mange gaet vil du ha?
3. gaet naar du gaetter skal den sige om det er for stort eller for lille og skrive hvor mange gaet du har tilbage... hvis du ikke gaetter det efter det x antal gaet skal den kommer og sige at... du gaetter ikke tallet tallet var fx 523 vil du proeve igen?
og hvis du gaetter tallet foer de x antal skal den sige du gaettet rigtigt du bruget x antal gaet ... vil du proeve igen?

ps. hvios det er for mange point eller hvis der er noget du ikke forstaar saa bare spoerg

// 123
Avatar billede -123- Nybegynder
14. juni 2002 - 10:08 #1
ups her er hvad jeg har lavet

# include <conio.h>
# include <stdio.h>
# include <time.h>
# include <dos.h>
# include <stdlib.h>


int talgen();
void igen();

void main()
{
    int tal, maal;

    do
    { /* Mindst een gang */
    clrscr();
    maal = talgen();
    printf("Skriv et tal mellem 0 og 1000: ");
    scanf("%d", &tal);
    if(tal == maal)
    printf("Du gaettede rigtigt! :D n");
    else if(tal < maal)
    printf("Tallet er for lille.n");
    else printf("Tallet er for stort.n");
  }
  while (igen() == 'm');
 
  return;
}

char igen(void)
{
    char ch;
    printf("Hvis du vil proeve igen, skal du taste: m");
    ch = getch();
    return ch;
}

int talgen()
{
    int a;
    randomize();
    a=random(1000);
    return a;
}
Avatar billede ladyhawke Novice
14. juni 2002 - 10:08 #2
Er det du har lavet oversigten over programmet?

Du kan jo prøve at kigge her og se om ikke det hjælper dig videre:
http://www.eksperten.dk/spm/222459
Avatar billede soepro Nybegynder
14. juni 2002 - 10:09 #3
Simpel opgave - dejlig mange point, så her er mit svar:

#include <stdlib.h>
Avatar billede ladyhawke Novice
14. juni 2002 - 10:11 #4
Er det rigtig at det "bare" er dialogen i starten der mangler, sådan at oplysningerne kan bruges senere i programmet?
Avatar billede kamikaze Nybegynder
14. juni 2002 - 10:28 #5
Følgende kompilerer og virker i msvc++ 6.0:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

#define MAX_NUMBER 1000

void main()
{
    int maxGaet, gaet, tal, talGaet;
    char svar;
    cout << "Hvor mange gaet vil du have?" << endl;
    cin >> maxGaet;
    do
    {
        gaet = maxGaet;
        tal = rand() % MAX_NUMBER;
        do
        {
            cout << "Indtast gaet:";
            cin >> talGaet;
            --gaet;
            if (talGaet < tal) cout << "For lavt" << endl;
            if (talGaet > tal) cout << "For højt" << endl;
            if (talGaet == tal) cout << "Du gættede det i " << maxGaet - gaet << " forsøg." << endl;
        } while (gaet > 0 && talGaet != tal);
        if (talGaet != tal)
        {
            cout << "Du kunne ikke gætte det i " << maxGaet << " forsøg." << endl;
            cout << "Tallet var " << tal << endl;
        }
        cout << "Vil du prøve igen?(j/n)" << endl;
        cin >> svar;
    } while (svar != 'n' && svar != 'N');
    cout << "Farvel" << endl;
}
Avatar billede kamikaze Nybegynder
14. juni 2002 - 10:31 #6
Nå, ja. Du ville have at den skriver antal gæt tilbage osv... Lige en rettelse:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

#define MAX_NUMBER 1000

void main()
{
    int maxGaet, gaet, tal, talGaet;
    char svar;
    cout << "Du skal gætte et tal imellem 0 og " << MAX_NUMBER << "!" << endl;
    cout << "Hvor mange gaet vil du have?" << endl;
    cin >> maxGaet;
    do
    {
        gaet = maxGaet;
        tal = rand() % MAX_NUMBER;
        do
        {
            cout << "Indtast gaet:";
            cin >> talGaet;
            --gaet;
            if (talGaet < tal) cout << "For lavt, " << gaet << " forsøg tilbage" << endl;
            if (talGaet > tal) cout << "For højt, " << gaet << " forsøg tilbage" << endl;
            if (talGaet == tal) cout << "Du gættede det i " << maxGaet - gaet << " forsøg." << endl;
        } while (gaet > 0 && talGaet != tal);
        if (talGaet != tal)
        {
            cout << "Du kunne ikke gætte det i " << maxGaet << " forsøg." << endl;
            cout << "Tallet var " << tal << endl;
        }
        cout << "Vil du prøve igen?(j/n)" << endl;
        cin >> svar;
    } while (svar != 'n' && svar != 'N');
    cout << "Farvel" << endl;
}
Avatar billede soepro Nybegynder
14. juni 2002 - 10:35 #7
Hvad f..... skete der - vi prøver igen:

#include <stdlib.h>
#include <conio.h>

int main(int argc, char* argv[])
{
  int  tal, maxTal, gaet, nbrGaet, maxGaet;
  char yesNo;

  do
  {
    clrscr();
    cprintf("GÆT ET TAL\r\n");
    cprintf("==========\r\n\r\n");

    do
    {
      cprintf("Indtast øvre grænse (1-1000) : ");
      cscanf("%i", &maxTal);
    } while (maxTal < 0 || maxTal > 1000);
    if (maxTal == 0)
      break;
    cprintf("\r\n");

    do
    {
      cprintf("Indtast maximale antal gæt (1-1000): ");
      cscanf("%i", &maxGaet);
    } while (maxGaet < 0 || maxGaet > 1000);
    if (maxGaet == 0)
      break;
    cprintf("\r\n");

    tal    = 1 + rand() % maxTal;
    nbrGaet = 0;
    clrscr();
    cprintf("ok - så starter vi ... \r\n");
    do
    {
      cprintf("Indtast gæt nr. %i: ", ++nbrGaet);
      cscanf("%i", &gaet);

      if (gaet == tal)
      {
        cprintf("Tillykke - du gættede tallet %i på %i gæt.\r\n",
                tal, nbrGaet);
        break;
      }
      else
      {
        if (tal < gaet)
          cprintf("\n\r%i : %i er for HØJT.\r\n", nbrGaet, gaet);
        else
          cprintf("\r\n%i : %i er for LAVT.\r\n", nbrGaet, gaet);
      };
    } while (gaet != 0 && nbrGaet < maxGaet);
    if (gaet == 0)
    {
      cprintf("OK - så slutter vi før tid - tallet var %i.\r\n", tal);
      break;
    };

    cprintf("Vil du prøve igen (J/N) ");
    while ((yesNo = getch()) != 'n' && yesNo != 'N'
        && yesNo            != 'j' && yesNo != 'J');
  } while (yesNo != 'n' && yesNo != 'N');

  cprintf("Tryk på en TAST for at afslutte.");
  getch();
  return 0;
}
Avatar billede zob Nybegynder
14. juni 2002 - 12:12 #8
123->
Hvorvfor skriver du å med aa og ø oe osv. ? er der noget galt med dit tastatur:? ;O)
Avatar billede soepro Nybegynder
14. juni 2002 - 12:24 #9
zob >> Sandsynligvis fordi hans compiler ligesom min er til Windows, dvs. bruger ISO9600 tegnsættet, mens DOS-applikationer (on DOS console applications) anvender ASCII - og så kan du ikke paste d.o. kode direkte ind - for æ, ø og å bliver så vist forkert.
Avatar billede kamikaze Nybegynder
17. juni 2002 - 16:19 #10
Har du ikke fået svar nok??? Ellers skriv hvad du har problemer med/ hvad du mangler osv.
Avatar billede -123- Nybegynder
19. juni 2002 - 14:23 #11
damn sorry jeg har vaeret en del afk og har ikke haft tid men skal nok se på det imorgen... men det skal laves mere ved programmet
Avatar billede -123- Nybegynder
20. juni 2002 - 09:28 #12
der skal lige laves noget om

saadan skal programmet starte:

1: vaelge minimum tal: xx
2: vaelge maximum tal: xx (max 1000)
3: hvor mange gaet vil du bruge: xx (max 25)
(nu siger vi at man vaelger min 0 max 1000 og max gaet 5)
4: du skal gaette et tal mellem 0 og 1000
gaet 1: (skriv dit gaet fx 500)
5: tallet var for hoejt
gaet 2: (1)
6:tallet var for lille
gaet 3: 300
tallet var for stort
OSV.
hvis du gaetter tallet skal den self sige DU GAETTET RIGTIGT VIL DU PROEVE IGEN? Y/N
og kommer med de tal man har gaettet paa...
du gaettet på 500 / 300 / 1 / xxx
hvis du ikke gaetter tallet skal programmet sige DU HAR IKKE FLERE GAETTALLET VAR
xxx VILDU PROEVE IGEN? Y/N

bare spoerg hvis der er noget...

// -123-
Avatar billede mbulow Nybegynder
20. juni 2002 - 19:15 #13
//Prøv med den her... Hvis jeg har husket det hele, skulle den gøre lige
//hvad du vil ha den til
//PS!!! Hvis ikke du bruger Windows, kan det godt være du skal fjerne _
//fra funktionerne _flushall og _getch, og jeg ved ikke om system("cls")
//overhoved findes på andre platforme, men det var også bare for at
//slette indholdet i vinduet hver gang der spilles en omgang

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

#define MIN_VAERDI 0
#define MAX_VAERDI 1000
#define MIN_GAET 1
#define MAX_GAET 25

bool indlaes(char *szTekst, int min, int max, int *vaerdi){
  int res;
  printf(szTekst, min, max);
  res = scanf("%d", vaerdi);
  if(res == 0)
    _flushall();
  return (*vaerdi >= min) && (*vaerdi <= max);
}

int main(int argc, char *argv[]){
  int min, max, maal, antalgaet, i, igen;
  int *gaetliste;
  bool ok;

  srand((unsigned int)time(NULL));
  do{
    system("cls");
    if(ok = indlaes("Mindste værdi [%d; %d]: ", MIN_VAERDI, MAX_VAERDI, &min)){
      if(ok = indlaes("Største værdi [%d; %d]: ", min, MAX_VAERDI, &max)){
        maal = rand() % ((max-min)+1);
        if(ok = indlaes("Antal gæt [%d; %d]: ", MIN_GAET, MAX_GAET, &antalgaet)){
          gaetliste = new int[antalgaet];
          for(i = 0; i < antalgaet; i++){
            printf("Gæt %d: ", i+1);
            if(scanf("%d", gaetliste+i) == 0){
              i = antalgaet;
              ok = false;
            }
            if(gaetliste[i] == maal){
              printf("Tillykke. Du gættede tallet\n");
              printf("Forsøg: ");
              for(int j = 0; j < i-1; j++)
                printf("%d / ", gaetliste[j]);
              printf("%d\n", gaetliste[j]);
              i = antalgaet;
            }
            else{
              if(gaetliste[i] < maal)
                printf("For lavt.");
              else
                printf("For højt.");
              printf(" %d gæt tilbage\n", (antalgaet-1)-i);
            }
          }
          if(i == antalgaet)
            printf("Du gættede ikke tallet. Tallet var %d\n", maal);
          if(antalgaet > 1)
            delete [] gaetliste;
          else
            delete gaetliste;
        }
      }
    }
    if(!ok)
      printf("Hmm. Hvad laver du???\n");
    do{
      printf("Vil du prøve igen (Y/N)? ");
      igen = toupper(getch());
      printf("\n");
    }while(igen != 'Y' && igen != 'N');
  }while(igen == 'Y');

  return 0;
}
Avatar billede -123- Nybegynder
21. juni 2002 - 08:34 #14
well naar jeg proever paa at compile programmer kommer den med disse fejl

naar jeg prover at gemme den som .CPP
Error TEST1.CPP 13: Declaration terminated incorrectly
og .C
Error TEST2.C 11: Declaration syntax error
Avatar billede mbulow Nybegynder
21. juni 2002 - 17:04 #15
Hmm... Lidt mystisk... Compilerer fint i VC++
Hvad bruger du af compiler?
Avatar billede soepro Nybegynder
24. juni 2002 - 08:49 #16
-123- >> Ovensteående eksempel fra mig, dækker alle dine krav - og compilerer under TC++ 3.0, C++Builder og MVC.

Har du i grunden prøvet noget af det der er blevet postet !?!
Avatar billede -123- Nybegynder
28. juni 2002 - 17:20 #17
hmm jeg har fundet udaf noget andet men du faar bare point
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