Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - SrMcLister

#11
Programación C/C++ / Re: Duda con punteros
7 Junio 2018, 18:28 PM
Cita de: MAFUS en  7 Junio 2018, 16:44 PM
No domino C++ así que no puedo mostrarte cómo se hace con su sintaxis, pero si con C, por si te sirve de ayuda.
Te entiendo, muchas gracias pero la práctica es en C++.
Estoy buscando la solución. La pondré cuando la tenga.
Un Saludo.
#12
Buenas!
Estoy buscando un plugin que permita a un usuario registrarse y escoger el rol que prefiera(editor, colaborador, subscriptor, etc...) y luego se le permita editar su perfil y modificarlo cuando desee.
¿Alguien conoce alguno?
Un Saludo
#13
Programación C/C++ / Re: Duda con punteros
7 Junio 2018, 14:17 PM
Cita de: MAFUS en  7 Junio 2018, 14:06 PM
Entiendo que más que una lista es una pila, cada vez que insertas algo lo haces en la cabeza y lo que era la lista original pasa a la cola.

Es una lista, lo que pasa es que para resumir mi caso he puesto el insertar en cabeza de la lista, tengo el caso de insertar al final de la lista e insertar en medio, pero si es una lista, la pila no la he implementado...
Lo único es que en vez de estar implementada secuencialmente, está enlazada mediante punteros.
Un Saludo.
#14
Buenas Pieshna.
¿Podrías dar mas detalles? SO por ejemplo, marca de impresora, puerto al que está conectada...
Un Saludo.
#15
Programación C/C++ / Re: Duda con punteros
7 Junio 2018, 13:58 PM
Buenas ThunderCls.

Si, entiendo que el Nodo que creo que es el que le meto el numero y apunta a primero es la misma dirección de memoria.
Y si, en el tema de punteros he incidido bastante.
El tema del destructor también lo controlo y está bien hecho.
Sigo investigando, cuando tenga la solución la pongo por aquí.
Un Saludo y gracias por tu respuesta!
#16
Si te salta el error en la linea 19, prueba en vez de getline a usar el feof o eof del fichero y comentas el resultado.
Código (cpp) [Seleccionar]

while(!feof(nombreArchivo))


Un saludo!
#17
Buenas el problema de tu código sería que no compruebas si esa pareja ya ha existido anteriormente, está muy bien pero te faltaría eso...
Aquí te dejo un código que he hecho referente a tu tarea
Espero que te ayude.

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

bool noEncontrado(char letra, const char usadas[], int longitud){
   for(int i=0;i<longitud;i++)
       if(letra==usadas[i])
           return false;
   return true;
}


int main(int argc, char const *argv[]){

   const int MAXLETRAS=10;
   int contadorusadas=0;
   char palabra[MAXLETRAS] = {'A','A','D','F','A','A','S','S','R','U'};
   char usadas[MAXLETRAS];

   for(int i=0;i<MAXLETRAS;i++){
       if(palabra[i]==palabra[i+1])
           if(noEncontrado(palabra[i],usadas,contadorusadas)){
               usadas[contadorusadas]=palabra[i];
               contadorusadas++;
           }
   }
   
    cout << "Han aparecido " << contadorusadas << " letras con parejas" << endl;
   cout << "Letras con parejas encontradas" << endl;
   for(int i=0;i<contadorusadas;i++) cout << usadas[i] << endl;
   return 0;
}


PD: Acostumbrate a poner el código entre etiquetas propias de código.
Un saludo.
#18
Código (cpp) [Seleccionar]

#include <stdio.h>
#include <iostream>
using namespace std;

int main(){
 const float PrecioBase = 60;
 /*Precio de la butaca*/ ;
 int butacas = 0;
 /*Número de butacas vendidas*/
 int edad;
 /*Edad del cliente*/
 float totalpesos= 0.0;
 /*Total de euros recaudados*/
 float precio;
 /*Precio de cada butaca*/
 char opcion = 's ';
 /*Opción del programa*/
 char tecla = ' f';
 /*Tecla Si/No*/
 /*--Bucle hasta opción F de fin--*/
 while (opcion !='F') {
   cout << "Opcion (Ticket(T), Resumen(R) o Fin(F))? " << endl;
    opcion = ' ';
       while ((opcion !='T') && (opcion !='R') && (opcion !='F')) { cin >> opcion;
}

  if (opcion == 'T') {
    tecla = 'S';

      while (tecla == 'S') {
         cout << "Edad " << endl;
         cin >> edad;
         butacas++;
         cout << "|----------------------------------------|" << endl;
         if (edad<6) { /*Niño gratis*/
             cout << "|Gratis " << endl;
             precio = 0.0;
        } else if (edad<18) { /*Joven 50%*/
             cout << "|Joven " << endl;
             precio = PrecioBase-(PrecioBase*.50);
        } else if (edad<65) { /*Adulto, tarifa completa*/
             cout << "|Adulto " << endl;
             precio = PrecioBase;
       } else { /*Jubilado 25%*/
             cout << "|Jubilado " << endl;
             precio = PrecioBase-(PrecioBase*.25);
     }
     totalpesos = totalpesos + precio;
     cout << " Precio: " << endl << precio << endl;
     cout << "|----------------------------------------|" << endl << endl;
     cout << "Otro Ticket(S/N)? " << endl;
     tecla = ' ';
     while ((tecla !='S') && (tecla !='N')) { cin >> tecla; }
}
}
}
/*============================================================ 64 Elaboración del Resumen de la Recaudación 65 ==============================================================*/

  if (opcion == 'R') {
     cout << " RESUMEN DE VENTAS" << endl;
     cout << " ----------------- " << endl;
     cout << "Butacas " << endl << butacas << endl;
     cout << "Total Recaudado = " << endl << endl << totalpesos << endl;
  }
}
}
#19
Buenas axel19.

