elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Ayuda urgente con un problema de lectura de ficheros C++ en: 20 Octubre 2018, 20:13 pm
Buenas, tengo un problema con la parte final de este código, y es que quiero que el programa me lea todos los préstamos que he hecho, pero solo me sale 1, más concretamente el primero. Por ejemplo, yo en el programa pongo información sobre 4 películas que quiero para alquilar, pero al final, cuando le pido al programa que me lea los datos del fichero txt, solo me lee los de la primera pelicula. Quisiera saber que poner para que me lea toda la información de las películas, y no solo de la primera.
Por cierto, también hay un pequeño error, que es que desde el "nombre de la pelicula" hasta "subtitulos?" los datos de sus respectivas preguntas son de la primera pelicula, pero después, a partir de "minutos", los datos los recoge de la última película que puse.

Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. #include <fstream>
  5. #include <iomanip>
  6. #include <cctype>
  7.  
  8. typedef enum { action, adventure, scifi, comedy, drama, mystery, horror } tGenre;
  9. typedef enum { spanish, english, french, german, italian, portuguese } tLanguage;
  10.  
  11. tGenre readGenre();
  12. string genreToStr(tGenre genre);
  13. tLanguage readLanguage();
  14. string languageToStr(tLanguage lang);
  15.  
  16. int main() {
  17.  
  18. string gen;
  19. string language;
  20. string str;
  21. string nif;
  22. string date;
  23. string title;
  24. string director;
  25. tGenre genre;
  26. tLanguage lang;
  27. int minutes;
  28. int days;
  29. char aux;
  30. char result;
  31. bool subtitles = true;
  32. ofstream outputFile;
  33. ifstream inputFile;
  34.  
  35. outputFile.open("rentals.txt",ios::out);
  36. do {
  37. cout << "Film title (# to end): ";
  38. cin.sync();
  39. getline(cin, title);
  40. if (title != "#" ) {
  41. outputFile << title << endl;
  42. cout << "Film director: ";
  43. cin.sync();
  44. getline (cin, director);
  45. outputFile << director << endl;
  46. genre = readGenre();
  47. gen = genreToStr(genre);
  48. outputFile << gen << endl;
  49. lang = readLanguage();
  50. language = languageToStr(lang);
  51. outputFile << language << endl;
  52. cout << "Film with subtitles (y/n)?: ";
  53. cin >> aux;
  54. aux = toupper (aux);
  55. if (aux == 'Y') {
  56. outputFile << aux << endl;
  57. outputFile << true << endl;
  58. subtitles = false;
  59. }
  60. else {
  61. subtitles = true;
  62. }
  63. cout << "Minutes: ";
  64. cin.sync();
  65. cin >> minutes;
  66. outputFile << minutes << endl;
  67. cout << "Client NIF: ";
  68. cin.ignore();
  69. cin >> nif;
  70. outputFile << nif << endl;
  71. cout << "Rental Date: ";
  72. cin.sync();
  73. cin >> date;
  74. outputFile << date << endl;
  75. cout << "Rental Days: ";
  76. cin.sync();
  77. cin >> days;
  78. outputFile << days << endl;
  79. }
  80. } while (title != "#");
  81. outputFile << "#" << endl;
  82.  
  83. inputFile.open("rentals.txt",ios::in);
  84. while (!inputFile.eof() && aux == 'Y' || aux == 'N')  {
  85. int rental;
  86. getline(inputFile, title);
  87. getline(inputFile, director);
  88. getline(inputFile, gen);
  89. getline(inputFile, language);
  90. inputFile >> subtitles;
  91. inputFile >> minutes;
  92. getline(inputFile, nif);
  93. getline(inputFile, date);
  94. inputFile >> days;
  95. switch (aux) {
  96. case 'Y':
  97. if (subtitles == false) {
  98. rental = ++rental;
  99. cout << "Rental " << rental << endl;
  100. cout << title << " (" << director << "), " << gen << ", " << language << " (subt. Spanish), " << minutes << " min." << endl;
  101. cout << "Client: " << nif << " - " << date << ", " << days << " days" << endl;
  102. subtitles = true;
  103. }
  104. break;
  105. case 'N':
  106. if (subtitles == true) {
  107. rental = ++rental;
  108. cout << "Rental " << rental << endl;
  109. cout << title << " (" << director << "), " << gen << ", " << language << ", " << minutes << " min." << endl;
  110. cout << "Client: " << nif << " - " << date << ", " << days << " days" << endl;
  111. subtitles == false;
  112. break;
  113. }
  114. default:
  115. exit(1);
  116. }
  117. }
  118.  
  119. inputFile.close();
  120. outputFile.close();
  121.  
  122. return 0;
  123. }
