Avatar billede cbegynder Nybegynder
09. december 2001 - 16:50 Der er 13 kommentarer og
1 løsning

tal ?

Hej..

Script:
#include <stdio.h>
#include <conio.h>

void main()
{
int a, b,c;
clrscr();
printf(\"hvad giver: %d + %d\", a,b,a+b);
scanf(\"%d\", &c);
if (c==regnet rigtigt)
printf(\"juhhh\");
else
printf(\"noooo\");
}

hvordan kan jeg gøre at a, og b får et tal som jeg ik giver dem, håber du er med på hvad jeg mener ?
og det skal altid være under 30 for begge to...
Avatar billede alvion Nybegynder
09. december 2001 - 16:56 #1
Mener du tilfældige tal?

#include <time.h>

srand((unsigned)time(NULL));

a = rand() % 30 + 1;
b = rand() % 30 + 1;
Avatar billede cbegynder Nybegynder
09. december 2001 - 16:57 #2
jeps...

forklare mig hvad du har lavet ?
Avatar billede alvion Nybegynder
09. december 2001 - 17:13 #3
rand() returnerer et heltal mellem 0 og RAND_MAX (en konstant defineret til 32767)

Så siger jeg resultatet af rand() % 30. % er operatoren MODULUS, som dividerer et tal (tælleren) med i et andet (nævneren) og returnerer \"resten\", dvs. den del af tælleren, som ikke kunne deles med nævneren. På den måde får jeg så et tal mellem 0 og 29. Dertil lægger jeg 1, og har dermed fået et tal mellem 1 og 30.

rand() genererer tilfældige tal udfra en \"talrækkefølge\" den vil være ens hver gang man starter sig program, med mindre du kalder srand().
Avatar billede cbegynder Nybegynder
09. december 2001 - 17:45 #4
{
int a, b, c;
char;
case \'1\':
                          /* Spm Nr.1 */
  printf(\"1 Spm. %d + %d: \", a,b);
  scanf(\"%d\", c);
  c = a + b;
  if (c==\'c\')
    printf(\"Succes\");
  else
    printf(\"Forkert\");
                          /* Spm slutter */
                          /* Spm Nr.2 */
  printf(\"1 Spm. %d + %d: \", a,b);
  scanf(\"%d\", c);
  c = a + b;
  if (c==\'c\')
    printf(\"Succes\");
  else
    printf(\"Forkert\");
                          /* Spm Slutter */
break;
}

hvad skal jeg ændre :)
Avatar billede alvion Nybegynder
09. december 2001 - 18:00 #5
Deeet må så være din opgave at regne det ud. Hvis du vil lære at programmere i C, så kan du ikke få det hele forærende :-)
Avatar billede cbegynder Nybegynder
09. december 2001 - 19:40 #6
men så kan jeg ik bruge dit svar til noget...du må sku hjælpe lidt til....eller giv mig et eks.
Avatar billede cbegynder Nybegynder
09. december 2001 - 19:46 #7
{
int a, b, c;
srand((unsigned)time(NULL));
a = rand() % 30 + 1;
b = rand() % 30 + 1;

case \'1\':
                          /* Spm Nr.1 */
  printf(\"1 Spm. %d + %d: \", a,b);
  scanf(\"%d\", c);
  c = a + b;
  if (c==\'c\')
    printf(\"Succes\");
  else
    printf(\"Forkert\");
                          /* Spm slutter */
                          /* Spm Nr.2 */
  printf(\"1 Spm. %d + %d: \", a,b);
  scanf(\"%d\", c);
  c = a + b;
  if (c==\'c\')
    printf(\"Succes\");
  else
    printf(\"Forkert\");
                          /* Spm Slutter */
break;
}

> den giver tal over 1500 ??? og de samme tal !
Avatar billede alvion Nybegynder
09. december 2001 - 20:32 #8
Jeg har givet dig et eksempel. Hvorfor går du ikke tilbage til din første stump kode, den er meget enkelere at overskue.

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

void main()
{
int a, b,c;

clrscr();
printf(\"hvad giver: %d + %d\", a,b,a+b);
scanf(\"%d\", &c);

if (c==regnet rigtigt)
  printf(\"juhhh\");
else
  printf(\"noooo\");
}

Find ud af, hvordan mit eksempel passer ind her. Når du så har fået det til at virke, så vil du nemmere kunne finde ud af det andet.

Jeg beklager meget, at jeg ikke vil servere løsningen for dig på et fad (lad bare være med at give mig point). Det skyldes min fortid som underviser... ;-)
Avatar billede soepro Nybegynder
11. december 2001 - 12:00 #9
Ja, ja - hvorfor lave det enkelt, når man med en lille smule besvær kan lave det kompliceret !!!

Prøv dette:

#include <conio.h>
#include <math.h>

int (main(void)
{
  int a, b, c, i;
  int rigtige, forkerte;

  randomize();
  rigtige = forkerte = 0;
  for (i = 0; i < 10; i++)
  {
    a = random() % 30 + 1;
    b = random() % 30 + 1;
 
    printf(\"Spørgsmål %2d: Hvad er %d + %d: \", i, a, b);
    scanf(\"%d\", c);
    if (c==(a+b))
    {
      printf(\"Succes\");
      rigtige++;
    }
    else
    {
      printf(\"Forkert\");
      forkerte++;
    };
  }; // 10 spørgsmål.
  printf(\"Ud af %d spørgsmål havde du %d rigtige og %d forkerte.\", i, rigtige, forkerte);
  return 0;
}
Avatar billede soepro Nybegynder
11. december 2001 - 12:00 #10
Og det var naturligvis mit SVAR.
Avatar billede kamikaze Nybegynder
11. december 2001 - 13:15 #11
soepro >> virker kun i Borland. i VC++ er der ikke noget der hedder random() :-)
Avatar billede soepro Nybegynder
11. december 2001 - 14:43 #12
Og randomize/random virker kun under DOS, men:

#include <stdlib.h>
time_t  t;
#define random(x) (rand() % x)
#define randomize() (srand((unsigned) time(&t))

løser det problem.
Avatar billede infected_user Nybegynder
11. december 2001 - 17:41 #13
fx:

cout << \"Skriv tal 1\" << endl;
cin >> a;

så er det tal der er skrevet sat ind i variablen a

-håber det var det du sku bruge...
Avatar billede soepro Nybegynder
13. december 2001 - 11:37 #14
infected_user >> følg lige lidt med, vi er længe forbi det problem.
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