Anmol_1994 Ответов: 2

Измените код C на C++, может ли кто-нибудь помочь


никакой вопрос
никакой вопрос
никакой вопрос
никакой вопрос
никакой вопрос
никакой вопрос
никакой вопрос

Что я уже пробовал:

ничего

Suvendu Shekhar Giri

Поделитесь, что вы пробовали?
Покажите оператор printf, который вы заменили на cout.

jeron1

Отличная работа! Вы только что сделали эту нить бесполезной!

2 Ответов

Рейтинг:
5

Jochen Arndt

Код содержит только два класса C++ : ссылка string-C++ [^] и ссылка cout - C++ [^] .

Для строки он использует только length функция-член и operator[] для доступа к отдельным символам. Таким образом, вы можете изменить аргумент функции с string к const char*. Этот operator[] будет потом еще работать. Чтобы получить длину используйте strlen-ссылка на C++ [^].

Воспользуйся ссылка на printf - C++ [^] для замены cout звонки:

// C++
cout << " " << ++last_entry;
cout << " " << curr_max;
cout << " " << curr_max << " " << curr_max - 1;
cout << endl;
// C
printf(" %d", ++last_entry);
printf(" %d", curr_max);
printf(" %d %d", curr_max, curr_max - 1);
printf("\n");

Прочтите ссылки из моего решения, чтобы понять, как работают функции C и C++.


Рейтинг:
2

CPallini

рождественский подарок:

#include <stdio.h>
#include <string.h>
 
// Prints the minimum number that can be formed from
// input sequence of I's and D's
void PrintMinNumberForPattern(const char * arr)
{
    // Initialize current_max (to make sure that
    // we don't use repeated character
    int curr_max = 0;
 
    // Initialize last_entry (Keeps track for
    // last printed digit)
    int last_entry = 0;
 
    int j;
 
		size_t length = strlen(arr);

    // Iterate over input array
		int i;
    for (i=0; i<length; i++)
    {
        // Initialize 'noOfNextD' to get count of
        // next D's available
        int noOfNextD = 0;
 
        switch(arr[i])
        {
        case 'I':
            // If letter is 'I'
 
            // Calculate number of next consecutive D's
            // available
            j = i+1;
            while (arr[j] == 'D' && j < length)
            {
                noOfNextD++;
                j++;
            }
               
            if (i==0)
            {
                curr_max = noOfNextD + 2;
 
                // If 'I' is first letter, print incremented
                // sequence from 1

								printf(" %d", ++last_entry);
								printf(" %d", curr_max);
 
                // Set max digit reached
                last_entry = curr_max;
            }
            else
            {
                // If not first letter
 
                // Get next digit to print
                curr_max = curr_max + noOfNextD + 1;
 
                // Print digit for I
                last_entry = curr_max;
								printf(" %d", last_entry);
            }
 
            // For all next consecutive 'D' print 
            // decremented sequence
						int k;
            for (k=0; k<noOfNextD; k++)
            {
								printf(" %d", --last_entry);
                i++;
            }
            break;
 
        // If letter is 'D'
        case 'D':
            if (i == 0)
            {
                // If 'D' is first letter in sequence
                // Find number of Next D's available
                j = i+1;
                while (arr[j] == 'D' && j < length)
                {
                    noOfNextD++;
                    j++;
                }
 
                // Calculate first digit to print based on 
                // number of consecutive D's
                curr_max = noOfNextD + 2;
 
                // Print twice for the first time

								printf(" %d %d", curr_max, (curr_max -1));
 
                // Store last entry
                last_entry = curr_max - 1;
            }
            else
            {
                // If current 'D' is not first letter
 
                // Decrement last_entry
								printf(" %d", last_entry -1);
                last_entry--;
            }
            break;
        }
    }
		printf("\n");
}


int main()
{
	PrintMinNumberForPattern("IIDDIIDDDDD");
	return 0;
}