Zahlen vergleichen



  • Okay, so ist schöner:

    #include <iostream>
    
    int checkOccurence(int *a, unsigned int size);
    
    int main()
    {
    	const int MAX_SIZE = 5;
    
    	int a[MAX_SIZE] = {10, 10, 10, 30, 50};
    
    	int pos;
    	if ((pos = checkOccurence(a, MAX_SIZE)) >= 0)
    	{
    		std::cout << a[pos] << std::endl;
    	}
    }
    
    int checkOccurence(int *a, unsigned int size)
    {
    	for (unsigned int i = 0; i < size; ++i)
    	{
    		unsigned int count = 0;
    
    		for (unsigned int j = 0; j < size; ++j)
    		{
    			if (a[i] == a[j])
    			{
    				if (++count >= 3)
    				{
    					return i;
    				}
    			}
    		}
    	}
    
    	return -1;
    }
    


  • Ist ja immernoch mit "count". Öööööde.... Außerdem werden nicht die Positionen ausgegeben. 😉



  • Fellhuhn schrieb:

    Ist ja immernoch mit "count". Öööööde.... Außerdem werden nicht die Positionen ausgegeben. 😉

    Die Positionen waren auch nicht verlangt.

    Falls man aber tatsächlich auf die Positionen scharf ist, so stellt meine Lösung alle notwendigen Angaben bereit, um diese zu finden.

    Und wie sieht deine Variante aus? Jetzt bin ich neugierig. Was spricht gegen count ?



  • sdfsdf schrieb:

    Und wie sieht deine Variante aus? Jetzt bin ich neugierig. Was spricht gegen count ?

    Gegen meine Variante spricht Feierabend und gegen count spricht langweilig. 😉

    In etwa, schnell hingerotzt:

    for(int i = 0; i < size - 2; ++i)
      for(int ii = i + 1; ii < size - 1; ++ii)
        if (ar[i] == ar[ii])
          for(int iii = ii + 1; iii < size; ++iii)
            if (ar[i] == ar[iii])
               ; // tu was immer nötig
    


  • Fellhuhn schrieb:

    sdfsdf schrieb:

    Und wie sieht deine Variante aus? Jetzt bin ich neugierig. Was spricht gegen count ?

    Gegen meine Variante spricht Feierabend und gegen count spricht langweilig. 😉

    In etwa, schnell hingerotzt:

    for(int i = 0; i < size - 2; ++i)
      for(int ii = i + 1; ii < size - 1; ++ii)
        if (ar[i] == ar[ii])
          for(int iii = ii + 1; iii < size; ++iii)
            if (ar[i] == ar[iii])
               ; // tu was immer nötig
    

    Nicht schön, aber selten 😛 Finde meine Lösung besser. Positionen lassen sich so rausfinden:

    int pos;
    	if ((pos = checkOccurence(a, MAX_SIZE)) >= 0)
    	{
    		for (unsigned int i = pos; i < MAX_SIZE; ++i)
    		{
    			if (a[i] == a[pos])
    			{
    				std::cout << "a[" << i << "] = " << a[i] << std::endl;
    			}
    		}
    	}
    

Anmelden zum Antworten