REMERCIEMENT + qq questions array dynamique.

REMERCIEMENT + qq questions array dynamique. - C++ - Programmation

Marsh Posté le 15-01-2003 à 23:15:38    

pour l aide sur ce topic.
 
http://forum.hardware.fr/forum2.ph [...] subcat=386
 
j ai eu A-, 4 eleves sur 72 on eu A, je m en sort bien.
mon second exam que j ai rendu hier, est a la fin du post.
 
j ai quelque questions.
je dois faire un prog qui enregistre certaines carac, comme le nom, l id, la pay par heure, tax ect.... faire differents czlcul la dessus et afficher le tout.
ceci pour n employee.
 
je n emaitrise pas encore le spointeurs.
ce que j e voudria faire c un tableau a dimension variable.
exemple

Code :
  1. input[var][5];


puis incrementer var, si l utilisateur continue d ajouter des employee.
 
mais comment faire ?.
de plus je pensai faire un gros tableau de string puis ensiute convertir les string en int ou float, mais sa me donne des resultat completement faux...
 
merci.


Message édité par COULIX le 16-01-2003 à 06:07:00
Reply

Marsh Posté le 15-01-2003 à 23:15:38   

Reply

Marsh Posté le 15-01-2003 à 23:23:53    

ben tu peux pas le faire comme ca ton tableau.
tu dois le sauver a chaque fois puis en refaire un de un plus grand avec l'oprérateur new.
Le mieux de créer une structure(class, pas struct) liste ,puis de l'employer.

Reply

Marsh Posté le 15-01-2003 à 23:30:25    

Nico5779 a écrit :

ben tu peux pas le faire comme ca ton tableau.
tu dois le sauver a chaque fois puis en refaire un de un plus grand avec l'oprérateur new.
Le mieux de créer une structure(class, pas struct) liste ,puis de l'employer.


ha ouai dans la boucle, si l utilistaeur ajoute un nouveau employee je refais un    

Code :
  1. string input[n+1][5]


mais y aps moyen de jouer avec les pointeurs, ? et j ai lu aussi des trucs sur la classe vector mais j ai pas tout compris...
 :??: .
 
sinon les class je vais voir.
et le problme ds string genre;

Code :
  1. string a;
  2. int b ;
  3. cout << "enter string ";
  4. cin  >> a;
  5. b = a;
  6. cout << a*5;
  7. //sera t il egale a 10 si j ai entrer 2 ? .


Reply

Marsh Posté le 15-01-2003 à 23:40:38    

COULIX a écrit :


ha ouai dans la boucle, si l utilistaeur ajoute un nouveau employee je refais un    

Code :
  1. string input[n+1][5]


mais y aps moyen de jouer avec les pointeurs, ? et j ai lu aussi des trucs sur la classe vector mais j ai pas tout compris...
 :??: .
 
sinon les class je vais voir.
et le problme ds string genre;

Code :
  1. string a;
  2. int b ;
  3. cout << "enter string ";
  4. cin  >> a;
  5. //ici et
  6. cout << a*5;
  7. //sera t il egale a 10 si j ai entrer 2 ? .non
  8. //tu peux essayer
  9. b = int(a);
  10. cout << int(a*5);
  11. //mais c pas garanti




 
sinon pour l'histoire des tableau ca marchera pas comme ca, recherche liste c/c++ sur google


Message édité par Nico5779 le 15-01-2003 à 23:45:12
Reply

Marsh Posté le 16-01-2003 à 05:13:18    

Code :
  1. struct employe
  2. {
  3. char nom[256];
  4. int id;
  5. float paye_horaire;
  6. };
  7. employe* LesEmployes= new employe[n];


Pour le reste, tu dois bien avoir des cours ?
Je regardes ton exam... tu n'as pas encore vu switch ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 16-01-2003 à 05:56:18    

Musaran a écrit :

Code :
  1. struct employe
  2. {
  3. char nom[256];
  4. int id;
  5. float paye_horaire;
  6. };
  7. employe* LesEmployes= new employe[n];


Pour le reste, tu dois bien avoir des cours ?
Je regardes ton exam... tu n'as pas encore vu switch ?


si mais s amarche que pour les integer, case 1 ect..
case 'a' c pas bon...

Reply

Marsh Posté le 16-01-2003 à 05:59:54    

Musaran a écrit :

Code :
  1. struct employe
  2. {
  3. char nom[256];
  4. int id;
  5. float paye_horaire;
  6. };
  7. employe* LesEmployes= new employe[n];


