3 svar
92 visningar
Alinaprogrammering1 4
Postad: 20 jan 2023 10:11

Beräkningsuppgifter

Hej!

Jag får inte till rätt beräkning: skriver in ett tal, ett andra, men svaret blir inte korrekt...

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
int dagslon, antaldagar, lon;
printf("Vad ar din dagslon?:");
scanf("%d", &dagslon);
printf("Hur manga dagar har du arbetat:");
scanf("%d", &antaldagar);
lon = dagslon * antaldagar;
printf("Din lon for de arbetade dagarna ar lon=%d:", &lon);

return 0;
}

Om jag då matar in först 500, därefter 23 som blir 11 500, får jag ett fel svar:

Din lon for de arbetade dagarna ar lon=1687682020:

Samma problem sker när jag utför andra övningsuppgifter, vad är det frågan om?

Tack på förhand!

Fermatrix 7841 – Fd. Medlem
Postad: 20 jan 2023 10:17

Du försöker skriva ut &lon,  vilket är minnesadress för lönen.

Det du egentligen ville göra var:


int main()
{
int dagslon, antaldagar, lon;
printf("Vad ar din dagslon?:");
scanf("%d", &dagslon);
printf("Hur manga dagar har du arbetat:");
scanf("%d", &antaldagar);
lon = dagslon * antaldagar;
printf("Din lon for de arbetade dagarna ar lon=%d:", lon);

return 0;
}
Alinaprogrammering1 4
Postad: 20 jan 2023 10:28

Jag förstår nu, stort tack och ha en fin helg!

anders_k 237
Postad: 20 jan 2023 15:13 Redigerad: 20 jan 2023 15:13

Gör dig en tjänst också och använd fgets istället när du läser från tangentbordet. Det kommer att spara dig många huvudvärkar.

char buf[255];
if (fgets(buf, sizeof(buf), stdin) != NULL) {
  if (sscanf(buf, "%d", &value) == 1) {
    printf("%d\n", value);
  }
  else {
    puts("fel format");
  }
}
Svara
Close