Jak wypełnić tablice jednowymiarową liczbami losowymi z zakresu 0-10 używając wskaźników?
A jak wypełniłbyś taką tablicę nie wykorzystując wskaźników?
int tb[16];
for(int *p=tb,*k=p+sizeof(tb)/sizeof(*tb);p<k;++p) *p=rand()%11;
#include <iostream>
#include <random>
#include <algorithm>
#include <functional>
using namespace std;
int main() {
default_random_engine generator;
uniform_int_distribution<> distro(0, 10);
int tab[10];
//w przypadku C-tablicy iteratory są wskaźnikami
generate(begin(tab), end(tab), bind(distro, generator));
for(int el: tab){
cout << el << " ";
}
return 0;
}
Ewentualnie pomijając tablicę... kto lubi jednolinijkowce? :D
generate_n(ostream_iterator<int>(cout, " "), 10, bind(uniform_int_distribution<>(0, 10), default_random_engine{}));
co to sizeof?
int tab[25];
mt19937 gen(random_device{}());
uniform_int_distribution<> dis(0,10);
generate(begin(tab), end(tab), bind(dis, gen));
C1000 napisał(a):
Nie używając wskaźników za pomocą pętli for
Genialne :D
Wiadomo, że za pomocą pętli - pokaż kod, jak Ty byś to zrobić mając za zadanie wypełnić zwyczajną tablicę takimi liczbami losowymi, bez jawnych wskaźników - potem pogadamy, jaka będzie różnica ze wskaźnikami.
używając wskaźników?
Nie używając wskaźników
Mam nadzieję, że wystarczy spełnić tylko jeden z tych warunków.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
int tab[9];
for(int i=1; i<=10; i++ )
{
tab[i]=rand()%11;
}
cout<<"tab = ";
for(int i=1; i<=10; i++)
{
cout<<tab[i]<<" ";
}
return 0;
}
Masz tu UB, tablice są indeksowane od 0
, nie od 1
. tab[10]
to odniesienie do jedenastego elementu dziesięcioelementowej tablicy.
Edit: po edicie to nawet 11. element 9-elementowej tablicy. Brawo.
int tab[9];
Tworzysz w ten sposób tablicę tab
o dziewięciu elementach indeksowaną od 0
do 8
(0
, 1
, 2
... 8
), podczas gdy w pętli odnosisz się do tab[10]
, czyli długo już poza obszarem tablicy.
czyli mam zrobić tab[10] ?
Na moment zapomnij o całym tym zadaniu.
Napisz mi program, w którym użytkownik będzie wprowadzał pięć liczb, które będą zapisywane do następnych elementów tablicy.
I tyle - żadnego wyświetlania, żadnego sumowania - tylko tyle, co napisałem.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
int tab[5];
for(int i=1; i<=5; i++)
{
cout<<"wpisz"<<i<<"liczbe"<<endl;
cin>>tab[i];
cout<<" ";
}
return 0;
}
#include <iostream>
using namespace std;
struct data{
static constexpr int good_value = 12345678;
int tab[5];
int good = good_value;
};
int main() {
data dat;
for(int i = 1; i <= 5; ++i){
cin >> dat.tab[i];
}
cout << (dat.good == data::good_value? "Spoczko" : "Powodzenia przy debugowaniu") << endl;
return 0;
}
1 2 3 4 5
Powodzenia przy debugowaniu
Zrób sobie przysługę, zapomnij o zwykłych tablicach i używaj std::array
, używając metody .at()
zamiast operatora indeksowania []
Nie tam bardziej się podoba to: http://ideone.com/gbv1zS
#include <iostream>
using namespace std;
int main()
{
int size=5,tab[5];
for(int i=0;i<=size;++i)
{
tab[i]=i+1;
cout<<i<<endl;
}
return 0;
}
A jak do tego użyć wskaźników ?
Dostałeś odpowiedź 10 godzin temu: http://4programmers.net/Forum/1228170
C1000 napisał(a):
Nie używając wskaźników za pomocą pętli for
To w końcu ze wskaźnikami czy bez?
a czemu koniecznie potrzebujesz tam wskaźniki?
Niikelion napisał(a):
a czemu koniecznie potrzebujesz tam wskaźniki?
Pewnie je pokochał i nie może bez nich żyć :)
Dokładnie tak :D
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(time(NULL));
int tab[100];
int *w;
for(int i=1; i<=10; i++ )
{
tab[i]=rand()%11;
w=&tab[i];
cout<<endl;
cout<<*w<<endl;
}
return 0;
}
a może być takie wypełnienie?
Indeksuj. Cholero. Od zera.
Czy cokolwiek rozumiesz co do ciebie się mówi?
Powiedziano ci na temat kilku błędów - nadał masz z błędami, (poszukaj w tym temacie i popraw)
Podano ci działający kod na wskaźnikach - nadal kombinujesz z indeksami, (poszukaj w tym temacie i przeanalizuj)
Zaczyna mi się wydawać że jakiekolwiek odpowiadanie na twoi posty to bezsensowna strata czasu.