Pour le reste, tu dois bien avoir des cours ?
Je regardes ton exam... tu n'as pas encore vu switch ?


j ai fait comme ci dessous, cela marche, mais le tableau n est pas dynamique, et je cherche comment obtenir la partie decimal d un input, pour le calcul de l heure.
par example si il entre 3.45 , ce qui correspond a  3 h et 45 , qui doit etre ' convertie en 3.75...
je cherche toujours.
 
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. //double converthours (double a);
  4. void process(double inputdbl[][3],int a) {
  5. double result, extra, withouttax;
  6. double hours = inputdbl[a][0];
  7. double tax   = inputdbl[a][1];
  8. double rate  = inputdbl[a][2];
  9.        if (inputdbl[a][0] > 40 ) {
  10.         extra=(hours-40)*(1.5*rate);
  11.         withouttax = (40*rate)+ extra;
  12.         result = withouttax - (withouttax *(tax/100)); }
  13.        else {
  14.         withouttax=(hours*rate);
  15.         result = (withouttax  -  (hours*rate*(tax/100)));    }
  16.       cout << "   ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n";
  17.       cout << "   º NET PAYE     : " << result << " $ \n";
  18.       cout << "   ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n";
  19.       cout << "   º GROSS PAY    : " << withouttax <<" $ \n";
  20.       cout << "   ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n";
  21.       cout << "   º TAX          : " <<  withouttax - result<<" $ \n";
  22.       cout << "   ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n";
  23.       cout << "   º PAY RATE     : " << "?????" <<" $ \n";
  24.       cout << "   ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n";
  25. }
  26. void recordinput (string inputstr[][2], double inputdbl[][3],int a) {
  27. cout << "\n";
  28. cout << "Employee ID   (no space, use _)  :? "; cin >> inputstr[a][0];
  29. cout << "Employee Name (no space, use _)  :? "; cin >> inputstr[a][1];
  30. cout << "Hours Worked [hours],[min]       :? "; cin >> inputdbl[a][0];
  31. cout << "TAX [%]?                         :? "; cin >> inputdbl[a][1];
  32. cout << "Employee hourly pay              :? "; cin >> inputdbl[a][2];
  33. cout << "\n";
  34. }
  35. int main()
  36. {
  37. string inputstr[10][2];
  38. double inputdbl[10][3];
  39. int n=0;
  40. string answer,quit;
  41. do {
  42.    do {
  43.       recordinput (inputstr,inputdbl,n);
  44.       cout << "Add an other employee ?";
  45.       cin >> answer;
  46.       cout << "\n";
  47.       if (answer == "y" ) { n++;}
  48. }
  49.       while (answer == "y" );
  50.    
  51. for(int i=0;i<n+1;i++) {
  52. cout << "   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n";
  53. cout << "   º ID           : " << inputstr[i][0] << "\n";
  54. cout << "   ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹\n";
  55. cout << "   º HOURS WORKED : " << inputdbl[i][0] << "\n";
  56. process(inputdbl,i);
  57. cout << "\n";
  58. }
  59. cout << "quit ? \n";
  60. cin >> quit;
  61.    }
  62. while(quit != "y" );
  63. }


 
les cours que l on as c le bouquin ..


Message édité par COULIX le 16-01-2003 à 06:03:49
Reply

Marsh Posté le 17-01-2003 à 05:38:54    

En C&C++ les caractères sont des entiers, donc case 'a' marche.
 
Disons, pour commencer:

