Galera, resolvi hoje um exercício de estruturas! Essa categoria ainda não foi muito explorada por mim, mas tem vários exercícios interessantes! O exercício "Ida à Feira" é um deles! Bora conferir as soluções em C e C++!
Plataforma: URI (BEECROWD)
Problema: 1281
Enunciado:
Dona Parcinova costuma ir regularmente à feira para comprar frutas e legumes. Ela pediu então à sua filha, Mangojata, que a ajudasse com as contas e que fizesse um programa que calculasse o valor que precisa levar para poder comprar tudo que está em sua lista de compras, considerando a quantidade de cada tipo de fruta ou legume e os preços destes itens.
Linguagens: C e C++
Solução:
Utilizei array em C e vector em C++, aplicando a ambos a mesma lógica.
Basta verificar se a comida informada está na estrutura de comidas e assim pegar a quantidade informada e multiplicar pelo valor daquela comida. Isso deve ser armazenado em um acumulador que conterá a resposta. Essa resposta apenas precisa estar formatada com duas casas decimais, já que será exibida na forma R$ aa.bb.
Código em C:
#include <stdio.h> #include <string.h> int main() { int n, m, qtd, p, i; double total, valores[900]; char str[51], comida[900][51]; scanf("%d", &n); while (n--) { total = 0; scanf("%d", &m); for (i = 0; i < m; i++) { scanf("%s %lf", comida[i], &valores[i]); } scanf("%d", &p); while (p--) { scanf("%s %d", str, &qtd); for (i = 0; i < m; i++) { if (!strcmp(str, comida[i])) { total += qtd * valores[i]; } } } printf("R$ %.2lf\n", total); memset(comida, 0, sizeof(comida)); memset(valores, 0, sizeof(valores)); } return 0; }
#include <iomanip> #include <iostream> #include <string> #include <vector> using namespace std; int main() { int n, m, qtd, p; double v, total; string str; vector<double> valores; vector<string> comida; cin >> n; while (n--) { total = 0; cin >> m; for (int i = 0; i < m; i++) { cin >> str >> v; comida.push_back(str); valores.push_back(v); } cin >> p; while (p--) { cin >> str >> qtd; for (int i = 0; i < m; i++) { if (!str.compare(comida.at(i))) { total += qtd * valores.at(i); } } } cout << "R$ " << fixed << setprecision(2) << total << endl; comida.clear(); valores.clear(); } return 0; }