• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

2. Wylosuj liczbę k z przedziału [1,10]. Utwórz jednowymiarową tablicę dynamiczną zawierającą k elementów typu float.

Cloud VPS
0 głosów
1,590 wizyt
pytanie zadane 2 grudnia 2015 w C i C++ przez martix3 Użytkownik (690 p.)
edycja 2 grudnia 2015 przez Eryk Andrzejewski

2. Wylosuj liczbę k z przedziału [1,10]. Utwórz jednowymiarową tablicę dynamiczną zawierającą k elementów typu float.

#include<iostream>
#include<stdlib.h>

int main()
{

int i, k;
float *p;

k=(rand()%10)+1;
p = new folat [k]; //alokacja pamieci

for(i=0; i<k ;i++)
{
    std::cin>>p[i];
}

delete[] p; // zwolnienie pamieci
p = NULL; ; return 0;

}

Podpowie mi ktoś czy dobrze wykonałam to zadanie?

4 odpowiedzi

0 głosów
odpowiedź 2 grudnia 2015 przez endo93 Użytkownik (720 p.)
edycja 2 grudnia 2015 przez endo93

Co mamy zrobić z tym kodem? Powinnaś podać jakąś informacje, co nie trybi, albo co chciałabyś się dowiedzieć. Potrafimy pisać w C++, ale nie potrafimy jeszcze czytać w myślach cheeky.

komentarz 2 grudnia 2015 przez martix3 Użytkownik (690 p.)
Może jeszce nie wyświetliło, bo wkleiłam kod i zapomniałam dodać pytania, ale od razu edytowałam;) Po prostu chciałam się spytać czy dobrze zadanie wykonałam.
komentarz 2 grudnia 2015 przez endo93 Użytkownik (720 p.)
edycja 2 grudnia 2015 przez endo93

No dobrze. Masz literówkę w linii z alokacją pamięci. Poza tym wygląda OK. Powinnaś tylko trochę popracować nad estetyką smiley.

komentarz 2 grudnia 2015 przez niezalogowany
@endo93 - nie "powinieneś", tylko powinnaś ;) To samo z "chciałbyś" :)
komentarz 2 grudnia 2015 przez endo93 Użytkownik (720 p.)

Auć! Przepraszam bardzo blush. Pod Linuxem śmiga ten kod, ale warto w razie czego doincludować "time.h" i użyć przed losowaniem "srand(time(NULL));". Bez tego nie będzie losował, tylko będzie podawał cały czas tę samą liczbę. Pozdrawiam.

komentarz 2 grudnia 2015 przez niezalogowany
@endo93 - nie srand(rand()), tylko srand(time(NULL)) :D No chyba, że takie rozwiązanie jest na Linuxie (ale chyba nie jest ;)).
komentarz 2 grudnia 2015 przez endo93 Użytkownik (720 p.)

Co ja napisałem!! Racja, poprawiłem już surprise.

0 głosów
odpowiedź 2 grudnia 2015 przez Porcupine Nałogowiec (31,560 p.)

Jak wstawiasz kod korzystaj ze znaczników [code] ... ;)

@EDIT

Z takich uwag: 

1) Nie "folat", a float... Nawet nie wkleiłaś tego do jakiegoś IDE coby składnie podświetlał... 

2) Zmienną i możesz zadeklarować bezpośrednio w pętli for :
 

for (int i = 0; i < k; i++)

3) Popraw entery, tabulacje, spacje itd. bo trochę razi po oczach :(

Pozdrawiam,

0 głosów
odpowiedź 2 grudnia 2015 przez niezalogowany
No, brakuje paru rzeczy, takich jak srand(time(NULL)) wywołane na początku (potrzebne do rand(), żeby na początku pobrać czas, do tego trzeba zainkludować bibliotekę time.h) i jeszcze dwa średniki po p=NULL (swoją drogą, to ta linijka nie jest raczej potrzebna, wskaźnik wtedy się ustawia na NULL, czyli na nic, czyli że nie wiem po co to jest :)), int i możesz zadeklarować w pętli for, czyli tak for(int i=0;...). A tak poza tym to program spełnia swoją funkcję i powinien działać :)

Edit: słuszna uwaga endo93, literówka w alokacji dynamicznej, nie folat, tylko float ;) I tak jak powiedział, powinnaś pisać troszkę staranniej, albo po skończeniu przejrzeć kod jeszcze raz, żeby upewnić się, że nie ma żadnych błędów "ortograficznych" ;)
0 głosów
odpowiedź 2 grudnia 2015 przez Radfler VIP (101,030 p.)

Prawie dobrze:

1. Użyj std::srand(std::time(nullptr)) na początku programu (inicjalizuje ziarno generatora), oraz dołącz <ctime>,

2. new float[k] nie new folat[k],

I parę uwag:

1. W C++ jest nagłówek <cstdlib>  nie <stdlib.h>,

2. Jak już to std::rand nie rand,

3. Możesz wykorzystać ficzer z C++11: zamiast NULL możesz użyć lepszego nullptr,

4. Linijka return 0; nie jest potrzebna (tym razem proszę bez dyskusji na ten temat).

komentarz 3 grudnia 2015 przez niezalogowany
No, chyba wszystkie funkcje jakie używam są  z std (bo oprócz sf, to żadnych innych przestrzeni nie używam), więc wystarczy, że bym dodał przedrostek std:: do każdej bibliotecznej funkcji. Chociaż nie, bo na przykład cout i cin nie są funkcjami... Hm, no chyba rzeczywiście trzeba to wszystko spamiętać...
komentarz 3 grudnia 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Ale chociażby chciałbyś sobie zaincludować jakąś amatorsko napisaną biblioteczkę, napisaną w C. Jako, że nie było tam klasy string, ktoś postanowił sobie taką samemu napisać. Teraz dołączasz ją do swojego projektu, piszesz using namespace std i co teraz? Mamy dwie różne klasy o nazwie string :)
komentarz 3 grudnia 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
A poza tym, jak sądzisz - po co wprowadzono przestrzenie nazw? Żeby programista musiał więcej pisać, czy po coś jeszcze? :D
komentarz 3 grudnia 2015 przez niezalogowany
No wiem, ale dopóki nie kombinuję z bibliotekami i przestrzeniami, to nic się nie stanie :) Dobra, morał: nie warto używać using namespace przez to, że czasem niewiadomo co jest gdzie, ale jeśli ktoś nie używa więcej przestrzeni, to czemu nie. Chyba koniec tematu :)
komentarz 3 grudnia 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Ja już się tam od using odzwyczaiłem :D

Podobne pytania

0 głosów
1 odpowiedź 769 wizyt
pytanie zadane 29 lutego 2016 w C i C++ przez Pixel040 Gaduła (3,100 p.)
+1 głos
1 odpowiedź 233 wizyt

93,453 zapytań

142,448 odpowiedzi

322,717 komentarzy

62,830 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...