Code :
  1. #include <vector>
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5. //toutes les informations pour un quidam
  6. struct employee
  7. {
  8. string ID, Name;
  9. double Hours_Worked, Tax, Hourly_Pay;
  10. };
  11. //calculer et afficher la paye
  12. void process(employee& emp) {
  13. double result, extra, withouttax;
  14. if (emp.Hours_Worked > 40 ) {
  15.  extra      = (emp.Hours_Worked-40) * (1.5*emp.Hourly_Pay);
  16.  withouttax = 40*emp.Hourly_Pay + extra;
  17.  result     = withouttax - (withouttax *(emp.Tax/100)); }
  18. else {
  19.  withouttax = emp.Hours_Worked*emp.Hourly_Pay;
  20.  result     = withouttax  -  (emp.Hours_Worked*emp.Hourly_Pay*(emp.Tax/100));
  21. }
  22. //cout...
  23. }
  24. //Saisir et créer un employé
  25. employee input_employee(){
  26. employee e;
  27. cout << "Employee ID                :? "; cin>>e.ID;
  28. cout << "Employee Name              :? "; cin>>e.Name;
  29. cout << "Hours Worked [hours]h[min] :? ";
  30. int hour, minute;
  31. //scanf("%ih%i", &hour, &minute'); //équivalent C
  32. cin >> hour;
  33. cin.ignore(1,'h'); //sauter 1 caractère max, jusqu'à un 'h'
  34. cin >> minute;
  35. e.Hours_Worked= hour + double(minute)/60; //Entrer "3h45" donne bien 3.75 en valeur.
  36. cout << "TAX [%]?                   :? "; cin >> e.Tax;
  37. cout << "Employee hourly pay        :? "; cin >> e.Hourly_Pay;
  38. cin.ignore(); //vider les détritus de l'entrée
  39. return e;
  40. }
  41. int main()
  42. {
  43. vector<employee> employees; //tableau dynamique C++
  44. //...
  45. do {
  46.  employee emp= input_employee();
  47.  employees.push_back(emp); //ajouter au tableau
  48.  cout << "Add an other employee ?" ;
  49.    }
  50. while (cin.get() == 'y');
  51. //...
  52. for(int i=0 ; i<employees.size() ; ++i) {
  53.  cout << "ID           : " << employees[i].ID << "\n" ;
  54.  cout << "HOURS WORKED : " << employees[i].Hours_Worked << "\n" ;
  55.  process(employees[i]);
  56.  cout << endl;
  57.    }
  58. return 0;
  59. }

C'est la version explicte pour comprendre, elle peut être facilement transformée en approche plus objet.


Message édité par Musaran le 19-01-2003 à 05:46:11

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 18-01-2003 à 02:10:42    

Musaran a écrit :

En C&C++ les caractères sont des entiers, donc case 'a' marche.
 
Disons, pour commencer:

Code :
  1. #include <vector>
  2. #include <iostream>
  3. #include <string>
  4. using namespace std;
  5. //toutes les informations pour un quidam
  6. struct employee
  7. {
  8. string ID, Name;
  9. double Hours_Worked, Tax, Hourly_Pay;
  10. };
  11. //calculer et afficher la paye
  12. void process(employee& emp) {
  13. double result, extra, withouttax;
  14. if (emp.Hours_Worked > 40 ) {
  15.  extra      = (emp.Hours_Worked-40) * (1.5*emp.Hourly_Pay);
  16.  withouttax = 40*emp.Hourly_Pay + extra;
  17.  result     = withouttax - (withouttax *(emp.Tax/100)); }
  18. else {
  19.  withouttax = emp.Hours_Worked*emp.Hourly_Pay;
  20.  result     = withouttax  -  (emp.Hours_Worked*emp.Hourly_Pay*(emp.Tax/100));
  21. }
  22. //cout...
  23. }
  24. //Saisir et créer un employé
  25. employee input_employee(){
  26. employee e;
  27. cout << "Employee ID                :? "; cin>>e.ID;
  28. cout << "Employee Name              :? "; cin>>e.Name;
  29. cout << "Hours Worked [hours]h[min] :? ";
  30. int hour, minute;
  31. //scanf("%ih%i", &hour, &minute'); //équivalent C
  32. cin >> hour;
  33. cin.ignore(1,'h'); //sauter 1 caractère max, jusqu'à un 'h'
  34. cin >> minute;
  35. e.Hours_Worked= hour + double(minute)/60; //Entrer "3h45" donne bien 3.75 en valeur.
  36. cout << "TAX [%]?                   :? "; cin >> e.Tax;
  37. cout << "Employee hourly pay        :? "; cin >> e.Hourly_Pay;
  38. cin.ignore(); //vider les détritus de l'entrée
  39. return e;
  40. }
  41. int main()
  42. {
  43. vector<employee> employees; //tableau dynamique C++
  44. //...
  45. do {
  46.  employee emp= input_employee();
  47.  employees.push_back(emp); //ajouter au tableau
  48.  cout << "Add an other employee ?" ;
  49.    }
  50. while (cin.get() == 'y');
  51. //...
  52. for(int i=0 ; i<employees.size() ; ++i) {
  53.  cout << "ID           : " << employees[i].ID << "\n" ;
  54.  cout << "HOURS WORKED : " << employees[i].Hours_Worked << "\n" ;
  55.  process(employees[i]);
  56.  cout << endl;
  57.    }
  58. return 0;
  59. }

C'est la version explicte pour comprendre, elle peut être facilement trandformée en approche plus objet.


rhoooooooooooooooooooo
merchiiiiii

Reply

Marsh Posté le 18-01-2003 à 02:16:59    

c vraiment sympa je comprend mieux now  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed