Member 13502043 Ответов: 3

Как удалить запятую после последнего числа/выходного цикла в C++


когда я ввожу данные
а = 1
b = 20

мой выход всегда таков :
"3 , 9 , 15 , ."

но я хотел вот чего :
"3 , 9 , 15."

PS : извините за мой плохой английский, я надеюсь, что вы, ребята, понимаете
мне просто нужен пример или решение этой программы

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

int a,b;

cout<< "Number 1 = ";
cin>>a;
cout<< "Number 2 = ";
cin>>b;

if(a<=b)
{
    for(a;a<=b;a++)
    {
        if(a%3==0&&a%2!=0)
        {
            cout<<a;
        }
        if(a<b&&a%3==0&&a%2!=0)
        {
            cout<< " , ";
        }
        else if(a==b)
        {
            cout<< ".";
        }

enhzflep

Хотя я вижу, что вы уже достигли решения, есть другой способ думать о проблеме.
Никто из тех, кого я встречал, на самом деле не ставит запятые, когда записывает их в список. Они ставят запятые перед числами, которые не являются первыми в списке.

Итак, если вы рассматриваете цикл for, который выводит значение счетчика циклов, то вы делаете это так, чтобы вывести запятую перед числом, при условии, что счетчик циклов не содержит своего начального значения. Как только все цифры будут напечатаны, выплюните полную остановку, и все готово.

Мой код улучшился, как только я посмотрел на проблему с этой другой точки зрения. :)

3 Ответов

Рейтинг:
1

Patrice T

Сначала немного проанализируем:
". "Будет всегда печататься и всегда будет последним. Что означает упрощение

if(a<=b)
{
    for(a;a<=b;a++)
    {
        if(a%3==0&&a%2!=0)
        {
            cout<<a;
            if(a<b)
            {
                cout<< " , ";
            }
        }
    }
    cout<< ".";
}

Проблема в вашем коде заключается в том, что b не обязательно будет печататься.
Вокруг этого есть много решений
- если вы печатаете запятую после номера, вам нужно убедиться, что будет следующий номер для печати.
- если игрушка печатает запятую перед числом, то нужно убедиться, что она не первая.


Рейтинг:
0

Rick York

Вы могли бы написать логику if-else следующим образом :

if( ( a % 3 == 0 ) && ( a % 2 != 0 ) )
{
    cout << a;
    if( a == b )
        cout << ".";
    else
        cout << " , ";
}


Рейтинг:
0

Member 13502043

Спасибо ребята но я уже получил свое решение чтобы поставить

char const*sep = ""

....
for(a;a<=b;a++)
    	{
		if(a%3 == 0 && a%2 != 0)
    		{		   
       		        cout << sep << a; 
       			sep = ", ";
    		}
    	}