1 Востаннє редагувалося Volodya (18.12.2012 20:33:46)

Тема: Двовимірний масив та функції. Допоможіть розв'язати задачу будь ласка.

Потрібно написати в Win 32 console application, source file.
У двовимірному масиві записані слова, що представляють собою послідовність цифр, що завершуються 0. Необхідно роздрукувати слова через кому, взявши надрукований рядок у дужки. Довжина друкованого рядка 60 символів. Добування слова оформити у вигляді функції.
     Наприклад:
      вихідні дані - 123023402303450
                                         234450234567010
                                         234455677670450
       результат - (123,234,23,345)(23445,234567,1)(23445567767,45)

Напрацювань немає тому, що нерозумію як реалізувати.
Ось додаткова інформація

Post's attachments

Текстовый документ (2).txt 3.73 kb, 486 downloads since 2012-12-18 

2 Востаннє редагувалося Volodya (20.12.2012 22:07:08)

Re: Двовимірний масив та функції. Допоможіть розв'язати задачу будь ласка.

Вона має працюавати у win 32 application, source file
У двовимірному масиві записані слова, що представляють собою послідовність цифр, що завершуються 0. Необхідно роздрукувати слова через кому, взявши надрукований рядок у дужки. Довжина друкованого рядка 60 символів. Добування слова оформити у вигляді функції.
     Наприклад:
      вихідні дані - 123023402303450
                                         234450234567010
                                         234455677670450
       результат - (123,234,23,345)(23445,234567,1)(23445567767,45)

#include <iostream>
using namespace std;
void Input (int, int, int **)
void Output (int, int, int **)
char Ryadok (int, int, int **)
 void Input (int n, int m, int ** a);
 {
  for (int i = 0; i < n; i++)
   for (int j = 0; j < m; j++)
    {
     cout << "a["<< i <<"]["<< j <<"]";
     cin >> a[i][j];
  }
 }
 void Output (int n, int m, int ** a);
 {
  for (int i = 0; i < n; i++)
   for (int j = 0; j < m; j++)
   {
    cout << a[i][j];
    cout << endl;
   }
 }
 char Ryadok(int n, int m, int ** a);
 {
  for (int i = 0; i < n; i++)
  {
   for (int j = 0; j < m; j++)
   {
    char s[60];
    if (s[60] == ' ')
    s[60] = ',';
    return s[60];
   }
  }
 }
void main ()
{
 int n, m;
 cin >> n >> m;
 int ** a = new int * [n];
 for (int i = 0; i < n; i++)
 a[i] = new int[m];
 Input (n, m, a);
 Output (n, m, a);
 char ryadok = Ryadok (n, m, a);
 cout << ryadok;
}

3 Востаннє редагувалося Ярослав (24.11.2016 22:35:27)

Re: Двовимірний масив та функції. Допоможіть розв'язати задачу будь ласка.

#include <iostream> // бібліотеки для вводу/виводу
#include <string> // бібліотека для роботи із типом string
#include <cctype> // бібліотека для функції isdigit()

const int MAX_SIZE=60; // Максимальний розмір для рядка вводу
const int MAX_RESULT_SIZE=1024; // Максимальний розмір нового рядка

void string_transform(std::string &input); // Функція, що змінює рядок

int main()
{
  int i = 0;
  std::string input;
  std::string result;
  std::cout << "Please, enter your string and press Enter, or just press Enter to exit." << std::endl;
  
  do {
    getline (std::cin, input);
    if (input.length() > MAX_SIZE) {
      std::cout << "Your string is too long. The maximum size is " << MAX_SIZE << " characters." << std::endl;
      std::cout << "Please, try again or press Enter to exit." << std::endl;
      continue;
    }
    if ( (result.length() + input.length()) > MAX_RESULT_SIZE) {
        std::cout << "Sorry, but there is no inaf space, try shorter string or press Enter to exit." << std::endl;
        continue;
    }
    if (input.length() == 0) {
        break;
    }
    
    string_transform(input);
    
    result += input;
    
  } while (input != "");
  
  std::cout << result << std::endl;
  
}

void string_transform(std::string &input) {    
    int i;
    std::string buffer;
  
    buffer = "";
    buffer += "(";
    
    for (i = 0; i < input.length(); i++) {
        if (isdigit(input[i]) && input[i] != '0') {
            buffer += input[i];
        } else if (input[i] == '0') {
            buffer += ',';
        }
    }
    
    buffer += ')';
    
    for (i = 0; i < buffer.length(); i++) {
        if (buffer[i] == '(') {
            while (buffer[i+1] == ',') { // erase commas after left brace
                buffer.erase(i+1, 1);
            }
        }
        if (buffer[i] == ',' && buffer[i+1] == ',') {
            while (buffer[i+1] == ',') { // erase multiple commas
                buffer.erase(i+1, 1);
            }
        }
        if (buffer[i] == ',' && buffer[i+1] == ')') {
            buffer.erase(i, 1); // erase commas before right brace
        }
    }
    
    input.clear();
    input = buffer;
}