C++ /del

че
Пользователь
Статус
Оффлайн
Регистрация
27 Фев 2021
Сообщения
504
Реакции[?]
67
Поинты[?]
25K
Совсем недавно начал изучать с++ , поэтому не судите строго .
Есть задача , которая должна вывести ромб , с задачей я справился , но теперь есть другое задание - написать эту задачу в 2 цикла ( без вложенных )
В принципе , как сделать это , я +- понимаю , но хотелось бы увидеть примеры от вас .
Спасибо за ответы и понимание .


#include <iostream>
using namespace std;

int main() {
int n = 10;

for (int i = n; i >= 1; i--) {
for (int j = 1; j <= n - i; j++) {
cout << " ";
}
for (int j = 1; j <= 2 * i - 1; j++) {
cout << "*";
}
cout << endl;
}

for (int i = 2; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
cout << " ";
}
for (int j = 1; j <= 2 * i - 1; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}
Two цикл:
#include <iostream>
using namespace std;

int main() {
    int n = 10;

   
    for (int i = n; i >= 1; i--) {
        for (int j = 1; j <= n - i; j++) {
            cout << " ";
        }
        for (int j = 1; j <= 2 * i - 1; j++) {
            cout << "*";
        }
        cout << endl;
    }

 
    for (int i = 2; i <= n; i++) {
        for (int j = 1; j <= n - i; j++) {
            cout << " ";
        }
        for (int j = 1; j <= 2 * i - 1; j++) {
            cout << "*";
        }
        cout << endl;
    }
   
    System("pause");
}
 
Начинающий
Статус
Оффлайн
Регистрация
24 Июл 2018
Сообщения
206
Реакции[?]
12
Поинты[?]
0
Two цикл:
#include <iostream>
using namespace std;

int main() {
    int n = 10;

  
    for (int i = n; i >= 1; i--) {
        for (int j = 1; j <= n - i; j++) {
            cout << " ";
        }
        for (int j = 1; j <= 2 * i - 1; j++) {
            cout << "*";
        }
        cout << endl;
    }


    for (int i = 2; i <= n; i++) {
        for (int j = 1; j <= n - i; j++) {
            cout << " ";
        }
        for (int j = 1; j <= 2 * i - 1; j++) {
            cout << "*";
        }
        cout << endl;
    }
  
    System("pause");
}
Благодарю за ответ и помощь , вся проблема в том , что мне нужен код без вложенных циклов . Но спасибо!
 
че
Пользователь
Статус
Оффлайн
Регистрация
27 Фев 2021
Сообщения
504
Реакции[?]
67
Поинты[?]
25K
Благодарю за ответ и помощь , вся проблема в том , что мне нужен код без вложенных циклов . Но спасибо!
Цикл:
#include <iostream>
using namespace std;

int main() {
    int n = 10;

    for (int i = 1; i <= n; i++) {
        cout << string(n - i, ' '); // Вывести пробелы
        cout << string(2 * i - 1, '*') << endl; // Вывести звезды
    }

    for (int i = n - 1; i >= 1; i--) {
        cout << string(n - i, ' '); // Вывести пробелы
        cout << string(2 * i - 1, '*') << endl; // Вывести звезды
    }

    System("pause");
}
 
Пользователь
Статус
Оффлайн
Регистрация
18 Фев 2022
Сообщения
594
Реакции[?]
100
Поинты[?]
40K
Цикл:
#include <iostream>
using namespace std;

int main() {
    int n = 10;

    for (int i = 1; i <= n; i++) {
        cout << string(n - i, ' '); // Вывести пробелы
        cout << string(2 * i - 1, '*') << endl; // Вывести звезды
    }

    for (int i = n - 1; i >= 1; i--) {
        cout << string(n - i, ' '); // Вывести пробелы
        cout << string(2 * i - 1, '*') << endl; // Вывести звезды
    }

    System("pause");
}
Ты вообще проверяешь код? Высер чатгпт который не воркает
 
Начинающий
Статус
Оффлайн
Регистрация
24 Июл 2018
Сообщения
206
Реакции[?]
12
Поинты[?]
0
Цикл:
#include <iostream>
using namespace std;

int main() {
    int n = 10;

    for (int i = 1; i <= n; i++) {
        cout << string(n - i, ' '); // Вывести пробелы
        cout << string(2 * i - 1, '*') << endl; // Вывести звезды
    }

    for (int i = n - 1; i >= 1; i--) {
        cout << string(n - i, ' '); // Вывести пробелы
        cout << string(2 * i - 1, '*') << endl; // Вывести звезды
    }

    System("pause");
}
Спасибо большое за помощь! Вышел на правильную мысль .
 
Начинающий
Статус
Оффлайн
Регистрация
7 Дек 2022
Сообщения
24
Реакции[?]
5
Поинты[?]
0
I'll
C++:
#include <iostream>
using namespace std;

void f(int n, int i) {
    if (i==n*n) return;
    int r=i/n, c=i%n, x=n-1, h=x/2;
    cout<<(i && !c ? "\n" : "");
    cout<<((r+c-h) * (r+c-2*x+h) * (r-c-x+h) * (c-r-x+h) ? ' ' : '*');
    f(n, i+1);
}
int main() {
int n; cin>>n; f(n,0); return 0; }
линейно-итеративный алгоритм через хвостовую рекурсию
 
ЧВК EB_LAN
Эксперт
Статус
Оффлайн
Регистрация
26 Янв 2021
Сообщения
1,570
Реакции[?]
522
Поинты[?]
185K
I'll
C++:
#include <iostream>
using namespace std;

void f(int n, int i) {
    if (i==n*n) return;
    int r=i/n, c=i%n, x=n-1, h=x/2;
    cout<<(i && !c ? "\n" : "");
    cout<<((r+c-h) * (r+c-2*x+h) * (r-c-x+h) * (c-r-x+h) ? ' ' : '*');
    f(n, i+1);
}
int main() {
int n; cin>>n; f(n,0); return 0; }
линейно-итеративный алгоритм через хвостовую рекурсию
код просто☠☠☠
 
Начинающий
Статус
Оффлайн
Регистрация
14 Июл 2019
Сообщения
103
Реакции[?]
28
Поинты[?]
2K
all in 1 loop:

Код:
#include <iostream>
using namespace std;

int main() {
    int n = 10;

    for (int i = 1 - n; i < n; i++) {
        int spaces = abs(i);
        int stars = 2 * (n - spaces) - 1;

        for (int j = 0; j < spaces; j++) {
            cout << " ";
        }

        for (int j = 0; j < stars; j++) {
            cout << "*";
        }

        cout << endl;
    }

    return 0;
}
to further improve this you could do this however:

Код:
#include <iostream>
#include <string>
using namespace std;

int main() {
    int n = 10;

    for (int i = -n + 1; i < n; i++) {
        int spaces = abs(i);
        int stars = 2 * (n - spaces) - 1;

        string spaceStr(spaces, ' ');
        string starStr(stars, '*');

        cout << spaceStr << starStr << endl;
    }

    return 0;
}
in c++20:

Код:
#include <iostream>
#include <string>
#include <algorithm>
#include <numeric>
#include <vector>
using namespace std;

int main() {
    int n = 10;

    auto print_row = [&n](int i) {
        int spaces = abs(i);
        int stars = 2 * (n - spaces) - 1;
        cout << string(spaces, ' ') << string(stars, '*') << endl;
    };

    vector<int> rows(2 * n - 1);
    iota(rows.begin(), rows.end(), -n + 1);

    for_each(rows.begin(), rows.end(), print_row);

    return 0;
}
 
Последнее редактирование:
OllyDbg
Пользователь
Статус
Оффлайн
Регистрация
24 Дек 2018
Сообщения
301
Реакции[?]
45
Поинты[?]
10K
all in 1 loop:

Код:
#include <iostream>
using namespace std;

int main() {
    int n = 10;

    for (int i = 1 - n; i < n; i++) {
        int spaces = abs(i);
        int stars = 2 * (n - spaces) - 1;

        for (int j = 0; j < spaces; j++) {
            cout << " ";
        }

        for (int j = 0; j < stars; j++) {
            cout << "*";
        }

        cout << endl;
    }

    return 0;
}
to further improve this you could do this however:

Код:
#include <iostream>
#include <string>
using namespace std;

int main() {
    int n = 10;

    for (int i = -n + 1; i < n; i++) {
        int spaces = abs(i);
        int stars = 2 * (n - spaces) - 1;

        string spaceStr(spaces, ' ');
        string starStr(stars, '*');

        cout << spaceStr << starStr << endl;
    }

    return 0;
}
in c++20:

Код:
#include <iostream>
#include <string>
#include <algorithm>
#include <numeric>
#include <vector>
using namespace std;

int main() {
    int n = 10;

    auto print_row = [&n](int i) {
        int spaces = abs(i);
        int stars = 2 * (n - spaces) - 1;
        cout << string(spaces, ' ') << string(stars, '*') << endl;
    };

    vector<int> rows(2 * n - 1);
    iota(rows.begin(), rows.end(), -n + 1);

    for_each(rows.begin(), rows.end(), print_row);

    return 0;
}
ChatGPT:roflanPominki:
 
Похожие темы
Сверху Снизу