[C++] Program wyswietlający kolejno cyfry

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

[C++] Program wyswietlający kolejno cyfry

Post autor: grysek67 » 14 paź 2008, 13:06

Witam

Napisalem taki programik:

Kod: Zaznacz cały

#include <stdio.h>

int main()
{
 unsigned char liczba = 0;
 while (true) {
   ++liczba;
   printf("%u\n", liczba);
 }
 return 0;
}
Programik ma za zadanie zwiekszac cyfre o jeden i ją wyswietlac. Niewiem czemu po kompilacji wszystko jest ok ale program poprostu nie dziala tzn nie wyswietla kompletnie nic i nic sie nie dzieje tak jaby zaraz sie zakonczyl. Czy to bład w programie czy wina kompilatora (uzywam Boland C++ Builder) ?

Pozdrawiam :razz:

syrioosh
-
Posty: 8
Rejestracja: 26 kwie 2008, 20:38
Lokalizacja: mielec

Post autor: syrioosh » 14 paź 2008, 13:24

Wpisalem u siebie... zmienilem zamiast true na 1 ( bo cos sie kompilatorowi nia podobalo) i dziala
Dodatkowo zmien

Kod: Zaznacz cały

unsigned char liczba
na

Kod: Zaznacz cały

 unsigned int  liczba
Jak daljesz char to wyswietlia wartosci ASCII ( do 255)

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 14 paź 2008, 13:38

Jakiego kompilatora uzywasz? Char przechowuje wartosci typu byte

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 14 paź 2008, 15:57

grysek67, u mnie wszystko działa ok...
może program tak szybko wyśiwetla wyniki w terminalu, że nie jesteś w stanie ich zauważyć... przecież program się zapętla i praktycznie cały czas liczy...

syrioosh
-
Posty: 8
Rejestracja: 26 kwie 2008, 20:38
Lokalizacja: mielec

Post autor: syrioosh » 14 paź 2008, 17:42

może program tak szybko wyśiwetla wyniki w terminalu, że nie jesteś w stanie ich zauważyć... przecież program się zapętla i praktycznie cały czas liczy...
To dodaj

Kod: Zaznacz cały

#include <time.h>
i uzyj funkcji na przyklad
sleep(1);
Dzieki temu dowolnie mozesz kontrolowac szybkosc naliczania

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 14 paź 2008, 17:50

lub po prostu zakończ działanie programu gdy program doliczy się do jakiegoś miejsca np:

Kod: Zaznacz cały

#include <stdio.h>

int main()
{
	unsigned char liczba = 0;

	while(liczba<254)
	{
		++liczba;
		printf("%u\n", liczba);
	}

	scanf("a");

	return 0;
}

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 14 paź 2008, 18:14

Program zaproponowany przez Spark89 tez nie dziala;/ przypuszczam ze to wina kompilatora. Musze spróbowac jakims innym kompilatorem. Probowalem tez robic cos takiego i nic

Kod: Zaznacz cały

#include <stdio.h>

int main()
{
 unsigned int cyfra;
 while (true) {
  ++cyfra;
  printf("suma: %u\n",cyfra);
  for (unsigned int i = 0; i < 4000000; ++i);
  }
 return 0;
}
Dziwne bo wczesniej działało. Jakich Wy uzywacie kompilatorów?

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 14 paź 2008, 18:18

Po pierwsze czy zapisujesz plik na dysku?
Nie zapisany plik w Builderze w ogóle się nie skompiluje.
Po drugie mam nadzieję, że piszesz program w "Console Wizard" bo tylko w nim taki kod pójdzie. Mi te algorytmy chodzą bez problemu. Możesz napisać jak masz skonfigurowaną ścieżkę PATH w systemie?

[ Dodano: 2008-10-14, 19:20 ]
jednak kompiluje się i bez zapisywania na dysku... :roll:

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 14 paź 2008, 19:20

Też myślałem, że to dlatego i teraz juz zawsze zapisuje i nic. Nie wiem zabardzo o co chodzi z tym PATH ale chyba o to? :
Wiersz polecen pisze:PATH=D:\Borland\CBUILD~1\Bin;D:\Borland\CBUILD~1\Projects\Bpl;D:\PROGRA~1\B
d\CBUILD~1\Bin;D:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\Program Files\P
nectivity Solution\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem

http://www.fotosik.pl/pokaz_obrazek/pel ... 418b3.html - pisze w tym oknie to chyba dobrze nie?

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 14 paź 2008, 19:41

Jeśli otworzyłeś projekt w sposób:

Kod: Zaznacz cały

File->New->Other...->Console Wizard->OK
to znaczy, że dobrze... z tego co widzę na zrzucie tak właśnie chyba masz...

a PATH... krótko mówiąc i niezbyt precyzyjnie - zmienna systemowa mówiąca np. właśnie Builder'owi gdzie ma szukać plików wykonywalnych kompilatora, ot tak żeby nie musiał szukać po całym komputerze...

Zmienną tę edytujesz klikając (jeśli masz XP) PPM na "Mój Komputer"->Właściwości, następnie w zakładce Zaawansowane na samym dole jest przycisk "Zmienne Środowiskowe", na liście poniżej znajdziesz zmienną PATH, robiąc użytek z przycisku edytuj skopiuj jej zawartość i wklej na forum...

[ Dodano: 2008-10-14, 20:42 ]
No jak widać wszystko masz ok...
Co konkretnie się dzieje gdy kompilujesz program? Uruchamia się coś robi czy znika od razu?

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 15 paź 2008, 6:04

Zawartość zmiennej path to:
D:\Borland\CBUILD~1\Bin;D:\Borland\CBUILD~1\
Projects\Bpl;D:\PROGRA~1\Borland\CBUILD~1\Bin;D:\PROGRA~1\Borland\CBUILD~1\Projects\Bpl;C:\Program Files\PC Connectivity Solution\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
Po nacisnieciu przycisku program zaczyna sie kompilowac i powinna sie włączyc emulacja ale niestety szybko sie wyłącza tak jakby program sie juz wykonal a kidy uruchomie utworzony plik *.exe to nie dziala jakby program byl pusty

Awatar użytkownika
olo16
Użytkownik
Posty: 396
Rejestracja: 12 paź 2007, 16:37
Lokalizacja: w-wa

Post autor: olo16 » 15 paź 2008, 19:24

Spark89 pisze:Nie zapisany plik w Builderze w ogóle się nie skompiluje.
Tu się nie zgodzę, bo mi kompiluje niezapisane
A w ogóle to strasznie zalatuje C. Nikt nie słyszał o "iostream" i "cout"? stdio jest ciut przestarzałe.

[ Dodano: 2008-10-15, 20:25 ]
Spróbój w Dev-C++

[ Dodano: 2008-10-15, 20:32 ]
W Dev-C++ działa. To była kwestia buildera

spark
Użytkownik
Posty: 412
Rejestracja: 25 lis 2004, 15:50
Lokalizacja: Wrocław

Post autor: spark » 16 paź 2008, 14:02

olo16, heh sorry, po pierwsze mam buildera i u mnie działa po drugie dopisałem że jednak się zapisuje a po trzecie biblioteka stdio nie jest stara a jest to fundament programowania strukturalnego jeśli wiesz co to znaczy... iostream bazuje na obiektach... i jest dla bardziej rozgarniętych nie wymaga od programisty kontrolowania tego jakie dane ma przetwarzać standardowy strumień wyjścia/wejścia...

Twój post nic nie wnosi do tematu... kolega chce to napisać w Builderze nie w dev-c++...

grysek67, Nic mi już nie przychodzi do głowy - pozostaje kwesta wywalenia Borlanda i wgranie go na nowo... spróbuj i powiedz jakie efekty.

Awatar użytkownika
grysek67
Użytkownik
Posty: 315
Rejestracja: 27 cze 2007, 6:34
Lokalizacja: Limanowa
Kontakt:

Post autor: grysek67 » 16 paź 2008, 16:08

Reczywiscie w Dev kompiluje i dziala ale mi jednak zalezy na Borlandzie.. No zainstalowalem od nowa lecz nic to nie dalo. Wkrótce bede instalowal system operacyjny od nowa i moze to cos da - byc moze jakies konflikty aplikacji są czy cos :???: O wynikach napisze :razz: Chyba ze ktos ma jeszcze jakis pomysł co moze byc nie tak?

Awatar użytkownika
olo16
Użytkownik
Posty: 396
Rejestracja: 12 paź 2007, 16:37
Lokalizacja: w-wa

Post autor: olo16 » 16 paź 2008, 17:58

Spark89 pisze:programowania strukturalnego jeśli wiesz co to znaczy...
Wiem.
Spark89 pisze:iostream bazuje na obiektach...
Też wiem.
Spark89 pisze:i jest dla bardziej rozgarniętych
Nie. Jest o wiele peostrzy w obsłudze. Mogę to poprzeć rozdziałem 21.21 Symfonii C++

ODPOWIEDZ