Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Symfonia C++] Problem z zadaniem dot. wielokrotnosci


Rekomendowane odpowiedzi

Opublikowano

Mam problem z zadaniem, treść brzmi:

Napisz program w którym bedzie funkcja void f(); . Funkcja main ma wywoływać tę funkcję 100 razy. Funkcja f ma wiedzieć ile razy została wywołana i - przy co dwunastym wywołaniu - wypisywać na ekranie np. nowy tuzin.

 

Zatrzymuje się na ifie.

 

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void f()
{
   static int n = 0;
   static int wywolania = 1;
   cout << "Zostalam wywolana: " << wywolania << " razy" << endl;
   wywolania++;
   if(wywolania == 13 || wywolania == 12*n)
    cout << "Tuzin!" << endl;
}

int main()
{
   for(int i = 0; i < 100; i++)
   {
    f();
   }
}

Opublikowano
#include <iostream>
using namespace std;
void f()
{
static int n = 0;
++n;
cout << "Zostalam wywolana: " << n << " razy\n";
if(!n%12)
 cout << "Tuzin!\n";
}
int main()
{
for(int i = 0; i < 100; i++)
 f();
}

Opublikowano

Drogi soplu : > twoj kod, nadal nie działa, ani razu nie pojawiło się słowo tuzin w programie ;)

 

EDIT //

 

if( n == 12 || n ==24  || n == 48 || n == 60 || n == 72 || n == 84 || n == 96)
 cout << "Tuzin!" << endl;

 

Wiem, że taka opcja jest możliwa, ale niestety na pewno jest inne rozwiązanie tegoże problemu. :X

Opublikowano

negacja logiczna ma większy priorytet niż suma modulo, więc kod powinien wyglądać w taki sposób:

if( !(n%12) )

 

co jest równoważne

if( n%12 == 0 )

Opublikowano

Bo sopel nie zna kolejności operatorów

 

dodaj nawiasy w if'ie

żeby działało powinno wyglądać to tak:

if ( ! (12%n) )

 

 

@EDIT

a żeby było czytelne, powinno wyglądać zupełnie inaczej ( jak @UP )

Ta sygnatura jest pusta.

Opublikowano

lekko się spóźniłem z poprawą ;d, uświadomiłem sobie to godzinę później gdy sam popełniłem taką gafę.

 

Bo sopel nie zna kolejności operatorów

Sopel zna priorytety operatorów, ale czasami i tak coś spierdoli.

 

a żeby było czytelne, powinno wyglądać zupełnie inaczej ( jak @UP )

fakt, za bardzo się przyzwyczaiłem do udziwnień.

 

tak btw.

zapoznaj się z różnicami pomiędzy std::endl i '\n', dobrze jest je znać.

http://www.cplusplus.com/reference/ios/endl/

http://stackoverflow.com/questions/213907/c-stdendl-vs-n

Opublikowano

Ok, dzieki za rade :) Z tego co zrozumiałem, endl "wypłukuje" wychodzący buffor, a '\n' tego nie robi i jesli chcesz zeby wszystko spłukiwało to używaj endl(?)

Opublikowano

Ok, dzieki za rade :) Z tego co zrozumiałem, endl "wypłukuje" wychodzący buffor, a '\n' tego nie robi i jesli chcesz zeby wszystko spłukiwało to używaj endl(?)

 

moja rada, wiem wiem że nic nie umiem...

ale powinieneś bardziej, przykładać się, w tej książce masz ćwiczenia, na poziomie wiedzy zdobytej w danych rozdziałach...

Opublikowano

każda konstruktywna krytyka jeśli można to tak nazwać jest dobra, nawet od osoby ktora nic nie umie ;) a ze powinienem sie bardziej przykladac, to JUŻ wiem : >

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...