Prośba o wytłumaczenie fragmentu kodu

0

O co w tym chodzi? prosze o wytłumaczenie

{
    char znaki[16]
        = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
    printf("\nliczba %d(10)=", x);
    int everyNumber[100], i = 1, j;
    while (x != 0)
    {
        everyNumber[i++] = x % mod;
        x = x / mod;
    }

    for (j = i - 1; j > 0; j--)
        printf("%c", znaki[everyNumber[j]]);

    printf("(%d)\n", mod);
}
1

ecdf5b1d3c.png

O co w tym chodzi? prosze o wytłumaczenie

0

ZADANIE
Obliczyć wartość funkcji jednoargumentowej. Z wartości y wybieramy pierwsze dwie cyfry i wyświetlamy wynik w systemach dwójkowym i szesnastkowym.

0

I czego nie rozumiesz w zadaniu? I co to jest wartość y?

0

Przedstawiony kod jest bez kontekstu, więc nie można z pełną pewnością powiedzieć, ale jeśli jest w ciele funkcji to odpowiada za wyświetlenie liczby x w systemie o podstawie mod (zakładając, że nie ma żadnych błędów typu off-by-one).

0
Inquis1t0r napisał(a):

I czego nie rozumiesz w zadaniu? I co to jest wartość y?

to jest cały kod z tego zadania

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

double x=5.2,y,a,b;

void to_every(int x,int mod)

{
	char znaki [16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("\nliczba %d(10)= ",x);
**int everyNumber[100],i=1,j;**
	while(x!=0)
	 {
         everyNumber[i++]= x % mod;
         x = x / mod;
    }

    **for(j = i -1 ;j> 0;j--)**
	     printf("%c",znaki[everyNumber[j]]);

    printf("(%d)\n",mod);
}
int main(int argc, char *argv[])
{
	printf("obliczanie wyniku funcji y= 7/5.7+3*x dla x = 5.2\n");
	y= (7/(5.7+3*x));
	printf("x=%.2f y=%f\n", x, y);

	double a,b,c;x;

	a = y;
	c = modf (a , &b);
    printf ("liczba=%f\ncalosc=%f\ndziesietna=%f\n", a, b, c);

    int f;
	c=c*100000;
	f=c;
	to_every(f,2);
	to_every(f,16);

	printf("liczba %.5f(10)= %x(16)\n", a,f);
	printf("Wybieram 1 oraz 2 liczbe z wyniku po przecinku");
	double wynik= c/1000 ;
	printf("\nwynik = %f",c);
	wynik = floor(wynik);
	printf("\n%f",wynik);
	to_every(wynik,2);
	to_every(wynik,16);


	return 0;
} 

Nie rozumiem dlaczego i=1
i potem tej pętli z for

0

no to może inaczej zapytam- kto byłby tak litościwy i wytłumaczył mi o co chodzi w tym kodzie krok po kroku ? :D

0

Dlaczego i=1 a nie 0? Nie wiem, na pewno nie jest to idiomatyczne, może ktoś przyzwyczajony do matlaba to pisał.

W każdym razie, w pierwszej pętli zapisujesz cyfry x w odwrotnej kolejności do tablicy, dlatego też później jeszcze raz odwracasz ich kolejność aby wyświetlić je w prawidłowej (t.j. big endian).

0

Przede wszystkim odpisuj w wątku a nie w prywatnej wiadomości, nie jestem jedyną osobą, która chce pomóc, bo jak widać jest też KrzaQ, któremu chyba C/C++ płynie w krwi zamiast hemoglobiny.
A co do zadania (wstawiony kod, jak się dowiedziałem, jest dziełem koleżanki ze studiów), podaj nam dokładną treść polecenia i dane jakie były do niego dołączone. Wtedy wyjaśnimy co po kolei zrobić i rozwiejemy dokładne problemy, a zapewniam, że da się to wtedy zrobić prosto i czytelnie. Bo wstawiony kod jest straszliwie nieczytelny i przekombinowany.

0

ZADANIE 1
Obliczyć wartość funkcji jednoargumentowej. Z wartości y wybieramy dwie cyfry i wyświetlamy wynik w systemach dwójkowym i szesnastkowym.

Wzór funkcji : y= 7/(5.7+3*x) dla x = 5.2

1 użytkowników online, w tym zalogowanych: 0, gości: 1