Nejmensi kladna hodnota – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Nejmensi kladna hodnota – C / C++ – Fórum – Programujte.comNejmensi kladna hodnota – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Martin
~ Anonymní uživatel
1377 příspěvků
10. 12. 2014   #1
-
0
-

potřeboval bych poradit, je tam problém s tou velikosti.

int nejmensiKladnaHodnota (int* data, int velikost)
{
    int data[10] = {-1, 4, 5, -5, 8, 4, -2, 7, -4, 8};
    int nejmensi = 1000;
    int i;
        for ( i=0; i<=9; i++)
    {
        if(data[i]>0)
        {
        if (nejmensi>data[i]);
        }
    }
return 0;
}

Nahlásit jako SPAM
IP: 2001:67c:1220:809::93e5:9...–
Reklama
Reklama
JoDiK
~ Anonymní uživatel
981 příspěvků
10. 12. 2014   #2
-
0
-

#1 Martin
Nevím jaký problém máš s velikostí, já bych viděl spíš problém v tom, že sice zjistíš, jestli je něco větší:

if (nejmensi>data[i]);

ale ať už to je větší nebo ne, je to jedno, protože tak i tak stejně neděláš nic.

Nahlásit jako SPAM
IP: 88.103.236.–
ondrej39+1
Věrný člen
10. 12. 2014   #3
-
0
-

#1 Martin
Správně předáváš funkci ukazatel na int a velikost pole, správně ti funkce vrací int, ale zbytek funkce je úplně špatně. Na scopu funkce je nesmysl si vytvářet pole data. To pole máš mít vytvořené třeba v mainu

int pole[VELIKOST] = { jednotlive, prvky, pole };

a akorát ho své funkci předáš

nejmensiKladnaHodnota(pole, VELIKOST);

Implementace funkce pro nalezení nejmenší hodnoty v poli může vypadat například takhle:

/* nejmensi_kladna_hodnota
 * @return int: -1 - v poli není ani jedno kladné číslo */
int nejmensi_kladna_hodnota(int *pole, int velikost)
{
	int nejmensi = -1;

	/* inicializace proměnné nejmenší na první kladné číslo v poli */
	for (int i = 0; i < velikost; i++)
	{
		if (*(pole + i) > 0)
		{
			nejmensi = *(pole + i);
			break;

		}
	}

	/* samotný kód pro nalezení nejmenší hodnoty v poli */
	if (nejmensi != -1)
	{
		for (int i = 0; i < velikost; i++)
		{
			if (*(pole + i) > 0)
			{
				int docasna = *(pole + i);
				if (docasna < nejmensi)
					nejmensi = docasna;
			}
		}
	}	
	return nejmensi;
}

a main poté následovně:

int main()
{
	int pole[] = { 13, 7, -5, 10, -8, 0, 3, -7 };

	int velikost = sizeof(pole) / sizeof(int);

	std::cout << std::endl;
	std::cout << "Nejmensi hodnota: " << nejmensi_kladna_hodnota(pole, velikost) << std::endl;
	std::cout << std::endl;

	return 0;
}
Nahlásit jako SPAM
IP: 213.226.234.–
Inject all the dependencies!
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, 64 hostů

Moderátoři diskuze

 

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