Skocz do zawartości
FlyingDutch

Programowanie w języku C - pytanie kontrolne

Pomocna odpowiedź

No, nigdzie nie było o tym że to ma być standard, prawidłową odpowiedzią byłoby również "użyj konkretnego kompilatora".

Udostępnij ten post


Link to post
Share on other sites
8 minut temu, Elvis napisał:

To nie jest poprawna odpowiedź

Wydawało mi się, że poprawna odpowiedź to odpowiedź zawierająca działające rozwiązanie - widocznie się myliłem...

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Ze słownika PWN:

Cytat

poprawny

1. «zgodny z faktami lub prawami logiki»

2. «zgodny z obowiązującym konwenansem»

3. «przestrzegający obowiązujących norm»


• poprawnie • poprawność

Jak widzisz nie ma tam nic o działaniu. Można mieć działający program, który nie jest poprawnie napisany, albo niedziałający napisany poprawnie.

Edytowano przez Elvis

Udostępnij ten post


Link to post
Share on other sites

Hm... wydaje mi się, że jeśli program nie działa prawidłowo [to nie jest poprawnie napisany (chyba, że ktoś za "poprawność" uważa jedynie poprawność składniową). Inaczej: program który uważa , że 2 * 3 = 5 nie może być poprawny, choć najprawdopodobniej użyto w nim całkiem poprawnego operatora dodawania zamiast mnożenia 😉 A o słynnej różnicy między poprawnymi w FORTRAN-ie instrukcjami

DO 10 I=1,5

a

DO 10 I=1.5

to już wspominać nie będę...

Ale może faktycznie to mi się wydaje...

Udostępnij ten post


Link to post
Share on other sites

Zanim narodzi się z tego jakaś mała przepychanka słowna to bardzo proszę wszystkich o profesjonalne podejście do tematu 🙂 Może dobrym rozwiązaniem będzie zwyczajne określenie dokładnej specyfikacji języka i kompilatora, na którym mają działa rozwiązywane przez Was zadania?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

No i racja (co prawda nie była to przepychanka, @Elvis miał świętą rację wytykając mi rozszerzenia GNU).

W takim razie precyzuję swoje zadanie: kompilator GCC.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Jak w inny sposób zliczać wciśnięcie przycisku w tym przerwaniu (dalej doprecyzuje):

ISR(PCINT0_vect) {
for ( i=0; i<4; i++) {
if (bitRead(PINB,i))
  {
    buttonPress++;    
    if ((button[i]==losowyPin) && bitRead(PIND,2+i))
    {
     score++; 
     bitClear(PORTD, 2+i);
    }
    if(!buttonPress) buttonPressBuf++;
    if(!score) scoreBuf++; 
  }
 }
}

poniżej zmienne globalne

volatile byte button[4] = {2,3,4,5}; 
volatile byte buttonPress = 0;
volatile byte buttonPressBuf = 0;
volatile byte losowyPin =2;
volatile byte score =1;
volatile byte scoreBuf =0;

unsigned int buttonPressSum;

ostatnia zmienna znajduje się w loop();  i zlicza ile razy wciśnięto przycisk

buttonPressSum = (buttonPress + (buttonPressBuf * 256));

Czy można zliczać ile razy wciśnięto przycisk bez dodatkowej zmiennej buttonPressBuf , która zlicza przepełnienia? i analogicznie ze zmienną score.

Udostępnij ten post


Link to post
Share on other sites

A co to ma wspólnego z językiem C? Masz tu typową zależność od konkretnego mikrokontrolera, a C jest raczej niespecjalnie zależny od architektury.

Udostępnij ten post


Link to post
Share on other sites

Racja to bardziej do innego działu pasuje.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Okej, to może pytanie bardziej z gatunku wiedzy o składni:

Zakładając, że mamy tablicę:

int arr[5] = {1,2,3,4,5};

Oraz interesuje nas element o indeksie:

const int idx = 2; // zwróć liczbę 3

Wypisz wszystkie możliwe sposoby na uzyskanie dostępu do wartości elementu o indeksie 2, czyli wartości = 3, korzystając z C lub C++ (bez użycia wstawek assemblerowych).

Edytowano przez Matthew11
Sprecyzowanie

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...