Deklaracja zmiennych na początku programu jest dobrym nawykiem, bez tego zadeklarowana zmienna będzie początkowo przechowywać nieustaloną wartość (śmieć z pamięci), więc zadeklarowanie jest ok. To warunek, który jest ustalony dla pętel while jest błędny. W Twoim kodzie użyty jest operator większości, więc sprawdzamy czy licznik3 (lub licznik2) jest...
Skąd takie wnioski? Pętla while w funkcji głównej nigdy się nie kończy - jest nieskończona: jest realizowane natychmiast. Wrzuć fragment kodu lub dokładniej opisz problem? Sprawdź w swoim kodzie czy włączasz przerwania: sei()
Aha, już rozumiem, wg mnie mylisz dwie rzeczy: [syntax=c]volatile int * ptr; int * volatile ptr;[/syntax]
Program zaczyna działanie. Jeśli warunek pierwszej pętli jest SPEŁNIONY pętla wykonuje się. W momencie kiedy przestaje być spełniony (wyrażenie == false) przechodzi dalej i sprawdzany jest warunek kolejnej pętli. Tu zabawa zaczyna się od nowa. Tak jak napisał poprzednik, program ten wykonuje się jednowątkowo.
Są dwa rodzaje pętli while: [syntax=c]do {} while(true);[/syntax] oraz [syntax=c]while(true) {}[/syntax] Zauważ, że tylko pierwsze while() w Twoim kodzie odnosi się do 'do {} ' na początku, następne są pętlami drugiego rodzaju, na dodatek pustymi.
Użyj znacznika syntax zamiast code do wrzucania kodu i go sformatuj. Nie da się tego czytać. Zastanów się na spokojnie nad swoim programem. Działa on obecnie tak: 1. Czytaj z wejścia analogowego 2. Jeżeli odczyt > 700 to wyłącz grzałkę i wskocz w pętlę, która za pierwszym razem nie zadziała bo temperatura tak szybko nie spadnie (analogRead będzie...
Najpierw scanf() ale do łańcucha znaków (tablica char), a potem na tym łańcuchu porównanie z "n" i jeżeli się zgadza, to wyjście, a jeżeli nie, to można użyć konwersji z łańcucha na liczbę. Na przykład za pomocą atoi() z stdlib.h , z tym że tego nie ma chyba w ANSI C, ale jest w ISO. Można też od biedy zrobić sscanf() na tym łańcuchu, ale to mniej wydajne.
1. ^ to operator logiczny alternatywy rozłącznej. Co on tu robi? Raczej chodziło Ci o potęgowanie. Nie ma operatora potęgowania - trzeba użyć funkcji. Operator potęgowania w postaci ^ to, jeśli dobrze pamiętam, tylko Basic wykorzystywał (i Excel ;) ) 2. Rozmiar tablic dynamicznych podaje się w nawiasach kwadratowych. Nie wiem, co oznacza zapis stworzony...
Tak się zapytam, plik config.php, zawarty w nim kod jest w obrębie <? ...?> ?
Wydaje mi się, że sam sobie odpowiedziałeś na pytanie. Dla ścisłości proponuję każdy z tych warunków umieścić w osobnym nawiasie. Zasadniczo w warunku pętli pytasz: Czy zmienna jest różna od "tak" ORAZ czy jest różna od "Tak" ORAZ czy jest różna od "TAK" Jeżeli wpisałeś "Tak" to został spełniony jeden warunek, pozostałe nie. Ponieważ operator && jest...
[syntax=php] foreach ($tydzien as $numerDnia => $nazwaDnia) { print "Nr dnia".$numerDnia." nazwa".$nazwaDnia; } [/syntax]
While - wend działa do póki warunek jest prawdą. Zamiast OR wstaw AND i zmiana któregokolwiek spowoduje opuszczenie pętli.
Powód jest bardzo prosty: zmniejszenie zmiennej w pamięci nie jest operacją atomową. Co prawda za każdym razem następuje odczytanie zmiennej, zmniejszenie jej a następnie zapis, to jeśli przerwanie wystąpi pomiędzy odczytem a zapisem, to utracisz zmianę dokonaną w przerwaniu. W przypadku gdy przerwanie i funkcja main konkurują o jeden zasób, musisz...
Cos sie tak uparł na to while :) Jest to bardzo zdradliwa operacja :wink: Ty wpadasz w void KeyPressed (void) i już z niej nie wychodzisz :) Czemu?? Przyglądnij się. Lepiej operowac na flagach , jak klawisz wciśnięty ustaw bit i w dalszym miejscu sprawdzasz że jak ustaowiony ten bit to migaj itd. :) np: void main(void) .... ... ... {...
Jeżeli używasz jakąś zmienną w przerwaniach to powinna ona być zadeklarowana jako volatile. Dlatego: unsigned char buf_TWI void AVR_wyslij(unsigned char lb_dane) { cli(); // zablokowanie zezwolenia na przerwania if(TW_STATUS != TW_ST_SLA_ACK) // sprawdzenie czy ukłąd mastera wysłał prawidłowy adres Slave'a { sei; //...
Zmień deklarację zmiennej flaga_swieci na taką: volatile unsigned char flaga_swieci; powinno pomóc.
No ale właśnie nota AVR315 bazuje na przerwaniach. Startujesz transmisję za pomocą funkcji TWI_Start_Transceiver_with_Data() i możesz procesor zająć wykonywaniem innego kodu. Jeżeli procesor będzie miał wystarczająco dużo pracy przez okres trwania transmisji (lub dłużej), to wykonanie while ( TWI_Transceiver_Busy() ); wcale nie będzie trwało 160 taktów,...
Ta funkcja musi działać. Albo podajesz błędne adresy albo hardwarowo jest coś nie tak. Przypadkiem nie ustawiaj podglądu rejestrów I2C do poglądu w debugu.
Dodano po 5 A i taki mały błąd znalazłem, w pętli for inkremantacja następuje na samym końcu, czyli sprawdzamy warunek wykonujemy kod z nawiasów, inkrementujemy, sprawdzmy warunek itd... Ty inkrementujesz zaraz na początku i program trochę źle działa przesuń "++i" i "++ii" na koniec. Dodano po 5
Najprawdopodobniej zanim kondensator się naładuje po włączeniu podciągania to sprawdzasz stan i otrzymujesz stan niski.
Z tego co się doczytałem zmienne tworzone w funkcji "giną" w raz z wyjściem z funkcji ale jak to jest naprawdę?? Radzę znaleźć jakąś dobrą książkę do C. W skrócie: takie zmienne (automatyczne) giną ponieważ przechowywane są w trakcie wykonywania danej funkcji na stosie. Jeśli program wchodzi w nową funkcję na stosie zapisywany jest kontekst powrotu...
Pisane z głowy i na szybko. [syntax=cpp] volatile int8_t stan; ISR (INT0_vect) { if (stan == 1) stan = 0; else stan = 1; } int main(void) { DDRD=0xff; PORTD=0x00; DDRC=0xff; stan = 0; MCUCR |= (1<<ISC01);//poczytaj o tym GICR |= (1<<INT0);/// i o tym sei(); uruchamia mozliwos uruchamiania przerwan while(1) { if (stan == 0) { while(1) { cośtam...
Ten kod się wykona, gdy wypełni się cały klaster: [syntax=C]if(j == sectorPerCluster) { j = 0; break; } [/syntax] który zakończy pętlę do .. while pomimo, że data != '~'
o ile wszystko jest dobrze to brakuje Ci magicznego słowa "volatile"
Brak jakiegokolwiek odpowiedzi w tym temacie zmusił mnie do wytężonej pracy umysłowej dzięki czemu bardzo proste menu funkcyjne wraz z prostym mechanizmem poruszania się po nim zrealizowałem przy pomocy pętel while i instrukcji warunkowych if else. Pozdrawiam i dziękuję.
Po prostu usuń średniki po #define. To nie są instrukcje języka. No i usuń średnik po if()- średnik w C rzecz prawie święta- ale tylko prawie. Poza tym w pierwszej wersji nie było średnika po if(). A wtedy: Build succeeded with 0 Warnings...
Można tak: #include <stdio.h> #include <conio.h> int main() /* jeżeli na końcu procedury dajesz return(0), to prototyp powinien być int main(), a nie void main() */ { int jakas_zmienna=1; int a,b,c,P,O; while(jakas_zmienna) { clrscr(); printf("Podaj wartosc a=");...
while(opcja != SW_SET);
Jeśli sprawdziłeś już pierwszą wartość z kolumny, to po zresetowaniu znowu zaczynasz od pierwszej... Żeby skrócić czas działania, można liczyć przebiegi i podstawiać Nr kolejnego wiersza wg schematu: licznik=1 Pętla zewnętrzna WP=licznik Pętla wewnętrzna instrukcje Loop licznik=licznik+1 Loop
Załącz plik. Jeśli typ zmiennej jest Variant, nie powinno być tego błędu.
Pętla while (ang. podczas gdy) – wykonuje instrukcję tak długo, dopóki jej warunek jest spełniony (ma wartość różną od zera). Instrukcja sprawdza warunek przed wykonaniem ciała pętli. Pętla while może wykonywać się nieskończoną ilość razy, gdy wyrażenie nigdy nie przyjmie wartości 0, może także nie wykonać się nigdy, gdy wartość przed pierwszym...
Witam. Wydaje się że jeżeli wciśniesz przycisk zostanie wykonana pętla while. Pętla ta będzie wykonywana przez czas wciśnięcia przycisku. Jest to na tyle szybki proces że wartość zwracana może wyglądać na losową. Proponuje wstawić jakąś funkcję opóźniającą w pętli while.
Najprościej jak tylko możliwe Dim p As Variant p = "a" Do While IsNumeric(p) = False p = InputBox("Podaj kapitał początkowy:") If p = "" Then Exit Sub If IsNumeric(p) = True Then Exit Do MsgBox "Zle dane" Loop
zapomniales Dir() przed Loop tj. plik=Dir()
Pętla główna while powinna kończyć się przed "return 0". Teraz kończy się za wcześnie. Usunąć break pozostałe po switch (3 sztuki w pętli while).
Zamiast tablicy użyj listy.
Pierwszy scanf wczytuje tylko liczbę zmiennoprzecinkową, a pamiętaj, że tam jest również enter. Zostaje on w buforze i trafia do drugiego scanf. Możesz to sprawdzić debugując program lub - co jest bardziej popularne wśród początkujących - zrób wydruk zmiennej ch. Musisz wyczyścić bufor przed wykonaniem drugiego scanf: [syntax=c]fflush(stdin);[/syntax]
Brakuje zamknięcia w {} wnętrza pętli while. I formatowania.
Witam Chodziło Ci o coś takiego? #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { char tekst[100]; int i=0; cout<<"Podaj tekst do wpisania: "; cin>>tekst; while( tekst[i]!='h') i++; cout<<"Liczba znakow to:...
Dwie nieskończone pętle while, ciekawe kiedy przejdzie z pierwszej do drugiej.
jak s jest null-em to nie możesz na nim wywołać .equals(). Może lepiej czytać z pliku w pętli while-do zamiast do-while?
przecież wysyłasz to w pętli while
Po sprawdzeniu warunku wpadasz w nieskończoną pętle while(1).
Czy pętla while(1) w funkcji dla menu jest wywoływana w pętli loop()? Z kodu, który przedstawiłeś ciężko się połapać, jaka jest relacja pomiędzy funkcjami menu() a menuZdarzenia().
Dlaczego goto? Wystarczy zwykła pętla while, którą zakończysz gdy będziesz chciał skończyć wątek.
Pytanie gdzie w pętli while(1) i jak w tej pętli używasz funkcji beep() ? Nie potrzebuje funkcji beep() potrzebuje całego kodu aby Ci pomóc. Przynajmniej pliku main.cpp(.c)
Oczywiście że wracasz tam gdzie zostało wywołane przerwanie. Potrzebny Ci warunek wyjścia z pętli while(1) funkcji efekt1 inaczej nigdy nie wrócisz do main'a.
A gdzie schemat? Czemu nie ma u ciebie w programie pętli while?
Z pętli while() i do..while() możesz też wyskoczyć używając break. Czasami zamiast tworzyć skomplikowany warunek do działania pętli łatwiej jest stworzyć warunek na jej przerwanie. Wybór działu rzeczywiście "znakomity". Jak tylko moderator się obudzi będziesz miał przechlapane :-)
nie bazuj na pętli o określonej liczbie przebiegów, lecz na pętli while, zaś licznikiem niech będzie dodatkowa pomocnicza zmienna, która bedzie inkrementowana wyłącznie w przypadku wprowadzenia poprawnej wartości.
arduino while instrukcja while excel while
wymiana grzałki pralka mechanizmy magnetofonów edifier głośnik r2600
kontrolka ducato chrysler pacifica
Bezpiecznik w Philips BTD7170/12: lokalizacja i wymiana Loncin 212 CC – schemat podłączenia regulatora napięcia, kolory przewodów, test ładowania