 Find all functions $f : Z^+ \to Z^+$ such that $n^3 - n^2 \le  f(n) \cdot (f(f(n)))^2 \le n^3 + n^2$ for every $n$ in positive integers
1. **Injectivity of \( f \)**:
   - Consider the intervals \([n^3 - n^2, n^3 + n^2]\) for \( n \in \mathbb{N} \). These intervals are disjoint because:
     \[
     (n+1)^3 - (n+1)^2 > n^3 + n^2
     \]
     Simplifying the left-hand side:
     \[
     (n+1)^3 - (n+1)^2 = n^3 + 3n^2 + 3n + 1 - (n^2 + 2n + 1) = n^3 + 2n^2 + n
     \]
     Thus:
     \[
     n^3 + 2n^2 + n > n^3 + n^2
     \]
     This confirms that the intervals \([n^3 - n^2, n^3 + n^2]\) are disjoint, implying that \( f \) is injective.

2. **Involution Property of \( f \)**:
   - We claim that \( f \) is an involution, i.e., \( f(f(n)) = n \) for all \( n \).
   - Suppose, for the sake of contradiction, that \( n \) is the smallest positive integer such that \( f(f(n)) \neq n \).
   - If \( f(f(n)) = m < n \), then by injectivity, \( f(m) = n \). However, since \( m < n \), this contradicts the minimality of \( n \).
   - If \( f(n) = m < n \), then \( f(f(f(n))) = f(m) = n \), implying \( f(f(n)) = n \), another contradiction.
   - Therefore, \( f(f(n)) \geq (n+1)^3 \) leads to a contradiction because \( f(f(n)) \) must be within the interval \([n^3 - n^2, n^3 + n^2]\).

3. **Possible Values of \( f(n) \)**:
   - From the given inequality:
     \[
     n^3 - n^2 \leq f(n) \cdot (f(f(n)))^2 \leq n^3 + n^2
     \]
     Since \( f \) is an involution, \( f(f(n)) = n \). Thus:
     \[
     n^3 - n^2 \leq f(n) \cdot n^2 \leq n^3 + n^2
     \]
     Dividing by \( n^2 \):
     \[
     n - 1 \leq f(n) \leq n + 1
     \]
     Therefore, \( f(n) \in \{n-1, n, n+1\} \).

4. **Verification of Involutions**:
   - We need to check that all involutions satisfying \( f(n) \in \{n-1, n, n+1\} \) work.
   - If \( f(n) = n \), then \( f(f(n)) = n \), and the inequality holds trivially.
   - If \( f(n) = n-1 \), then \( f(n-1) = n \), and:
     \[
     (n-1) \cdot n^2 = n^3 - n^2
     \]
     which satisfies the inequality.
   - If \( f(n) = n+1 \), then \( f(n+1) = n \), and:
     \[
     (n+1) \cdot n^2 = n^3 + n^2
     \]
     which also satisfies the inequality.

Thus, the function \( f \) must be an involution and can take values \( n-1, n, \) or \( n+1 \).

The final answer is \( \boxed{ f(n) \in \{n-1, n, n+1\} } \).