Taller Semana 14

mail@pastecode.io avatar
unknown
plain_text
2 years ago
7.1 kB
12
Indexable
Never
/*
#include <iostream>
#include <conio.h>
using namespace std;
using namespace System;

struct Llamada {
	int oficina;
	int minutos;
	int tipo_llamada;
};

void GenerarLlamadas(Llamada* arrLlamadas, int N) {
	Random r;
	//recorre el arreglo llamadas
	for (int i = 0; i < N; i++) {
		arrLlamadas[i].oficina = r.Next(1, 4);
		arrLlamadas[i].minutos = r.Next(1, 31);
		arrLlamadas[i].tipo_llamada = r.Next(1, 4);
	}
}

void Imprimir(Llamada* arrLlamadas, int N) {
	cout << "Oficina\t" << "| Cant. Minutos\t" << "| Tipo de llamada|\n";
	cout << "-----------------------------------------|\n";
	for (int i = 0; i < N; i++) {
		cout <<" " << arrLlamadas[i].oficina << "\t| " << arrLlamadas[i].minutos << "\t\t| " << arrLlamadas[i].tipo_llamada << endl;
		cout << "-----------------------------------------|\n";
	}
}

void OficinasconMayorMinutos(Llamada* arrLlamadas, int N) {
	//sumatorias de llamadas     1, 2, 3
	//1 Logistica
	//2 Recursos Humanos
	//3 Ventas
	int arrMinutosxOficina[3] = { 0,0,0 };
	int arrMinutosOficinaVentasxTipoLlamada[3] = { 0,0,0 };
	float contadorxOficinaVentas[3] = { 0,0,0 };
	cout << "*************" << endl;
	for (int i = 0; i < N; i++) {
		switch (arrLlamadas[i].oficina) {
		case 1:
			arrMinutosxOficina[0] = arrMinutosxOficina[0] + arrLlamadas[i].minutos;
			break;
		case 2:
			arrMinutosxOficina[1] += arrLlamadas[i].minutos;
			break;
		case 3:
			arrMinutosxOficina[2] += arrLlamadas[i].minutos;
			//Calcular el nro de llamadas por tipo de llamadas en la Oficina Ventas
			switch (arrLlamadas[i].tipo_llamada) {
			case 1:
				arrMinutosOficinaVentasxTipoLlamada[0] += arrLlamadas[i].minutos;
				contadorxOficinaVentas[0]++;
				break;
			case 2:
				arrMinutosOficinaVentasxTipoLlamada[1] += arrLlamadas[i].minutos;
				contadorxOficinaVentas[1]++;
				break;
			case 3:
				arrMinutosOficinaVentasxTipoLlamada[2] += arrLlamadas[i].minutos;
				contadorxOficinaVentas[2]++;
				break;
			}
			break;
		}
	}
	cout << "La oficina Logistica tiene: " << arrMinutosxOficina[0] << " minutos en total" << endl;
	cout << "La oficina Recursos Humanos tiene: " << arrMinutosxOficina[1] << " minutos en total" << endl;
	cout << "La oficina Ventas tiene: " << arrMinutosxOficina[2] << " minutos en total" << endl;


	int mayor_minutos;
	//recorrer arrMinutosxOficina para calcular el maximo de minutos
	for (int i = 0; i < 3; i++) {
		if (i == 0) {
			mayor_minutos = arrMinutosxOficina[0]; // suponiendo que oficina 1 tiene mayor minutos
		}
		else {
			if (arrMinutosxOficina[i] > mayor_minutos) {
				mayor_minutos = arrMinutosxOficina[i]; // guardamos el valor de minutos de la oficina con mayor minutos
			}
		}
	}

	cout << "Las oficinas con " << mayor_minutos << " minutos son:" << endl;
	//Se los minutos de cada oficina con el maximo de minutos (mayor_minutos)
	//Si es igual a mayor_minutos se imprime el nombre de la oficina
	for (int i = 0; i < 3; i++) {
		if (arrMinutosxOficina[i] == mayor_minutos) {
			switch (i) {
			case 0:
				cout << "Logistica" << endl;
				break;
			case 1:
				cout << "Recursos Humanos" << endl;
				break;
			case 2:
				cout << "Ventas" << endl;
				break;
			}
		}
	}
	cout << endl;
	cout << "La Oficina Ventas tiene: " << endl;
	cout << "En Local un promedio de " << arrMinutosOficinaVentasxTipoLlamada[0] / contadorxOficinaVentas[0] << " minutos\n";
	cout << "En Celular un promedio de " << arrMinutosOficinaVentasxTipoLlamada[1] / contadorxOficinaVentas[1] << " minutos\n";
	cout << "En Internacional un promedio de " << arrMinutosOficinaVentasxTipoLlamada[2] / contadorxOficinaVentas[2] << " minutos\n";


}

void MontoTotalxTipoLlamada(Llamada* arrLlamadas, int N) {
	float montototalxtipo_llamada[3] = { 0,0,0 };
	//Tarifas
	//1->Local -> 0,30
	//2->Celular -> 0.80
	//3->Internacional ->1.50
	cout << "**************" << endl;
	for (int i = 0; i < N; i++) {
		switch (arrLlamadas[i].tipo_llamada) {
		case 1:
			montototalxtipo_llamada[0] = montototalxtipo_llamada[0] + (0.30 * arrLlamadas[i].minutos);
			break;
		case 2:
			montototalxtipo_llamada[1] +=  (0.80 * arrLlamadas[i].minutos);
			break;
		case 3:
			//montototalxtipo_llamada[0] = montototalxtipo_llamada[0] + (1.50 * arrLlamadas[i].minutos);
			montototalxtipo_llamada[2] += (1.50 * arrLlamadas[i].minutos);
			break;
		}
	}
	cout << "Tipo de llamada local tiene un total de: " << montototalxtipo_llamada[0]<< " soles" << endl;
	cout << "Tipo de llamada Celular tiene un total de: " << montototalxtipo_llamada[1] <<" soles" << endl;
	cout << "Tipo de llamada Internacional tiene un total de: " << montototalxtipo_llamada[2] <<" soles" << endl;
}

int main() {
	int N = 50;
	Llamada* arrLlamadas = new Llamada[N];
	GenerarLlamadas(arrLlamadas, N);
	Imprimir(arrLlamadas, N);
	OficinasconMayorMinutos(arrLlamadas, N);
	MontoTotalxTipoLlamada(arrLlamadas, N);

	getch();
	return 0;
}
*/

/*
#include <iostream>
#include <conio.h>
using namespace std;
using namespace System;

void GenerarTerreno(int** terreno, int f, int c) {
	Random r;
	//recorrer filas, luego por cada fila se recorren las columnas
	for (int j = 0; j < f; j++) {
		for (int i = 0; i < c; i++) {
			terreno[j][i] = r.Next(1,4);//1 2 3 
		}
	}
}

void ImprimirTerreno(int** terreno, int f, int c) {
	for (int j = 0; j < f; j++) {
		for (int i = 0; i < c; i++) {
			Console::SetCursorPosition(i, j);
			Console::BackgroundColor = ConsoleColor::White;
			Console::ForegroundColor= ConsoleColor::Black;
			cout << terreno[j][i];
		}
		cout << endl;
	}
}

void HallarGuaridaTopos(int** terreno, int f, int c) {
	int cc = 0;
	for (int j = 1; j < f-1; j++) {
		for (int i = 1; i < c-1; i++) {
			if (terreno[j - 1][i] == 3
				&& terreno[j][i - 1] == 2
				&& terreno[j][i + 1] == 2
				&& terreno[j + 1][i] == 1
				) {
				//arriba
				Console::SetCursorPosition(i, j-1);
				Console::BackgroundColor = ConsoleColor::Green;
				cout << terreno[j - 1][i];
				//izquierda
				Console::SetCursorPosition(i-1, j);
				Console::BackgroundColor = ConsoleColor::Green;
				cout << terreno[j][i-1];
				//derecha
				Console::SetCursorPosition(i+1, j);
				Console::BackgroundColor = ConsoleColor::Green;
				cout << terreno[j][i+1];
				//abajo
				Console::SetCursorPosition(i, j+1);
				Console::BackgroundColor = ConsoleColor::Green;
				cout << terreno[j + 1][i];
				
				Console::SetCursorPosition(i, j);
				Console::BackgroundColor = ConsoleColor::Yellow;
				terreno[j][i] = 0;
				cout<<0;
				Console::SetCursorPosition(0, 14+cc);
				cout << "Hay un topo en fila = " << j + 1 << " y en columna = " << i + 1 << endl;
				cc++;
			}
		}
	}
}

int main() {
	//10 filas
	//15 columnas
	int f = 10, c = 15;
	int** terreno = new int* [f];
	for (int i = 0; i < f; i++) {
		terreno[i] = new int[c];
	}
	GenerarTerreno(terreno, f, c);
	ImprimirTerreno(terreno, f, c);
	HallarGuaridaTopos(terreno, f, c);


	getch();
	return 0;
}
*/