3 svar
40 visningar
mattegeni2000 är nöjd med hjälpen
mattegeni2000 130
Postad: 10 sep 09:22

Talräknare

Hej, jag ska skriv ett program som upprepat frågar efter positiva heltal tills användaren skriver in ett negativt tal. När ett negativt tal matas in ska programmet skriva ut det minsta och det största av de inmatade talen, summan av alla tal och medelvärdet av alla tal.

Problemet jag har är att när jag skriver in ett negativt tal så tar programmet med den vilket den ska inte göra,jag vill att den negativa talet ska vara en avslutning på programmet  . Låt mig ge ett exemple vad jag menar.

Min kod:

Welcome!
Enter a negative number to exit input and print the result.

Give number: 1
Give number:2
Give number: 3
Give number: 4
Give number: 5
Give number: -1

The smallest number is: 2
The biggest number is: 5
The sum of the numbers is: 14
The average value is: 2.33

som ni ser så är the sum of number 14 istället för 15 och the smallest number is:2 istället för 1

skulle någon av er kika på min kod och kolla vad jag har gjort för fel:

# include <stdio.h>
# include <limits.h>
int main()
{

printf("Welcome!\n");
printf("\n Enter a negative number to exit input and print the result.");
int num = 0, sum = 0, j = 0, max =INT_MIN, min=INT_MAX;

float avg;

do {
printf("\n Give a number:");
scanf_s(" %d", &num);
if (num >= 0)
if (num > sum) max = num;
if (num < sum && num>0) min = num;

{
sum += num;
j++;
}

} while (num >= 0);

printf("The sum of the numbers is : %d\n",sum);
printf("The smallest number is: %d\n",max);
printf("The biggest number is: %d\n", min);

avg=(float)sum/ j;

printf("\nThe average value is %.2f", avg);
return 0;
}

Dracaena 5501 – Moderator
Postad: 10 sep 10:00

Använd {:} så vi får med din indentering, det blir annars jobbigt att läsa, speciellt när du nestlar if satser utan måsvingar. Det är otydligt om du tänkt fel då det är svårt att se om de ligger under varandra eller är enskilda.

mekatronik 354
Postad: 10 sep 10:25

Om du i stället för att använda do använder while loop kan du använda följande kod för att avsluta programmet:

if (num < 0){

break;

}

I while loopens parenteser kan du skriva 1 för att programmet skall hoppa in i den.

anders_k 39
Postad: 10 sep 10:42 Redigerad: 10 sep 10:43

Om jag omformaterar din kod så kommer du säkert se problemet:

do 
{
  printf("\n Give a number:");
  scanf_s(" %d", &num);
  if (num >= 0)
    if (num > sum) 
    	max = num;
  if (num < sum && num>0) 
  	  min = num;
  {
    sum += num;
    j++;
  }

} while (num >= 0);

Det är alltid bra att använda måsvingar överallt även när det bara är en sats som skrivs, det gör koden tydligare.

Svara Avbryt
Close