Repito, lo único que me falla es la parte en el que el programa tiene que leer la información que hay en el fichero, es decir, la del inputFile.
2  Programación / Programación C/C++ / Re: Ayuda urgente con un problema de C++ en: 14 Octubre 2018, 14:03 pm
Gracias, pero como haría la función hacer_cosas con las variables bool? Es que las opciones dependen uno de los otros.

Escriba un programa en C ++ que ofrezca al usuario estas opciones:
Option 1: Pregunta al usuario por su client data (name, NIF and address).
Option 2: Pregunta por el nombre del producto, nº de unidades y descuento a aplicar. (product, units, discocunt).
Option 3: Genera la factura. No lo generará si el cliente no ha puesto información suya y del producto (Client Data y Sale Data), devolviéndole al menú.
Option 4: Muestra las ventas totales y el VAT Displays, solo si has puesto antes los datos del cliente y de las ventas, sino te pondrá error y te devolverá al menú.
Option 5:Todos los totales son 0 y no hay datos de clientes ni datos de ventas. Borra todos los datos ofrecidos anteriormente y empieza de 0.

Utilice dos variables bool para averiguar si se han proporcionado datos de clientes y datos de ventas (falso después de reiniciar).


Aún así muchas gracias
3  Programación / Programación C/C++ / Ayuda urgente con un problema de C++ en: 13 Octubre 2018, 22:47 pm
Buenos días, tengo un problema urgente con un ejercicio de c++ que me cuesta solucionar. el ejercicio es el siguiente:
Escribir un programa que ofrezca las siguientes opciones:
1. Client data
2. Sale data
3. Invoice
4. Totals
5. Restart
0. Exit
El programa mostrará el menú hasta que el usuario elija la opción.
. Por ahora lo que llevó es esto. Seguramente haya mucha cosa innecesaria. Si es así, me lo podéis decir. Espero respuesta.
Muchas gracias de antemano.

Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. #include <cctype>
  5. #include <iomanip>
  6.  
  7. int menu();
  8. double cost(int descPercentage, double total, double final, double amountDisc, double amountVAT);
  9.  
  10.        int main() {
  11. int option;
  12. int units;
  13. int readCost;
  14. int readMenu;
  15. int descPercentage;
  16. const int VAT = 21;
  17. const int DISCOUNT = 15;
  18. double price;
  19. double total;
  20. double readcost;
  21. double final;
  22. double amountDisc;
  23. double amountVAT;
  24.        bool sale = false;
  25. bool client = false;
  26. char discount;
  27. string product;
  28. string name, nif, address;
  29.  
  30. cout << "1. Client Data" << endl;
  31. cout << "2. Sale Data" << endl;
  32. cout << "3. Invoice" << endl;
  33. cout << "4. Totals" << endl;
  34. cout << "5. Restart" << endl;
  35. cout << "0. Exit" << endl;
  36. cout << "Option: ";
  37. cin >> option;
  38. cout << endl;
  39. switch (option) {
  40. case 1:
  41. if (client == false) {
  42. cout << "Client Name: ";
  43. cin.sync();
  44. getline (cin, name);
  45. cout << "Client NIF: ";
  46. getline (cin, nif);
  47. cout << "Client Address: ";
  48. getline (cin, address);
  49. cout << client;
  50. cout << endl;
  51. }
  52. case 2:
  53. if (sale == true) {
  54. readMenu = menu();
  55. cout << "Product Name: ";
  56. cin.sync();
  57. getline (cin, product);
  58. cout << "Product Price: ";
  59. cin >> price;
  60. cout << "Discount (y/n): ";
  61. cin >> discount;
  62. discount = toupper(discount);
  63. if (discount == 'Y') {
  64. descPercentage = DISCOUNT;
  65. }
  66. else {
  67. descPercentage = 0;
  68. }
  69. cout << "Units: ";
  70. cin >> units;
  71. sale = true;
  72. cout << sale;
  73. cout << endl;
  74. }
  75. else if (sale != false){
  76. cout << "No sale data!" << endl;
  77. cout << endl;
  78. readMenu = menu();
  79. }
  80. case 3:
  81. if (client == false) {
  82. cout << "No client data!" << endl;
  83. cout << endl;
  84. readMenu = menu();
  85. client = false;
  86. cout << client;
  87. }
  88. else {
  89. readMenu = menu ();
  90. cout << endl << "Invoice:" << endl;
  91. cout << setw(50) << right << name << endl;
  92. cout << setw(50) << right << nif << endl;
  93. cout << setw(50) << right << address << endl << endl;
  94. readMenu = menu ();
  95. client = true;
  96. cout << client;
  97. }
  98.              case 4:
  99. if (sale == false) {
  100. cout << "No sale data!" << endl;
  101. cout << "1. Client Data" << endl;
  102. cout << "2. Sale Data" << endl;
  103. cout << "3. Invoice" << endl;
  104. cout << "4. Totals" << endl;
  105. cout << "5. Restart" << endl;
  106. cout << "0. Exit" << endl;
  107. cout << "Option: ";
  108. cin >> option;
  109. sale = false;
  110. cout << sale;
  111. }
  112. else {
  113. readcost = cost(descPercentage, total, final, amountDisc, amountVAT);
  114. cout << "Product: " << product << endl;
  115. cout << setw(40) << left << "Unit Price";
  116. cout << setw(10) << right << fixed << setprecision(2) << price << endl;
  117. cout << setw(40) << left << "Units";
  118. cout << setw(7) << right << units << endl;
  119. cout << setw(40) << left << "Total";
  120. cout << setw(10) << right << fixed << setprecision(2) << total << endl;
  121. cout << setw(40) << left << "Discount";
  122. cout << setw(7) << right << descPercentage << " %" << endl;
  123. cout << setw(50) << right << fixed << setprecision(2) << -amountDisc << endl;
  124. cout << setw(40) << left << "Total after discount";
  125. cout << setw(10) << right << fixed << setprecision(2) << total << endl;
  126. cout << setw(40) << left << "VAT";
  127. cout << setw(7) << right << VAT << " %" << endl;
  128. cout << setw(50) << right << fixed << setprecision(2) << amountVAT << endl;
  129. cout << setw(40) << left << "Final Price";
  130. cout << setw(10) << right << fixed << setprecision(2) << final << endl;
  131. sale = true;
  132. cout << sale;
  133. }
  134. case 5:
  135. system ("CLS");
  136. break;
  137. default:
  138. cout << "1. Client Data" << endl;
  139. cout << "2. Sale Data" << endl;
  140. cout << "3. Invoice" << endl;
  141. cout << "4. Totals" << endl;
  142. cout << "5. Restart" << endl;
  143. cout << "0. Exit" << endl;
  144. cout << "Option: ";
  145. cin >> option;
  146. cout << endl;
  147. }
  148. return 0;
  149. }
  150.  
  151.      int menu() {
  152.  
  153. int option;
  154. int readMenu;
  155.  
  156. cout << "1. Client Data" << endl;
  157. cout << "2. Sale Data" << endl;
  158. cout << "3. Invoice" << endl;
  159. cout << "4. Totals" << endl;
  160. cout << "5. Restart" << endl;
  161. cout << "0. Exit" << endl;
  162. cout << "Option: ";
  163. cin >> option;
  164. cout << endl;
  165. while (option <= -1 || option >= 6) {
  166. cout << "1. Client Data" << endl;
  167. cout << "2. Sale Data" << endl;
  168. cout << "3. Invoice" << endl;
  169. cout << "4. Totals" << endl;
  170. cout << "5. Restart" << endl;
  171. cout << "0. Exit" << endl;
  172. cout << "Option: ";
  173. cin >> option;
  174. cout << endl;
  175. }
  176. return option;
  177. }
  178. double cost(int descPercentage, double total, double final, double amountDisc, double amountVAT) {
  179. const int VAT = 21;
  180. const double DISCOUNT = 15;
  181. char discount;
  182.  
  183. amountDisc = total * descPercentage / 100;
  184. total = total - amountDisc;
  185. amountVAT = total * VAT / 100;
  186. final = total + amountVAT;
  187.  
  188. return final;
  189. }
  190.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines