1 / 4
Mar 2020

Mam problem z kodem który w sumie działa poprawnie ale w konsoli, po poprawnym wyniku, pojawia się zbędna liczba całkowita. Dlaczego tak jest?

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int dodac(int d, int e);
int odjac(int d, int e);
int pomnozyc(int d, int e);
int podzielic(int d, int e);

int main()
{
int a = 0;
int b = 0;
printf("\nWpisz A\n");
scanf("%d", &a);
printf("\nWpisz B\n");
scanf("%d", &b);

printf("\nWynik dodawania:\n");
printf("%d", dodac(a, b));
printf("\n");
printf("\nWynik odejmowania:\n");
printf("%d", odjac(a, b));
printf("\n");
printf("\nWynik mnozenia:\n");
printf("%d", pomnozyc(a, b));
printf("\n");
printf("\nWynik dzielenia:\n");
printf("%d", podzielic(a, b));
printf("\n");

}

int dodac(int d, int e) {
int c;
c = d + e;

return (printf("%d\n", c));

}

int odjac(int d, int e) {
int c;
c = d - e;

return (printf("%d\n", c));

}

int pomnozyc(int d, int e) {
int c;
c = d * e;

return (printf("%d\n", c));

}

int podzielic(int d, int e) {
int c;
c = d / e;

return (printf("%d\n", c));

}

  • created

    Mar '20
  • last reply

    Mar '20
  • 3

    replies

  • 437

    views

  • 3

    users

Sugeruję dokonać pewne zmiany w ciele każdej z funkcji. Dla przykładu w funkcji “dodać” i odjąć

int dodac(int d, int e) {
return d+e;
}

int odjac(int d, int e) {
return d-e;
}
itp…

Dzięki, udało się.

A wiesz dlaczego pojawia się ta dodatkowa wartość tuż po uzyskanym wyniku?

Bo tak działa printf. Cytując dokumentację: “On success, the total number of characters written is returned.”. Czyli np dla liczb 100 i 1 w wyniku dodania ich do siebie uzyskasz 4, bo 100 + 1 = 101 ergo 3 cyfry + 1 znak końca linii.

EDIT
Zdajesz się nowy, więc rozwinę:

return c; <— zwracasz liczbę c, która jest równa a + b. printf w mainie wyświetli tę liczbę.
return (printf(…)); <— zwracasz wynik wywołania funkcji printf. Sama funkcja printf wyświetli zatem … i zwróci, że wyświetliła tyle znaków ile cyfr ma liczba c + znak końca linii. printf w mainie wyświetli zatem nie liczbę c tylko liczbę cyfr.