We address the problem of managing cloud applications, consisting of a set of virtual machines (VMs), characterized by bursty and dynamic workloads, in such a way to provide guarantees on their Quality-of-Services (QoS) and, at the same time, to minimize the energy consumption of the physical infrastructure running them. We propose a fuzzy controller, Fuzzy-Q&E, that is able to allocate to the VMs of each cloud application the minimum amount of physical capacity needed to meet its QoS requirements. In this way, the number of physical resources that must be switched-on at any given time is reduced with respect to the case in which physical machines are statically provisioned and, consequently, less energy is required to run a given cloud workload. We implement a prototype of our controller on a Xen-based testbed, and we perform a set of experiments using an E-Commerce benchmark in which we compare Fuzzy-Q&E against DynaQoS, a state-of-the-art fuzzy controller for virtualized resources. Experimental results show that Fuzzy-Q&E out performs DynaQoS both in terms of the ability of meeting the QoS level of the application, and of the amount of physical capacity allocated to each VM.