Skocz do zawartości

Programowanie w języku C - pytanie kontrolne


Pomocna odpowiedź

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...

(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

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...

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
  • 2 tygodnie później...

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.

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.

(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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...