[C++][DevC++] Błąd id returned 1 exit status

Matiks21
Użytkownik
Użytkownik
Posty: 562
Rejestracja: 20 maja 2013, o 16:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 98 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: Matiks21 »

Witam,
mam błąd w programie ale nie wiem gdzie.

Mógłby mi ktoś wytłumaczyć czym jest błąd
"id returned 1 exit status"?

Kompiluje w Dev-C++

Kod do języka C

Kod: Zaznacz cały

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

main()
{
	unsigned int j,k,i;
	
	k=floor(log2(j))+1;
	
	short int a[k];
	
	printf("wpisz liczbę calkowita którą chcesz zamienic na postac dwojkowa
");
	scanf("%d",j);
	
	for(i=k-1;i>=0;i--)
	{
		a[i]=j%2;
		j=j/2;
	}
	
	Printf("twoja liczba wyglada tak:/n");
	
	for(i=0;i<k;i++)
		print("%d",a[i]);
			
	
}
Proszę o pomoc
Ostatnio zmieniony 18 sie 2015, o 12:49 przez Afish, łącznie zmieniany 2 razy.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
archimedes
Użytkownik
Użytkownik
Posty: 89
Rejestracja: 14 kwie 2010, o 22:00
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 7 razy
Pomógł: 9 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: archimedes »

1 exit status oznacza, tylko tyle, że wystąpił błąd. Funkcja main() normalnie zwraca 0, jeśli wykonała się bez błędów.


W tej linii:

k=floor(log2(j))+1;


odwołujesz się do zmiennej j, której wartośc nie jest zainicjalizowana. Dlatego kompilator wywala się na tym wyrażeniu.
Matiks21
Użytkownik
Użytkownik
Posty: 562
Rejestracja: 20 maja 2013, o 16:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 98 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: Matiks21 »

dałem

Kod: Zaznacz cały

printf("wpisz liczbę calkowita którą chcesz zamienic na postac dwojkowa
");
   scanf("%d",j);
przed instrukcje przypisania i mi wywala program
archimedes
Użytkownik
Użytkownik
Posty: 89
Rejestracja: 14 kwie 2010, o 22:00
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 7 razy
Pomógł: 9 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: archimedes »

No ale gdzie ci wywala? To się tak poza tym nie ma prawa kompilować, bo masz printf napisany dużą literą później ...
Matiks21
Użytkownik
Użytkownik
Posty: 562
Rejestracja: 20 maja 2013, o 16:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 98 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: Matiks21 »

Kompiluje mi się, a następnie prosi o podanie liczby. Gdy podaje liczbe to wyskakuje mi komunikat ze program przestał działać.

Mój aktualny kod wygląda tak:

Kod: Zaznacz cały

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

main()
{
	unsigned int j,k,i;
	
	printf("wpisz liczbe calkowita ktora chcesz zamienic na postac dwojkowa
");
	scanf("%d",&j);
	
	k=floor(log2(j))+1;
	
	short int a[k];
	
	
	for(i=k-1;i>=0;i--)
	{
		a[i]=j%2;
		j=j/2;
	}
	
	printf("twoja liczba wyglada tak:/n");
	
	for(i=0;i<k;i++)
		print("%d",a[i]);
			
	
}
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: bartek118 »

short int a[k]; - tak nie wolno, k jest zmienną, do tego zależną od wczytywanej.

main() - może jakiś typ zwracany i na końcu return 0;? Wnioskuję po nagłówkach, że piszesz w ANSI C, a nie w C++.

scanf("%d",&j); - wczytujesz unsigned int, więc powinno być "%u"
Matiks21
Użytkownik
Użytkownik
Posty: 562
Rejestracja: 20 maja 2013, o 16:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 98 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: Matiks21 »

jest jakiś sposób na uzaleznienie dlugosci tablicy od liczby podanej na wejsciu?

tak jak w tym przypadku chce zeby długosc tablicy była równa dlugosci tej liczby w zapisie dwojkowym. Inaczej: chcę móc przeksztalcic dowolną liczbe z 10 w 2 system
archimedes
Użytkownik
Użytkownik
Posty: 89
Rejestracja: 14 kwie 2010, o 22:00
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 7 razy
Pomógł: 9 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: archimedes »

Jest, możesz dynamicznie alokować pamięć używając funkcji malloc.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: Afish »

bartek118 pisze:short int a[k]; - tak nie wolno, k jest zmienną, do tego zależną od wczytywanej.
Wolno od C99 - VLA.
bartek118 pisze:main() - może jakiś typ zwracany i na końcu return 0;? Wnioskuję po nagłówkach, że piszesz w ANSI C, a nie w C++.
A tutaj znowu może być bez typu, jeżeli jesteśmy w co najwyżej C90. Funkcja nie musi też nic zwrócić.
Matiks21
Użytkownik
Użytkownik
Posty: 562
Rejestracja: 20 maja 2013, o 16:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 98 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: Matiks21 »

czym jest C99-VLA, C90...?

Przepraszam ale dopiero ucze się programować.


@Afish mógłbyś wytłumaczyć dokładniej co wolno ?


Czytałem że podanie argumentów i zwracanego typu do main jest opcjonalne, to prawda?

Nie za bardzo też rozumiem podawanie

Kod: Zaznacz cały

 return 0;
program działa mi z tym i bez tego. W jakim celu sie tego używa?
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: bartek118 »

Afish pisze:
bartek118 pisze:short int a[k]; - tak nie wolno, k jest zmienną, do tego zależną od wczytywanej.
Wolno od C99 - VLA.
Dobrze wiedzieć
Afish pisze:
bartek118 pisze:main() - może jakiś typ zwracany i na końcu return 0;? Wnioskuję po nagłówkach, że piszesz w ANSI C, a nie w C++.
A tutaj znowu może być bez typu, jeżeli jesteśmy w co najwyżej C90. Funkcja nie musi też nic zwrócić.
Tu też pytanie - autor pisze w C, ale chce pisać w C++; stąd moja uwaga. W C++ main() powinno zwracać typ int, i zawsze wartość 0.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: Afish »

bartek118 pisze:W C++ main() powinno zwracać typ int
To się zgadza.
bartek118 pisze:i zawsze wartość 0.
A to już niestety bzdura. Gdyby funkcja zawsze zwracała zero, to weryfikacja poprawności wykonania byłaby o wiele trudniejsza.-- 18 sierpnia 2015, 16:54 --
Matiks21 pisze:czym jest C99-VLA, C90...?
C99 i C90 to standardy języka C, VLA to variable length array.
Matiks21 pisze:Czytałem że podanie argumentów i zwracanego typu do main jest opcjonalne, to prawda?
Zależy od standardu.
Matiks21 pisze:Nie za bardzo też rozumiem podawanie

Kod: Zaznacz cały

 return 0;
program działa mi z tym i bez tego. W jakim celu sie tego używa?
W celu zwrócenia poprawnego kodu wykonania do systemu. Bez tego zostanie zwrócona jakaś wartość z rejestru lub program się nie skompiluje (zależy od standardu i implementacji kompilatora).
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[C++][DevC++] Błąd id returned 1 exit status

Post autor: bartek118 »

Afish pisze:
bartek118 pisze:W C++ main() powinno zwracać typ int
To się zgadza.
bartek118 pisze:i zawsze wartość 0.
A to już niestety bzdura. Gdyby funkcja zawsze zwracała zero, to weryfikacja poprawności wykonania byłaby o wiele trudniejsza.
Czepiasz się, wiesz? Chodziło mi o return 0; na końcu maina, tj. zwrócenie 0 do systemu operacyjnego po poprawnym wykonaniu programu.
ODPOWIEDZ