Forked from pizenblues/aerolineas aereolinosas.cpp
Last active
August 29, 2015 14:08
-
-
Save josegomezr/3a5c18c1abc2399e2a9d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//valentina azocar ci 24753255 | |
#include <iostream> | |
#include <stdio.h> | |
#include <stdlib.h> | |
using namespace std; | |
template <typename T> | |
void read_input(T &var){ | |
while(! (cin>>var) ){ | |
printf(" \t \t ingrese un numero por favor! "); | |
cin.clear(); | |
cin.ignore(256, '\n'); | |
}; | |
} | |
void read_input(char* var){ | |
fgets(var, 255, stdin); | |
for(int i=0; var[i] < 255; i++){ | |
if(var[i] == '\n'){ | |
var[i] = '\0'; | |
return; | |
} | |
} | |
} | |
int main(){ | |
char opc; | |
int tamano, multiple; | |
int fila = 1, columna = 1; | |
int menu; | |
int contador = 0; | |
printf("\n \t cantidad de ciudades en las que AEROLINEAS AMISTOSAS tiene sucursal: "); | |
read_input(tamano); | |
getchar(); // para el caracter salvaje | |
char CIUDADES[tamano][255]; // 255 caracteres por posicion | |
int matriz[tamano][tamano]; | |
for(int i = 0; i<tamano; i++){ | |
printf("Ciudad N#%d: ", i+1); | |
read_input(CIUDADES[i]); | |
} | |
for(int i =0; i<tamano; i++){ | |
for(int j = i; j<tamano; j++){ | |
fila = fila + i; | |
columna = columna + j; | |
printf("\n entre %s y %s hay un vuelo ? (s/n): ", CIUDADES[i], CIUDADES[j]); | |
read_input(opc); | |
if(opc=='s'){ | |
cout<<" sale mas de un vuelo entre esas ciudad? (s/n): "; | |
read_input(opc); | |
if(opc=='s'){ | |
printf("cuantos vuelos llegan a %i?: ", fila); | |
read_input(multiple); | |
matriz[i][j]=multiple; | |
printf("cuantos vuelos salen de %i?: ", fila); | |
read_input(multiple); | |
matriz[j][i]=multiple; | |
}else if (opc == 'n'){ | |
printf("llega un vuelo a la ciudad %i desde %i (s/n): ", fila, columna); | |
read_input(opc); | |
if(opc=='s'){ | |
matriz[i][j]=0; | |
matriz[j][i]=1; | |
}else if(opc=='n'){ | |
matriz[i][j]=1; | |
matriz[j][i]=0; | |
}else{ | |
printf(" \t \t por favor responda con 's' o 'n'\n"); | |
system("cls"); | |
j--; | |
} | |
}else{ | |
printf(" \t \t por favor responda con 's' o 'n'\n"); | |
system("cls"); | |
j--; | |
} | |
}else if(opc == 'n'){ | |
matriz[i][j] = 0; | |
matriz[j][i] = 0; | |
}else{ | |
printf(" \t \t por favor responda con 's' o 'n'\n"); | |
system("cls"); | |
j--; | |
} | |
fila = 1; | |
columna = 1; | |
} | |
} | |
system("cls"); | |
cout<<endl<<endl; | |
for(int i=0; i<tamano; i++){ | |
for(int j=0; j<tamano; j++){ | |
cout<<"\t"<<matriz[i][j]; | |
} | |
cout<<endl; | |
} | |
do{ | |
int sumac = 0; | |
printf("\n \t \t Menu \n \n 1-.buscar un vuelo \n 2-.modificar un vuelo \n 3-. vuelos totales"); | |
printf("\n 4-.vuelos salientes desde una ciudad (grado externo de un vertice) \n 5-.vuelos entrantes a una ciudad (grado interno de un vertice)"); | |
printf("\n 6-. chequear si una ciudad tiene un vuelo hacia si misma (diagonal principal) \n 7-.simetria \n 8-.comparar vuelos salientes entre ciudades \n 9-.comparar vuelos entrantes entre ciudades \n 10-.salir \n \n "); | |
read_input(menu); | |
system("cls"); | |
cout<<endl<<endl; | |
for(int i=0; i<tamano; i++){ | |
for(int j=0; j<tamano; j++){ | |
cout<<"\t"<<matriz[i][j]; | |
} | |
cout<<endl; | |
} | |
switch(menu){ | |
case 1:{ | |
int google = 0, f = 0, c = 0; | |
printf(" se mostrara un mensaje si hay coincidencia \n"); | |
cout<<endl; | |
for(int i = 0; i<tamano; i++){ | |
printf("[%d] %s\n", i+1, CIUDADES[i]); | |
} | |
cout<<endl; | |
printf("\t ingrese el numero del vuelo a buscar: "); | |
read_input(google); | |
for(int i=0; i< tamano; i++){ | |
for(int j=0; j< tamano; j++){ | |
f = i + 1; | |
c = j + 1; | |
if(google == matriz[i][j]) { | |
printf("\n Encontrado: fila %i columna %i ",f,c); | |
} | |
} | |
} | |
break; | |
} | |
case 2: { | |
int f, c, nuevo; | |
cout<<endl; | |
for(int i = 0; i<tamano; i++){ | |
printf("[%d] %s\n", i+1, CIUDADES[i]); | |
} | |
cout<<endl; | |
printf("de donde sale el vuelo ? (usar numero): "); | |
read_input(f); | |
printf("ciudad destino? (usar numero de la ciudad): "); | |
read_input(c); | |
if(f > tamano || c > tamano || c <= 0){ | |
printf("alguno de los datos es incorrecto \n"); | |
break; | |
}else{ | |
f--; | |
c--; | |
printf("nuevo valor: "); | |
read_input(nuevo); | |
matriz[f][c] = nuevo; | |
printf("modificacion exitosa \n"); | |
} | |
printf("\n"); | |
for(int i=0; i<tamano; i++){ | |
for(int j=0; j<tamano; j++){ | |
cout<<" "<<matriz[i][j]; | |
} | |
printf("\n"); | |
} | |
} | |
break; | |
case 3:{ | |
int filaS =0, sumaf = 0, sumaC = 0, sumaT = 0, columnasS = 0; | |
cout<<endl; | |
for(int i = 0; i<tamano; i++){ | |
printf("[%d] %s\n", i+1, CIUDADES[i]); | |
} | |
cout<<endl; | |
printf("\t numero de la ciudad? - "); | |
read_input(filaS); | |
if(filaS > tamano || filaS <= 0 ){ | |
printf("\t \t ciudad no encontrado \n"); | |
}else{ | |
filaS -= 1; | |
columnasS = filaS; | |
for (int i = 0; i < tamano; i++) | |
sumaf += matriz[filaS][i]; | |
for (int k = 0; k < tamano; k++) | |
sumaC += matriz[k][columnasS]; | |
sumaT = sumaC + sumaf; | |
printf(" salientes: %i \n", sumaf); | |
printf(" entrantes: %i \n", sumaC); | |
cout<< "\t la cantidad de vuelos totales es: "<<sumaT<<" \n "<<endl; | |
} | |
sumaf = 0; | |
filaS = 0; | |
sumaC = 0; | |
columnasS =0; | |
} | |
break; | |
case 4:{ | |
int filaS =0, sumaf = 0; | |
cout<<endl; | |
for(int i = 0; i<tamano; i++){ | |
printf("[%d] %s\n", i+1, CIUDADES[i]); | |
} | |
cout<<endl; | |
printf("\t numero de la ciudad? - "); | |
read_input(filaS); | |
if(filaS <= tamano){ | |
filaS -= 1; | |
for (int i = 0; i < tamano; i++){ | |
sumaf += matriz[filaS][i]; | |
if(matriz[filaS][i] != 0){ | |
printf("Destino: %s\n", CIUDADES[i]); | |
} | |
} | |
cout<< "\t la cantidad de vuelos salientes es: "<<sumaf<<" \n "<<endl; | |
}else{ | |
printf("\t \t ciudad no encontrado \n"); | |
} | |
sumaf = 0; | |
filaS = 0; | |
break; | |
} | |
case 5: { | |
int columnasS = 0, sumac = 0; | |
printf("\t numero de la ciudad? - "); | |
read_input(columnasS); | |
if(columnasS > tamano || columnasS <= 0){ | |
printf("\t \t ciudad no encontrado \n"); | |
}else{ | |
columnasS -=1; | |
for (int j = 0; j < tamano; j++){ | |
sumac += matriz[j][columnasS]; | |
if(matriz[j][columnasS] != 0){ | |
printf("Procedencia: %s\n", CIUDADES[j]); | |
} | |
} | |
cout<< "\t la cantidad de vuelos entrantes es: "<<sumac<<" \n "<<endl; | |
} | |
sumac = 0; | |
columnasS = 0; | |
break; | |
} | |
case 6:{ | |
int check = 0; | |
printf("\t La Diagonal Principal es: \n"); | |
for(int i = 0; i < tamano; i++){ | |
cout<< " " <<matriz[i][i]; | |
check = check + matriz[i][i]; | |
} | |
printf(" \n "); | |
if(check != 0){ | |
printf("hay bucles ( el avion vuela desde su ciudad y regresa a ella en ese mismo vuelo! )"); | |
}else{ | |
printf("no hay bucles (todo en orden!) "); | |
} | |
printf(" \n "); | |
break; | |
} | |
case 7: | |
for (int i = 0; i < tamano; i++) { | |
for (int j = 0; j < tamano; j++) { | |
if (matriz[i][j] != matriz[j][i]) { | |
break; | |
}else{ | |
contador = contador + 1; | |
} | |
} | |
} | |
if(contador == tamano * tamano){ | |
printf(" \t son simetricas \n"); | |
}else{ | |
printf(" \t no son simetricas \n"); | |
} | |
break; | |
case 8:{ | |
int primeraF, segundaF; | |
cout<<endl; | |
for(int i = 0; i<tamano; i++){ | |
printf("[%d] %s\n", i+1, CIUDADES[i]); | |
} | |
cout<<endl; | |
printf(" \t nuemro de la primera ciudad a comprar: "); | |
read_input(primeraF); | |
printf(" \t segunda ciuad: "); | |
read_input(segundaF); | |
if( primeraF <= tamano && segundaF <= tamano){ | |
primeraF -=1; | |
segundaF -=1; | |
for( int i = 0; i< tamano; i++){ | |
if( matriz[primeraF][i] == matriz[segundaF][i] ){ | |
printf("\t iguales \n"); | |
}else{ | |
printf("\t no iguales \n"); | |
break; | |
} | |
} | |
}else{ | |
printf(" \t no encontrado \n"); | |
} | |
primeraF = 0; | |
segundaF = 0; | |
break; | |
} | |
case 9:{ | |
int primeraC, segundaC; | |
cout<<endl; | |
for(int i = 0; i<tamano; i++){ | |
printf("[%d] %s\n", i+1, CIUDADES[i]); | |
} | |
cout<<endl; | |
printf(" \t primera ciudad \n"); | |
read_input(primeraC); | |
printf(" \t segunda ciudad \n"); | |
read_input(segundaC); | |
if( primeraC <= tamano && segundaC <= tamano){ | |
primeraC -=1; | |
segundaC -=1; | |
for( int j = 0; j< tamano; j++){ | |
if( matriz[j][primeraC] == matriz[j][segundaC] ){ | |
printf("\t iguales \n"); | |
}else{ | |
printf("\t no iguales \n"); | |
break; | |
} | |
} | |
}else{ | |
printf(" \t ciudad no encontrad \n"); | |
} | |
primeraC = 0; | |
segundaC = 0; | |
break; | |
} | |
case 10: | |
return 0; | |
break; | |
default: | |
printf("\t escoja una opcion valida \n"); | |
} | |
}while(true); | |
//getch(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment