c++ jakiś prostrzy kod programu

0

Witam!
Mam takie zadanko: Utworzyć tablice n-elementową zawierająca następujące elementy: 1,1,2,1,2,3,1,2,3,4,1,2,3,4,5,1,2,...

Moje rozwiązanie:

#include<iostream>
using namespace std;

int main()
{
    unsigned int n, a=0, b=0, c=0, x;
    cin>>n;
    int tab[n];
    for(a=0; a<n; a++)
     { 
      c++; tab[a]=c;
     }
    for(x=0;x<n;)
    {
     a=0;
     b++;
       for(int y=0; y<b; y++)
         if(x<n)
          {        
           cout<<tab[a]<<", ";
           a++;
           x++;
          }
     }
    system("pause");
} 

Może ma ktoś pomysł na prostrzy kod, zawierająca mniej linii?

Wesołych Świąt

0
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int>tab;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=i;j++)
            tab.push_back(j);
    for(int i=0;i<tab.size();i++)
        cout<<tab[i]<<" ";
   return 0;
}

Na przykład tak..

1

@sid90 twoje rozwiazanie jest niezgodne z poleceniem, bo będziesz miał w swoim wektorze znacznie więcej elementów ;)

#include<iostream>
using namespace std;

int main()
{
    int n,i=0,x=0;
    cin>>n;
    int* tablica = new int[n];
    while(x<n)
    {
        i++;
        for(int j=1;j<=i && x<n;j++)
            tablica[x++]=j;
    }
    for(int i=0;i<n;i++)
        cout<<tablica[i]<<" ";
    delete[] tablica;
    return 0;
}

0

aha:) Już widzę.. za szybko przeczytałem treść.

0

Dzięki Shalom:)

0

Mam jeszcze jedno pytnie, nie wiem czy dobrze myśle... Od razu zazanaczam, że nie znam tych składni i mogę się mylić:

*int tablica = new int[n]; ** //informujemy kompilator, że zmienna tablica będzię wskazywała na dane typu int i alokujemy do niej nową pamięć o romiarze tablicy jednowymiarowej wielkości int

delete[] tablica; //zwalnia alokowaną pamięć

Jeszcze jedno pytanie: jakie mają wartość przy pisaniu programu?

0

Pytam jakie znaczenie przy pisaniu programu, bo można go napisać beż użycia tych składni.

Za odpowiedź dziękuję!

0

Aktualny standard C++ nie przewiduje tworzenia tablic o długości określonej przez zmienne w taki sposób (czyli na stosie):

int tab[n];

Jeśli masz taką tablicę to należy ja tworzyć za pomocą new.

0

Okey, będę pamiętał!

Rozumiem, że dobrze tłumacze sobie ich znaczenie i działanie w programie?

0

Tak, mniej więcej tak.

0

Tak nawiązując do nazwy tematu: stopień wyższy od przymiotnika prosty to PROSTSZY! (prostszego, prostszemu, prostszych, prostszym, prostszymi, prostsza, prostszą, prostsze, prostszej).

1 użytkowników online, w tym zalogowanych: 0, gości: 1