|
112
|
Programación / Scripting / ayuda con Script en Bash
|
en: 26 Enero 2012, 18:28 pm
|
Hola a todos, estoy realizando un Script en Bash y tengo algunas dudas las cuales me gustaría que me las resolvieran a medida que voy haciendo el script. Enunciado del Script: Crear un script que permita generar una factura por pantalla. para ello, se debera pedir en primer lugar, nombre y dni del usuario, y a continuacion cuantos articulos se van a comprar. a partir de ahi, existe un fichero en la misma carpeta del scipt, llamado productos.txt, donde estan los codigos, los nombres y el precio de cada producto. el usuario mostrara en pantalla el codigo de cada uno de los productos que desea comprar y la cantidad de ellos, y el script ira guardando todo esto en un fichero pra generar despues lafacura que recogera lo siguiente: ###################################################### FACTURA ###################################################### Fecha: ---------------- Cliente: -------- DNI: ----------- ###################################################### Codigo####Descripcion####Cantidad####U.P.####Total#### ###################################################### C.2110 producto1 3 5.30 15.90 C.2012 producto2 8 15.20 121.60 ###################################################### SUBTOTAL: 137.50 IVA 18%: 24.75 ############### IMPORTE: 162.25
IDEA: usar la calculadora bc: c=$(echo 22.5 + 3.75 | bc) y el comando cut para acceder a los codigos, precio y nombres de los productos. el fichero productos.txt puede ser el siguiente: C.001#caja de CD's 32x 25uds, Verbatin#5.25 C.002#raton laser, logitec#4.50 C.003#pen drive 8GB, Kingston#7.10 C.004#kiingston micro SD 4GB#3.90 Ahora os pongo el codigo que he realizado y os comento la duda dentro del código: #!/bin/bash echo "" echo "LISTADO DE PRODUCTOS" echo "-------------------------------------------" cat /home/barea/unity/ejercicios_de_Scipt_en_Bash/cut/ejer57/productos.txt echo "-------------------------------------------" echo "" i=1 read -p "elige el producto $i que desees o S para salir: " prod echo "prod1: "$prod # en la variable codig quiero guardar la primera columna del fichero, pero me sale toda la columna en una linea y creo que es # por eso por lo que no me funciona lo que he realizado mas adelante de del head | tail, como lo tendria que hacer??? codig=$(cat /home/barea/unity/ejercicios_de_Scipt_en_Bash/cut/ejer57/productos.txt | cut -d "#" -f 1 | grep '^[C,c]\.[0-9]\{3\}$') echo "Codig: "$codig while [ $prod != 'S' ] do echo "i: "$i linea_cod_fich=$(head -$i /home/barea/unity/ejercicios_de_Scipt_en_Bash/cut/ejer57/productos.txt | tail -1) i=$(expr $i \+ 1) read -p "elige el producto $i que desees o S para salir: " prod echo "prod1: "$prod echo "Cod_fich: "$cod_fich echo "linea_cod_fich: "$linea_cod_fich exit while done
Espero que me puedan ayudar, saludos
|
|
|
116
|
Sistemas Operativos / GNU/Linux / Debian
|
en: 10 Enero 2012, 19:18 pm
|
Hola a todos, tengo que realizar el montaje de un servidor con si Sistema Operativo Debian, se me estan planteando algunas dudas que son las siguientes:
- Me gustaría saber si las cuestiones que están a continuación las tendría que incluir en: /etc/profile o en /etc/bash.bashrc??
- Quiero guardar en un fichero (que lo llamaremos por ejemplo secion.dat) que va a estar en /root/registros/, el usuario, la hora y la fecha a la que inicio sesion en dicho equipo.
- También quiero que la carpeta personal del usuario no supere los 500 MB, si los supera, se enviara un echo al terminal ttyX correspondiente diciendole: "Acceso denegado a Shell" y se le impedira el acceso a la Shell la proxima vez.
Espero que me puedan ayudar.
|
|
|
117
|
Programación / .NET (C#, VB.NET, ASP) / Re: desglosar
|
en: 10 Enero 2012, 19:12 pm
|
alguien sabe cual es el fallo que tiene este código?? Public Class Form1 ' Una máquina expendedora de dinero necesita calcular el número de billetes y monedas que corresponden ' a una cantidad (sin decimales.) Elaborar una aplicación que a través de un TEXTBOX introduzca una cantidad ' y con LABELS que me muestre cuántos billetes de 500 100 50 20 10 5 hay en esa cantidad. Ejemplo: 472 -> 4 ' de 100, 1 de 50, 1 de 20 (me sobran 2 euros que no los tengo presentes pues no hay un billete de 2 euros) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub btn_Desglosar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Desglosar.Click Dim resto As Integer = 0 Dim b_500, b_200, b_100, b_50, b_20, b_10, b_5, m_2, m_1 As Integer 'b_500 = 0 & b_200 = 0 & b_100 = 0 & b_50 = 0 & b_20 = 0 & b_10 = 0 & b_5 = 0 & m_2 = 0 = 0 & m_1 = 0 Try If txt_Cantidad.Text = "" Then MessageBox.Show("No ha introducido ninguna cantidad a desglosar", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information) End If If CInt(txt_Cantidad.Text) > 500 Then b_500 = CInt(txt_Cantidad.Text) / 500 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_500 * 500) 'MessageBox.Show("Billetes de 500: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) > 200 Then b_200 = CInt(txt_Cantidad.Text) / 200 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_200 * 200) 'MessageBox.Show("Billetes de 200: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) > 100 Then b_100 = CInt(txt_Cantidad.Text) / 100 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_100 * 100) 'MessageBox.Show("Billetes de 100: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) > 50 Then b_50 = CInt(txt_Cantidad.Text) / 50 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_50 * 50) 'MessageBox.Show("Billetes de 50: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) > 20 Then b_20 = CInt(txt_Cantidad.Text) / 20 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_20 * 20) 'MessageBox.Show("Billetes de 20: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) > 10 Then b_10 = CInt(txt_Cantidad.Text) / 10 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_10 * 10) 'MessageBox.Show("Billetes de 10: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) > 5 Then b_5 = CInt(txt_Cantidad.Text) / 5 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_5 * 5) 'MessageBox.Show("Billetes de 5: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) > 2 Then m_2 = CInt(txt_Cantidad.Text) / 2 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_2 * 2) 'MessageBox.Show("Monedas de 2: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If CInt(txt_Cantidad.Text) >= 1 Then m_1 = CInt(txt_Cantidad.Text) / 1 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_1 * 1) 'MessageBox.Show("Monedas de 1: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If txt_Cantidad.Text = "" MessageBox.Show("La cantidad desblosada en billetes es: " & vbCrLf & "Billetes de 500: " & b_500 & " Billetes" & vbCrLf & "Billetes de 200: " & b_200 & " Billetes" & vbCrLf & "Billetes de 100: " & b_100 & " Billetes" & vbCrLf & "Billetes de 50: " & b_50 & " Billetes" & vbCrLf & "Billetes de 20: " & b_20 & " Billetes" & vbCrLf & "Billetes de 10: " & b_10 & " Billetes" & vbCrLf & "Billetes de 5: " & b_5 & " Billetes" & vbCrLf & "Monedas de 2: " & m_2 & " Monedas" & vbCrLf & "Monedad de 1: " & m_1 & " Monedas" & vbCrLf, "Desglose", MessageBoxButtons.OK) Catch ex As Exception End Try End Sub End Class
|
|
|
119
|
Programación / .NET (C#, VB.NET, ASP) / Re: desglosar
|
en: 9 Enero 2012, 12:25 pm
|
mi error/problema es el siguiente:
no me desglosa bien en los billetes que deben de ser, por ejemplo si quiero desglosar 2348 me devuelve solo: 5 billetes de 500
|
|
|
120
|
Programación / .NET (C#, VB.NET, ASP) / desglosar
|
en: 3 Enero 2012, 13:56 pm
|
Hola a todos, estoy realizando una aplicación que me desglose una cantidad que le introduzco por teclado en los billetes y monedas correspondientes, aquí os dejo el programa y el código que he implementado yo, en el código le he introducido algunos Messagebox para que me enseñe por pantalla lo que me va devolviendo en la operación de la cantidad que le introduzco. código de la aplicación: Public Class Form1 ' Una máquina expendedora de dinero necesita calcular el número de billetes y monedas que corresponden ' a una cantidad (sin decimales.) Elaborar una aplicación que a través de un TEXTBOX introduzca una cantidad ' y con LABELS que me muestre cuántos billetes de 500 100 50 20 10 5 hay en esa cantidad. Ejemplo: 472 -> 4 ' de 100, 1 de 50, 1 de 20 (me sobran 2 euros que no los tengo presentes pues no hay un billete de 2 euros) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub btn_Desglosar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Desglosar.Click Dim resto As Integer = 0 Dim b_500, b_200, b_100, b_50, b_20, b_10, b_5, m_2, m_1 As Integer 'b_500 = 0 & b_200 = 0 & b_100 = 0 & b_50 = 0 & b_20 = 0 & b_10 = 0 & b_5 = 0 & m_2 = 0 = 0 & m_1 = 0 Try If txt_Cantidad.Text = "" Then MessageBox.Show("No ha introducido ninguna cantidad a desglosar", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information) End If If txt_Cantidad.Text > 500 Then b_500 = CInt(txt_Cantidad.Text) / 500 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_500 * 500) MessageBox.Show("Billetes de 500: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text > 200 Then b_200 = CInt(txt_Cantidad.Text) / 200 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_200 * 200) MessageBox.Show("Billetes de 200: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text > 100 Then b_100 = CInt(txt_Cantidad.Text) / 100 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_100 * 100) MessageBox.Show("Billetes de 100: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text > 50 Then b_50 = CInt(txt_Cantidad.Text) / 50 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_50 * 50) MessageBox.Show("Billetes de 50: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text > 20 Then b_20 = CInt(txt_Cantidad.Text) / 20 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_20 * 20) MessageBox.Show("Billetes de 20: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text > 10 Then b_10 = CInt(txt_Cantidad.Text) / 10 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_10 * 10) MessageBox.Show("Billetes de 10: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text > 5 Then b_5 = CInt(txt_Cantidad.Text) / 5 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (b_5 * 5) MessageBox.Show("Billetes de 5: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text > 2 Then m_2 = CInt(txt_Cantidad.Text) / 2 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_2 * 2) MessageBox.Show("Monedas de 2: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If If txt_Cantidad.Text >= 1 Then m_1 = CInt(txt_Cantidad.Text) / 1 txt_Cantidad.Text = CInt(txt_Cantidad.Text) - (m_1 * 1) MessageBox.Show("Monedas de 1: " & txt_Cantidad.Text, "informacion", MessageBoxButtons.OK) End If txt_Cantidad.Text = "" MessageBox.Show("La cantidad desblosada en billetes es: " & vbCrLf & "Billetes de 500: " & b_500 & " Billetes" & vbCrLf & "Billetes de 200: " & b_200 & " Billetes" & vbCrLf & "Billetes de 100: " & b_100 & " Billetes" & vbCrLf & "Billetes de 50: " & b_50 & " Billetes" & vbCrLf & "Billetes de 20: " & b_20 & " Billetes" & vbCrLf & "Billetes de 10: " & b_10 & " Billetes" & vbCrLf & "Billetes de 5: " & b_5 & " Billetes" & vbCrLf & "Monedas de 2: " & m_2 & " Monedas" & vbCrLf & "Monedad de 1: " & m_1 & " Monedas" & vbCrLf, "Billetes", MessageBoxButtons.OK) Catch ex As Exception End Try End Sub End Class
|
|
|
|
|
|
|