Para realizar el algoritmo de Dijsktra lo eficiente sería usar una programación dinamica, recursiva o iterativa lo que mejor te convenga, ya que recursivamente y mediante ese tipo de programación, estarás guardando en un array de n posiciones las aristas ya recorridas por las cuales no debes volver a pasar.

Llevar a cabo la implementación de este algoritmo es sencillo usando una cola de prioridad.. aqui te dejo el pseudocodigo.


DIJKSTRA (Grafo G, nodo_fuente s)       
       para u ∈ V[G] hacer
           distancia[u] = INFINITO
           padre[u] = NULL
           visto[u] = false
       distancia[s] = 0
       adicionar (cola, (s, distancia[s]))
       mientras que cola no es vacía hacer
           u = extraer_mínimo(cola)
           visto[u] = true
           para todos v ∈ adyacencia[u] hacer
               si distancia[v] > distancia[u] + peso (u, v) hacer
                   distancia[v] = distancia[u] + peso (u, v)
                   padre[v] = u
                   adicionar(cola,(v, distancia[v]))


Si no sabes usar colas de prioridad, la complejidad aumenta algo más.

Tienes ejemplos de este algoritmo resuelto en Pseudocodigo, Java y C++ en la Wikipedia; adjunto link: https://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra#Otra_versi%C3%B3n_en_C++_del_algoritmo_de_Dijkstra

Un saludo y suerte!!
#20
Buenas d91.

Los permisos disponibles para chmod son:
0 (cero) = Sin permisos
1 = permiso de ejecutar únicamente
2 = permiso de escribir solamente
3 = escribir y ejecutar
4 = permiso de leer
5 = leer y ejecutar
6 = leer y escribir
7 = leer, escribir y ejecutar

Al usar CHMOD tienes 3 grupos de números, lo cual representa igualmente 3 grupos de usuarios:
1. Owner o User, el cual de manera general es el webmaster
2. Group, un grupo de usuarios configurado por el webmaster
3. World o Anyone, que es básicamente cualquier usuario que usa tu sitio web.

Como tu tarea será a nivel de usuario el 2 y el 3 no se toca, o le pones los mismos que al owner.

Por lo tanto yo haría un programilla tal que fuera un menú y un switch.

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <sstream>
#include <stdlib.h>
#include <iostream>
using namespace std;

int menuChmod(){
  int eleccion;
  cout << "+++++++MENU+++++++" << endl;
  cout << "1 - Solo ejecutar" << endl;
  cout << "2 - Solo escribir" << endl;
  cout << "3 - Escribir y ejecutar" << endl;
  cout << "4 - Solo leer" << endl;
  cout << "5 - Leer y ejecutar" << endl;
  cout << "6 - Leer y escribir" << endl;
  cout << "7 - Leer, escribir y ejecutar" << endl;
  cout << "Ingrese eleccion: ";
  cin >> eleccion;
  return eleccion;
}

int main(int argc, char *argv[]){

   char archivo[100];
   ostringstream oss;
   oss << "chmod ";
   
    cout<<"\nIngrese nombre del archivo: ";
   cin>>archivo;

   switch(menuChmod()){
       case 1: {oss << "100 "<<archivo;
                system((oss.str()).c_str());
                break;
               }
       case 2: {oss << "200 "<<archivo;
               system((oss.str()).c_str());
               break;
               }
       case 3: {oss << "300 "<<archivo;
                system((oss.str()).c_str());
                break;
               }
       case 4: {oss << "400 "<<archivo;
               system((oss.str()).c_str());
               break;
              }
       case 5: {oss << "500 "<<archivo;
                system((oss.str()).c_str());
                break;
               }
       case 6: {oss << "600 "<<archivo;
                system((oss.str()).c_str());
                break;
               }
       case 7: {oss << "700 "<<archivo;
                system((oss.str()).c_str());
                break;
               }
       default:;
   }

   ostringstream ls;
   ls << "ls -la | grep " << archivo;
   system((ls.str()).c_str());

   return 0;
}


Lo hice con system porque desconozco como funciona chmod en la libreria que usaste.
La idea está en el codigo.
SI al grupo y a todo el mundo quieres asignarle los mismos permisos, en vez de 100, sería 111, y así con todos.

Espero haberme explicado bien.
Un Saludo.