• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego nie wchodzi w ifa?

Object Storage Arubacloud
0 głosów
409 wizyt
pytanie zadane 28 października 2015 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)

Witajcie, napisałem taki oto program, miał on służyć do losowania bez powtórzeń, wydaje mi się, że jest dobry, nie rozumiem jednak, dlaczego mimo spełnienia warunku if się nie wykonuje, przez co pętla nigdy się nie kończy...

 

#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;



int main()
{
	srand(time(NULL));
	
	bool zakres[101];
	int wylosowane[11];
	int liczba;
	int wylosowanych = 0;

	for (int i = 0; i <= 100;i++) zakres[i] = false;
	
	
	
	do
	{
		liczba = rand() % 100 + 1;
		cout << "oto twoja liczba: "<<liczba << endl;
		cout << "czy taka liczba już była? : " << zakres[liczba];
		system("pause");
		if (zakres[liczba] = false)
		{
			cout << "udalo sie wejsc w for";
			wylosowane[wylosowanych] = liczba;
			wylosowanych++;
			zakres[liczba] = true;

		}

		

	} while (wylosowanych != 10);

		for (int i = 0; i < 10; i++)
	{
		cout << wylosowane[i];
		
		}
	
	
	return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 28 października 2015 przez niezalogowany
wybrane 28 października 2015 przez Sinnley
 
Najlepsza

Masz kilka błędów, możesz mi na samym początku wyjaśnić dlaczego rozmiary tablicy robisz o rozmiarach 11, 101, ... ? Stoi za tym jakiś logiczny powód, czy to wynika z głupoty każącej ci numerować od 1, a nie od 0?

W tej linii, przypisujesz wartości w tablicy false, a nie porównujesz, porównuje się przy użyciu podwójnego znaku równości ==

if(zakres[liczba] = false)

 

komentarz 28 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Numeruje tak, dlatego, że liczby, które losuje mają być z przedziału od 1 do 100, a mój sposób polega na tym, żeby nie prosić programu o sprawdzanie całej tablicy, tylko udanie się do szufladki z danym numerem.

Chociaż teraz jak to piszę to w sumie mogłem tylko napisać pod koniec, żeby wypisywało o liczbę o jeden większą.

Tak czy siak dzięki za pomoc, podejrzewam, że błąd wziął się z tego, że teraz na lekcjach w szkole programujemy w pascalu, stąd przyzwyczajnie i pomieszanie.
komentarz 28 października 2015 przez draghan VIP (106,230 p.)

Stoi za tym jakiś logiczny powód, czy to wynika z głupoty każącej ci numerować od 1, a nie od 0?

Nie brzmi to przyjaźnie. ;) Wypełnianie ma zrobione poprawnie, pełen zakres zostaje obsłużony, więc dlaczego akurat o to pytasz?

komentarz 28 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
Kto pyta nie błądzi, kto nie pyta nigdy się nie dowie ;)

Nie mam nic do niego, może z czasem zacznie pytać grzeczniej :P
komentarz 28 października 2015 przez niezalogowany
Bo wciąż nie wykorzystuje całej zarezerwowanej pamięci (jasne, uzupełnia całą tablicę, ale ostatecznie w wyniku uwzględnia tylko pierwsze liczby, czyli mamy marnotractwo pamięci)
komentarz 28 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
gdybym miał sprawdzać całą tablicę od początku do końca z kolei marnotrawilibyśmy czas.

jakie rozwiązanie proponujesz?
komentarz 28 października 2015 przez niezalogowany
Ja mówię tylko o niepotrzebnym rezerwowaniu tablicy na [11] i [101] elementów, chyba że gdzieś wykorzystujesz element [10] i [100] to wtedy zwracam honor (o ile to jeszcze nie kwesta dodania 1, bo wtedy to żadna oszczędność).
komentarz 28 października 2015 przez Sinnley Stary wyjadacz (12,810 p.)
dodania 1 i zarezerwowania tablicy [10] i [100], wtedy już oszczędzamy tak jakbyś chciał :p

Podobne pytania

0 głosów
2 odpowiedzi 160 wizyt
pytanie zadane 12 grudnia 2015 w C i C++ przez cytrynowy012 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 164 wizyt
pytanie zadane 9 marca 2021 w SQL, bazy danych przez lulok7 Nowicjusz (180 p.)
0 głosów
3 odpowiedzi 321 wizyt
pytanie zadane 11 października 2021 w C i C++ przez Andrzej_Olsz Nowicjusz (210 p.)

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,013 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...