Ako prepisať for cyklus aby aj šiel – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ako prepisať for cyklus aby aj šiel – C / C++ – Fórum – Programujte.comAko prepisať for cyklus aby aj šiel – C / C++ – Fórum – Programujte.com

 

global0
Newbie
10. 7. 2017   #1
-
0
-

Ide o to naplniť 100 miestne pole čislami 0-99

Prvy spôsob funguje:

int pole[100];
int j = 0;
	
	for (j = 0; j < ARRAYSIZE(pole); j++)
	{
		pole[j] = j;
		cout << " "<< pole[j];
	}

Ten som napisal podobne ako bol v knihe iny príkladf teda mi ide ale druha úloha je skúsiť to spraviť pomocou iného cyklu už to robím asi hodinu a nejde mi to a neviem prečo.

Robím to takto:

int pole[100];
int j = 0;
	
	while(j<ARRAYSIZE(pole))
	{
		pole[j] = j;
		j++;
		cout << " " << pole[j];
	}
	

2 Spôsob mi vypíše zrejme 99 prvkov poľa ale čísla sú úplne odveci nejaké 5 miestne a nechápem prečo. Dík za pomoc

Nahlásit jako SPAM
IP: 213.81.199.–
Doomista+1
Stálý člen
10. 7. 2017   #2
-
0
-

Ty totiž v každém kroku cyklu nainializuješ j-tou položku pole a pak si vypíšeš j+1 položku pole, která inicializovaná není.

Prohoď řádek j++ a ten s cout.

Nahlásit jako SPAM
IP: 78.102.108.–
Na vše stačí iostream...
Melamber7770
Newbie
12. 7. 2017   #3
-
0
-

Podle mě by to mohlo fakat ale jak jsem bychom tam dal spíš x nebo prom1(proměnná),jenom jsem trochu nepostřehl naplnění pole j[x]aha a jak se pole může označovat samo sebou leda že by volalo ukazatele ale to asi ne v tomto případě

Jak říká sionista prohodit ty dva řádky jinak používejte ukazatel což se mi nelíbí

Nahlásit jako SPAM
IP: 37.48.39.–
gna
~ Anonymní uživatel
1849 příspěvků
13. 7. 2017   #4
-
0
-

#3 Melamber777
Nic se neoznačuje samo sebou (WTF?) a k ničemu nepotřebuje další proměnnou a už vůbec ne ukazatele.

Nahlásit jako SPAM
IP: 213.211.51.–
13. 7. 2017   #5
-
0
-

Myslím, že v tomto případě by použití ukazatelů "znečitelnilo" program. Použití další proměnné by bylo samoúčelné.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
13. 7. 2017   #6
-
0
-

Jen pro zajimavost jak se to da udelat pomoci funkci z knihovny <algorithm> a C++11 lambdy:

#include <iostream>
#include <algorithm>
#include <iterator>

int main()
{
  int pole[100];

  // naplneni pole:
  int n = 0;
  std::generate(std::begin(pole), std::end(pole), [&n](){ return n++; });
  
  // vypis pole:
  std::copy(std::begin(pole), std::end(pole), std::ostream_iterator<int>(std::cout, " "));
  std::cout << "\n";
}

Nicmene to uz by vypadalo skoro lepe za pozuziti range based foru:

  int n = 0;
  for (int& item : pole)
  {
    item = n++;
  }

Usetris zbytecnosti jako zjistovani velikosti pole. Samozrejme to nebude fungovat na dynamicky alokovane pole. U prvni varianty by to upravit slo (pokud si nekde budes drzet velikost)

Nahlásit jako SPAM
IP: 217.196.214.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý