Valores de precio mínimo, máximo y promedio para todos los artículos de un tipo dado

Dada una array de strings artículo[] y una array de enteros precio[] donde precio[i] es el precio del artículo[i] cuando se compra en la i -ésima tienda. La tarea es encontrar el valor de precio más bajo, más alto y promedio para todos los artículos comprados.

Ejemplos:

Entrada: artículo[] = {“juguete”, “bolígrafo”, “cuaderno”, “bolígrafo”}, precio[] = {2, 1, 3, 2}
Salida:
Artículo Mín. Máx
. Bolígrafo promedio 1 2 1.5
juguete 2 2 portátil 2.0
3 3 3.0

Entrada: artículo[] = {“automóvil”, “automóvil”}, precio[] = {20000, 30000};
Salida:
Artículo Min Max Promedio
coche 20000 30000 25000.0

Enfoque: cree un HashMap donde el nombre del elemento será una string y el valor será un objeto que almacenará cuatro tipos de valores para cada elemento, es decir

  1. min: Para almacenar el valor mínimo para un elemento del tipo actual.
  2. max: para almacenar el valor máximo de un elemento del tipo actual.
  3. total: Total del artículo del tipo actual.
  4. sum: Suma de los precios de los artículos de tipo actual.

Ahora, para cada elemento almacenado en el Hashmap, el precio mínimo y máximo se almacena en el objeto de valor y el promedio se puede calcular como suma/total .

A continuación se muestra la implementación del enfoque anterior:

Java

// Java implementation of the approach
import java.util.*;
class GFG {
  
    // To store an item
    static class Item {
  
        // To store the minimum and the
        // maximum price for the item
        int min, max;
  
        // To store the total number of items
        // of the current type and the
        // total cost of buying them
        int total, sum;
  
        // Initializing an element
        Item(int price)
        {
            min = price;
            max = price;
            total = 1;
            this.sum = price;
        }
    }
  
    // Function to find the minimum, the maximum
    // and the average price for every item
    static void findPrices(String item[], int price[], int n)
    {
  
        // To store the distinct items
        HashMap<String, Item> map = new HashMap<>();
  
        // For every item
        for (int i = 0; i < n; i++) {
  
            // If the current item has aready been
            // purchased earlier from a different shop
            if (map.containsKey(item[i])) {
  
                // Get the item
                Item currItem = map.get(item[i]);
  
                // Update its minimum and maximum price so far
                currItem.min = Math.min(currItem.min, price[i]);
                currItem.max = Math.max(currItem.max, price[i]);
  
                // Increment the total count of the current item
                currItem.total++;
  
                // Add the current price to the sum
                currItem.sum += price[i];
            }
            else {
  
                // The item has been purchased for the first time
                Item currItem = new Item(price[i]);
                map.put(item[i], currItem);
            }
        }
  
        // Print all the items with their
        // minimum, maximum and average prices
        System.out.println("Item Min Max Average");
        for (Map.Entry<String, Item> ob : map.entrySet()) {
            String key = ob.getKey();
            Item currItem = ob.getValue();
            System.out.println(key + " " + currItem.min
                               + " " + currItem.max + " "
                               + ((float)currItem.sum / (float)currItem.total));
        }
    }
  
    // Driver code
    public static void main(String args[])
    {
        String item[] = { "toy", "pen", "notebook", "pen" };
        int n = item.length;
        int price[] = { 2, 1, 3, 2 };
  
        findPrices(item, price, n);
    }
}

C#

// C# implementation of the approach 
using System;         
using System.Collections.Generic;
  
class GFG 
{
  
    // To store an item
    public class Item
    {
  
        // To store the minimum and the
        // maximum price for the item
        public int min, max;
  
        // To store the total number of items
        // of the current type and the
        // total cost of buying them
        public int total, sum;
  
        // Initializing an element
        public Item(int price)
        {
            min = price;
            max = price;
            total = 1;
            this.sum = price;
        }
    }
  
    // Function to find the minimum, the maximum
    // and the average price for every item
    static void findPrices(String []item, 
                              int []price, int n)
    {
  
        // To store the distinct items
        Dictionary<String,
                   Item> map = new Dictionary<String,
                                              Item>();
  
        // For every item
        for (int i = 0; i < n; i++)
        {
  
            // If the current item has aready been
            // purchased earlier from a different shop
            if (map.ContainsKey(item[i]))
            {
  
                // Get the item
                Item currItem = map[item[i]];
  
                // Update its minimum and
                // maximum price so far
                currItem.min = Math.Min(currItem.min,
                                           price[i]);
                currItem.max = Math.Max(currItem.max, 
                                           price[i]);
  
                // Increment the total count of 
                // the current item
                currItem.total++;
  
                // Add the current price to the sum
                currItem.sum += price[i];
            }
            else 
            {
  
                // The item has been purchased
                // for the first time
                Item currItem = new Item(price[i]);
                map.Add(item[i], currItem);
            }
        }
  
        // Print all the items with their
        // minimum, maximum and average prices
        Console.WriteLine("Item Min Max Average");
        foreach(KeyValuePair<String, Item> ob in map)
        {
            String key = ob.Key;
            Item currItem = ob.Value;
            Console.WriteLine(key + " " + currItem.min + 
                                    " " + currItem.max + 
                                    " " + ((float)currItem.sum /
                                           (float)currItem.total));
        }
    }
  
    // Driver code
    public static void Main(String []args)
    {
        String []item = { "toy", "pen", "notebook", "pen" };
        int n = item.Length;
        int []price = { 2, 1, 3, 2 };
  
        findPrices(item, price, n);
    }
}
  
// This code is contributed by 29AjayKumar
Producción:

Item Min Max Average
pen 1 2 1.5
toy 2 2 2.0
notebook 3 3 3.0

Publicación traducida automáticamente

Artículo escrito por gp6 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *