fork download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. const int MAX_SIZE_COL = 1000;
  6. const int MAX_SIZE_LINE = 20;
  7.  
  8. void readInput(char textLineParam[][MAX_SIZE_COL + 1], int &charsMaxNoParam,
  9. int &lineParam) {
  10. int charsNo;
  11. while (cin.getline(textLineParam[lineParam], MAX_SIZE_COL + 1)) {
  12. charsNo = strlen(textLineParam[lineParam]);
  13. if (charsNo > charsMaxNoParam) {
  14. charsMaxNoParam = charsNo;
  15. }
  16. ++lineParam;
  17. }
  18. }
  19.  
  20. void trimTrailingStars(char textLineParam[], int &charsNoParam) {
  21. int newCharsNo = charsNoParam;
  22. while (textLineParam[newCharsNo - 1] == '*') {
  23. --newCharsNo;
  24. }
  25. if (newCharsNo < charsNoParam) {
  26. char textLineAux[MAX_SIZE_COL + 1];
  27. textLineAux[0] = '\0';
  28. for (int k = 0; k <= newCharsNo - 1; ++k) {
  29. textLineAux[k] = textLineParam[k];
  30. }
  31. textLineAux[newCharsNo] = '\0';
  32. strcpy(textLineParam, textLineAux);
  33. charsNoParam = newCharsNo;
  34. }
  35. }
  36.  
  37. void alignRight(char textLine[], int charsMaxNo, int charsNo) {
  38. int endPos = charsNo;
  39. for (int j = 0; j < charsMaxNo - charsNo; ++j) {
  40. for (int k = endPos; k >= 0; --k) {
  41. textLine[k + 1] = textLine[k];
  42. }
  43. textLine[0] = '*';
  44. ++endPos;
  45. }
  46. }
  47.  
  48. void processLines(char textLineParam[][MAX_SIZE_COL + 1], int charsMaxNoParam,
  49. int lineParam) {
  50. for (int i = 1; i < lineParam; ++i) {
  51. int charsNo = strlen(textLineParam[i]);
  52. trimTrailingStars(textLineParam[i], charsNo);
  53. alignRight(textLineParam[i], charsMaxNoParam, charsNo);
  54. cout << textLineParam[i] << "\n";
  55. }
  56. }
  57.  
  58. int main() {
  59. char textLine[MAX_SIZE_LINE + 1][MAX_SIZE_COL + 1];
  60. int charsMaxNo = 0, line = 1;
  61. readInput(textLine, charsMaxNo, line);
  62. processLines(textLine, charsMaxNo, line);
  63. return 0;
  64. }
Success #stdin #stdout 0.01s 5300KB
stdin
Acesta*este**
********un****text
***impartit*pe*mai
*multe*linii
stdout
*******Acesta*este
********un****text
***impartit*pe*mai
*******multe*linii