|
Mostrar Temas
|
Páginas: [1] 2
|
1
|
Programación / Programación C/C++ / error en cola prioritaria c++
|
en: 18 Febrero 2023, 20:18 pm
|
muestra la primera lista_t con solo en primer nodo, luego la segunda igual y la tercera tambien igual y ahi el programa no continua y se cierra solo, no encuentro donde esta el problema void SistemaInscripcion::insertarPrioridad_2(Alumno* alumno){ Alumno *actual = cabeza_a, *anterior = nullptr; while(actual && compararPorNivelPromedio(alumno, actual)){ anterior = actual; actual = actual->siguiente; } alumno->siguiente = actual; if(anterior) anterior->siguiente = alumno; else cabeza_a = alumno; } void SistemaInscripcion::insertarPrioridad_3(Alumno* alumno){ Alumno *actual = cabeza_a, *anterior = nullptr; while(actual && compararPorCreditosPromedio(alumno, actual)){ anterior = actual; actual = actual->siguiente; } alumno->siguiente = actual; if(anterior) anterior->siguiente = alumno; else cabeza_a = alumno; } void SistemaInscripcion::eliminarLista(){ while(cabeza_a){ Alumno* eliminar = cabeza_a; cabeza_a = cabeza_a->siguiente; delete eliminar; } } void SistemaInscripcion::asignarCupos(SistemaInscripcion* lista_a){ for(Materia* m = cabeza_m; m != nullptr; m = m->siguiente){ SistemaInscripcion lista_t; for(Alumno* a = lista_a->cabeza_a; a != nullptr; a = a->siguiente){ for(auto it : a->materias){ if(it == m->codigo_materia){ if(m->prioridad == 1){ lista_t.insertarPrioridad_1(a); } if(m->prioridad == 2){ lista_t.insertarPrioridad_2(a); } if(m->prioridad == 3){ lista_t.insertarPrioridad_3(a); } } } } lista_t.imprimirListaAlumnos(); lista_t.eliminarLista(); } }
|
|
|
2
|
Programación / Programación C/C++ / Como reemplazar una cadena c++
|
en: 8 Febrero 2023, 23:32 pm
|
Quiero hacer esto struct Alumno{ std::string nombre; std::string cedula; float indice; int nivel; int creditos; std::vector<std::vector<std::string>> materias; }; // Aqui guardo los datos en el vector while(stream){ materia = {_materia, ""}; nodo->alumno.materias.push_back(materia); getline(stream, _materia, ','); } for(auto it : puntero->alumno.materias){ if(it[0] == _materia && i < _cupos){ it[1] = "INSCRITO"; std::cout << "INSCRITO" << std::endl; }else if(it[0] == _materia && i >= _cupos){ it[1] = "SIN CUPO"; } }
pero ya intente de varias fomas y no reemplaza la cadena, no se si es por el it
|
|
|
3
|
Programación / Programación C/C++ / quick sort descendente
|
en: 27 Enero 2023, 02:06 am
|
tengo un error en el quick sort descendente pero no lo encuentro void swap(int &a,int &b){ int aux = a; a = b; b = aux; } int particion(std::vector<int>& array, int inicio, int final){ int piv = array[inicio]; int i = inicio + 1; for(int j = i; j <= final; j++){ if(array[j] > piv){ swap(array[i], array[j]); i++; } } swap(array[inicio], array[i - 1]); return i - 1; } void quickSort(std::vector<int>& array, int inicio, int final){ if(inicio < final){ int piv = particion(array, inicio, final); quickSort(array, inicio, piv - 1); quickSort(array, piv + 1, final); } }
esto es ejemplo d lo que aparece en pantalla arreglo desordenado 10 3 4 9 7 1 5 8 2 6 ordenado 1066696018 10 9 8 7 6 5 4 3 2
|
|
|
5
|
Programación / Programación C/C++ / Modificar busqueda binaria
|
en: 12 Abril 2022, 23:51 pm
|
modifique la búsqueda binaria de manera que la función devuelva el índice del primer elemento mayor al que se está buscando y -1 en caso de que no exista ningún elemento mayor si elijo cualquier otro numero q no sea el 144 funciona el programa, no se q estoy haciendo mal o hay una mejor forma de hacerlo #include <iostream> int busquedaBinaria(int clave, int array[], int size); int main(){ int numero; int size = 15; int array[size] = {0, 1, 1, 2, 3, 5, 8, 13, 13, 21, 34, 55, 89, 144, 144}; std::cout << "Buscar numero: "; std::cin >> numero; if(busquedaBinaria(numero, array, size) > 0) std::cout << "Array[" << busquedaBinaria(numero, array, size) << "] = " << array[busquedaBinaria(numero, array, size)] << std::endl; else std::cout << "No hay elemento mayor a " << numero << std::endl; return 0; } int busquedaBinaria(int clave, int array[], int size){ int centro; int bajo = 0; int alto = size - 1; while(bajo <= alto){ centro = (bajo + alto) / 2; if(clave == array[centro]){ while(centro < (size - 1)){ if(clave < array[centro]) return centro; centro++; } }else if(clave < array[centro]) alto = centro - 1; else bajo = centro + 1; } return -1; }
|
|
|
6
|
Programación / Programación C/C++ / Ordenar lista doblemente enlazada con insertion sort
|
en: 26 Marzo 2022, 18:53 pm
|
Cuando esta ordenando el programa se queda pegado sin hacer nada, me podrian decir q estoy haciendo mal al ordenar void Curso::InsertionSort(){ // Nodo puntero sera igual al siguinte de primer Curso* puntero = primer->ptrSig; // Nodo siguiente sera igual al siguiente de puntero Curso* siguiente = puntero->ptrSig; Curso* auxiliar; // Mistras puntero sea distinto de nullptr ordena la lista while(puntero != nullptr){ while(puntero->ptrAnt->t_prioridad > puntero->t_prioridad && puntero->ptrAnt != nullptr){ if(puntero->ptrAnt == primer){ // El siguiente de primer sera el siguiente de puntero primer->ptrSig = puntero->ptrSig; // El anterior del siguinte de puntero sera primer puntero->ptrSig->ptrAnt = primer; // El siguiente de puntero sera primer puntero->ptrSig = primer; // El anterior de primer sera puntero primer->ptrAnt = puntero; // primer sera igual a puntero primer = puntero; }else if(puntero == ultimo){ // ultimo sera igual al anterior de puntero ultimo = puntero->ptrAnt; // El anterior de puntero sera el anterior del ultimo puntero->ptrAnt = ultimo->ptrAnt; // El siguiente del anterior del ultimo sera puntero ultimo->ptrAnt->ptrSig = puntero; // El siguiente de puntero sera el ultimo puntero->ptrSig = ultimo; // El anterior del ultimo sera puntero ultimo->ptrAnt = puntero; }else{ auxiliar = puntero->ptrAnt; auxiliar->ptrSig = puntero->ptrSig; puntero->ptrSig->ptrAnt = auxiliar; auxiliar->ptrAnt->ptrSig = puntero; puntero->ptrAnt = puntero->ptrAnt; puntero->ptrSig = auxiliar; auxiliar->ptrSig = puntero; } } puntero = siguiente; siguiente = siguiente->ptrSig; } }
|
|
|
7
|
Programación / Programación C/C++ / Lectura de fichero de texto en c++ el programa no ejecuta
|
en: 16 Marzo 2022, 04:48 am
|
lo que quiero hacer es leer estas 2 variables de un fichero de texto Proceso1 6 Proceso2 7 Proceso3 2 Proceso4 10 pero el programa no se ejecuta, y no se que estoy haciendo mal, la cola si funciona ya la probé sin datos del fichero std::ifstream archivoProcesos("Procesos.txt"); NodoProceso* Cola; std::string linea; std::string nombreProceso; int tiempoCPU; for(std::string proceso; std::getline(archivoProcesos, linea); ){ std::istringstream datosProceso(linea); for(int columna = 0; std::getline(datosProceso, proceso, ' '); columna++){ switch(columna){ case 0: nombreProceso = proceso; break; case 1: tiempoCPU = std::stoi(proceso); break; } } Cola->encolar(nombreProceso, tiempoCPU); }
|
|
|
8
|
Programación / Java / AYUDA URGENTE
|
en: 30 Abril 2021, 00:39 am
|
Quiero reproducir audios pequeños pero el codigo me da este error java.io.IOException: Stream closed Exception in thread "main" java.lang.NullPointerException ¿que estoy haciendo mal? try{ clip.open(ais); } return clip; }
|
|
|
9
|
Programación / Programación C/C++ / Colas de supermercado
|
en: 13 Marzo 2020, 23:45 pm
|
Hola tengo que hacer un proyecto de simulación gráfica de colas de supermercado en lenguaje c, y no encuentro ninguna información de esto para guiarme, donde puedo encontrar información de esto? "NO ESTOY PIDIENDO CÓDIGO" ya hice las colas y las voy mostrando en pantalla de esta forma
system("cls");
caja 1: *****
caja 2: ****
Imprimo las colas de cada caja completa y voy borrando la pantalla para que se vea cuando sale y entra un cliente. Lo que quiero saber es como simular esto de forma gráfica, que librería debo usar, porque el proyecto me pide que los clientes entran en el supermercado y se muevan por los pasillos y luego a las cajas, y debo usar hilos para esto? "SOLO PIDO ORIENTACIÓN NO QUE ME HAGAN EL PROYECTO"
|
|
|
10
|
Programación / Programación C/C++ / Ayuda con memoria dinamica
|
en: 10 Febrero 2020, 05:44 am
|
Que error tengo en la linea 128? mercado->p = (struct Puestos) malloc(sizeof(struct Puestos) * tam); y si hago estas dos funciones void espacio_memoria(Mercados *mercado); para crear espacio en memoria de todo void free_memoria(Mercados *mercado); y para liberarla también me funciona? /* Se necesita la información de los mercados municipales de ciudad Guayana, indicando el nombre de cada mercado, dirección, TLF y la información del coordinador del mercado (c.i, nombre, apellido y teléfono). Cada mercado tiene un máximo de 50 puestos, a cada puesto se le específica un nro de local y tamaño (largo y ancho), datos del propietario (TLF, c.i, nombre y apellido) y cada local almacena adicionalmente los ingresos por cada mes del año. *Realizar una función para solicitar la información y una para mostrarla, usar dichas funciones para un total de 20 mercados municipales *Crear las cadenas dinámicamente. *Los puestos de mercado crearlos dinámicamente. *Los mercados crearlos dinámicamente. */ #include<stdio.h> #include<stdlib.h> typedef struct Mercados_Municipales{ char* nombre; char* direccion; char* telefono; struct Datos_Coordinador *info_c; struct Puestos *p; }Mercados; struct Datos_Coordinador{ char* nombrec; char* apellidoc; char* cedulac; char* telefonoc; }; struct Puestos{ int numero; struct Tamano *t; struct Datos_Propietario *info_p; int* mensual; }; struct Tamano{ float largo; float ancho; }; struct Datos_Propietario{ char* nombrep; char* apellidop; char* cedulap; char* telefonop; }; void Presentacion(); Mercados *Leer_Mercado(); int main(){ Mercados *mercados[20]; char desicion; int cantidad; Presentacion(); for(cantidad = 0; cantidad < 20; cantidad ++){ printf("\tMercado Municipal #%d\n\n", cantidad + 1); mercados[cantidad] = Leer_Mercados(); do{ printf("Pasamos a otro? [S/N] ", cantidad ); desicion = getchar(); // Leemos un caracter while(getchar() == EOF ); // Necesario para se coma el \n }while(desicion != 'S' && desicion != 's' && desicion != 'N' && desicion != 'n'); if(desicion == 'N' || desicion == 'n') break; // Si elige N, se sale } return 0; } void Presentacio(){ printf("\t\t*********************************\n"); printf("\t\t* Giudad Guayana *\n"); printf("\t\t* Mercados Municipales *\n"); printf("\t\t*********************************\n\n"); } Mercados *Leer_Mercado(){ Mercados *mercado = (Mercados *) malloc(sizeof(Mercados )); mercado ->nombre = (char *) malloc(sizeof(char) * 20); mercado ->direccion = (char *) malloc(sizeof(char) * 50); mercado ->telefono = (char * ) malloc(sizeof(char) * 15); gets(mercado ->direccion ); printf("\nInformacion del Coordinador\n\n"); mercado ->info_c = (struct Datos_Coordinador *) malloc(sizeof(struct Datos_Coordinador )); mercado ->info_c ->nombrec = (char *) malloc(sizeof(char) * 20); mercado ->info_c ->apellidoc = (char *) malloc(sizeof(char) * 20); mercado ->info_c ->cedulac = (char *) malloc(sizeof(char) * 15); mercado ->info_c ->telefonoc = (char *) malloc(sizeof(char) * 15); gets(mercado ->info_c ->nombrec ); gets(mercado ->info_c ->apellidoc ); gets(mercado ->info_c ->cedulac ); gets(mercado ->info_c ->telefonoc ); printf("\nNumero de Locales "); int i , tam ; scanf("%d", &tam ); mercado ->p = (struct Puestos ) malloc(sizeof(struct Puestos ) * tam ); for(i = 0; i < tam; i++){ mercado->p[i]->numero = i; mercado ->p [i ]->t = (struct Tamano ) malloc(sizeof(struct Tamano )); mercado ->p [i ]->info_p = (struct Datos_Propietario ) malloc(sizeof(struct Datos_Propietario )); mercado ->p [i ]->info_p ->nombrep = (char *) malloc(sizeof(char) * 20); mercado ->p [i ]->info_p ->apellidop = (char *) malloc(sizeof(char) * 20); mercado ->p [i ]->info_p ->cedulap = (char *) malloc(sizeof(char) * 15); mercado ->p [i ]->info_p ->telefonop = (char *) malloc(sizeof(char)* 15); scanf("&d %d", &mercado ->p ->t ->largo , &mercado ->p ->t ->ancho ); printf("\tInformacion del Propietario\n\n"); gets(mercado ->p ->info_p ->nombrep ); gets(mercado ->p ->info_p ->apellidop ); gets(mercado ->p ->info_p ->cedulap ); gets(mercado ->p ->info_p ->telefonop ); printf("\n\tIngresos Mensuales: "); int j ; mercado ->p ->mensual = (int *) malloc(sizeof(int) * 12); for(j = 0; j < 12; j++){ scanf("%d", &mercado ->p ->mensual [j ]); } } return mercado; }
|
|
|
|
|
|
|