Portál AbcLinuxu, 9. května 2025 02:52

Dotaz: C++ problémek s polem

28.3.2013 10:39 jaguar
C++ problémek s polem
Přečteno: 392×
Odpovědět | Admin

Dobrý den, jsem samozřejmě v C++ celkem začátečník a teď přišel jeden menší zásek. Popíšu vám můj problém:

Potřebuju udělat pole, které má nějakou velikost a za určitých okolností se naplňuje hodnotami:

 

...
int id=0;
int array[500];
int main(){
if(podmínka){
id++;
array[id]=5;
}
}

Takže teď má array s indexem 1 hodnotu 5. Potřeboval bych udělat, aby kdyby uživatel

cin >> i;
if(i==5){
cout << "Hodnotu 5 má pole s indexem 1";
}

Problém je v tom, že nevím jak :) Jak podle hodnoty poznat, k jakému indexu pole je přiřazena? Nevím jestli chápete můj problém, kdyžtak nejasnosti dovysvětlím. Děkuji za případnou pomoc.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

28.3.2013 11:18 MadCatX
Rozbalit Rozbalit vše Re: C++ problémek s polem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jedině projít celé pole a zjistit, který prvek má hledanou hodnotu.
Beda0 avatar 28.3.2013 11:29 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: C++ problémek s polem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli jsem správně pochopil, tak potřebuješ vyhledat v poli podle hodnoty. To je možné udělat ručně - projít všechny prvky pole a porovnávat hodnotu každého prvku s hledanou. Je třeba vyřešit, co se má stát, pokud pole obsahuje víc stejných prvků.

Druhá možnost je použít find a trochu upravit příklad z manuálu, který najde první výskyt hledaného prvku.
#include <iostream>     // std::cout
#include <algorithm>    // std::find

int main () {
  int myints[] = { 10, 20, 30 ,40, 50, 60, 70, 80, 40 };
  int * p;

  // pointer to array element:
  p = std::find (myints,myints+9,40);
  if(p != myints+9)
        std::cout << "Found at position " << p-myints << '\n';
  else
        std::cout << "Not found" << '\n';

  return 0;
}
Ukázky kódu se vkládají do tagů <pre> a <code>, aby byly lépe čitelné.
29.3.2013 16:57 jaguar
Rozbalit Rozbalit vše Re: C++ problémek s polem
Díky, tohle je super, akorát to samé potřebuju udělat i s char arrayem a s ním to nefunguje, nevím jestli by vůbec mělo. Zkoušel jsem
std::binary_search
ale opět bez výsledku, tak buď dělám něco špatně, nebo se to má dělat ještě jinak.
29.3.2013 17:19 Zadejte vaše jméno
Rozbalit Rozbalit vše Re: C++ problémek s polem
memmem() bude fungovat pro vsechno :P
29.3.2013 19:24 jaguar
Rozbalit Rozbalit vše Re: C++ problémek s polem
Tak s charama jsem to nakonec někde našel a vyřešil takto:

char findf(char arr[], int arrSize, char seek){

	for(int i=0; i < arrSize; i++){
		if(arr[i] == seek) return i;
		}
	return -1;

}

...

int x = findf(array, arraySize, char)

28.3.2013 12:29 jekub
Rozbalit Rozbalit vše Re: C++ problémek s polem
Odpovědět | | Sbalit | Link | Blokovat | Admin
c++, místo int array[] std::vector<int>. Pro vyhledání použít find (sekvenční), nebo std::map
29.3.2013 20:55 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: C++ problémek s polem
Správně, nicméně já mám taky rád C+ :-).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.