Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 21 cze 2026, o 03:31


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 12 gru 2015, o 09:50 
Offline
Nowy

Dołączył(a): 12 gru 2015
Posty: 4
Pomógł: 0

Bardzo proszę o pomoc w rozwiązaniu zadania z pracowni. Na zajęciach opracowaliśmy następujący program:

#define N 20
#define M 8
#define L 4
#include <time.h>

void histogram(int dane[], int l_dane, int wyniki[], int l_wyniki)
{
int i;

for (i=0; i<l_wyniki; i++)
wyniki[i]=0;
for (i=0; i<l_dane; i++)
wyniki[dane[i]]++;
}

int main()
{
int a[N], b[M], k, i, sum=0;
srand(time(NULL));

for (k=0; k<N; k++)
a[k]=rand()%M-rand()%L;
for (k=0; k<N; k++)
printf("%3d", a[k]);

histogram(a, N, b, M);

for(i=0; i<M; i++)
sum += b[i];

printf("\nHistogram\n\nWartosc: ");

for (k=0; k<M; k++)
printf("%3d", k);

printf("\n\nCzestosc: ");

for (k=0; k<M; k++)
printf("%3d", b[k]);

printf("\n");

for (k=0; k<M; k++)
{
printf("\n");

for (i=0; i<b[k]; i++)
printf("*");
}

printf("\nSuma = %d", sum);
return 0;
}

Należy ten program uzupełnić w ten sposób, aby powstawał poprawny histogram dla dowolnego przedziału liczb losowych. Tablica ma być wypełniona za pomocą sumy lub różnicy 2 liczb losowych. Należy zidentyfikować losowy przedział i dla wyników wytworzyć histogram. Ktoś podpowiedział mi, aby zastosować parametry Max i Min i dodatkową funkcję(?).

Rozwiązanie zadania jest na 5, a ja nie mam pojęcia jak to zrobić. Bardzo proszę o pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2015, o 10:29 
Offline
Użytkownik

Dołączył(a): 27 lis 2015
Posty: 36
Zbananowany użytkownik

Pomógł: 5

Wklej poprawnie program. Nawet to co wkleiłeś jest do poprawy.
Jaki dokładnie masz problem? Nie rozumiesz jak działa funkcja? W zasadzie w samym programie masz już 80% rozwiązania :-)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2015, o 15:33 
Offline
Nowy

Dołączył(a): 12 gru 2015
Posty: 4
Pomógł: 0

Dziękuję za odpowiedź. Sprawdziłem kilka razy. Tak został napisany przez profesora na zajęciach (bez dodawania czegokolwiek) i ten program miał zostać zmodyfikowany(?). Nie za bardzo ogarniam co mam w tym zadaniu zrobić i jak losuje się za pomocą sumy lub różnicy. Przepisałem treść tak, jak podał i program tak, jak podał na zajęciach. Zaraz zobaczę to, co napisałeś



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2015, o 15:40 
Offline
Użytkownik

Dołączył(a): 27 lis 2015
Posty: 36
Zbananowany użytkownik

Pomógł: 5

Ja nic nie napisałem. Poprawiłem tylko program aby był poprawny. Twój nie był (nie wiem profesora to czy nie, dość że nie był).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2015, o 15:44 
Offline
Nowy

Dołączył(a): 12 gru 2015
Posty: 4
Pomógł: 0

Nie wiem, nadal nie działa jak powinien (losuje liczby ujemne, a suma wychodzi ~ 3000)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2015, o 15:53 
Offline
Użytkownik

Dołączył(a): 27 lis 2015
Posty: 36
Zbananowany użytkownik

Pomógł: 5

O... dzięki... w końcu napisałeś czego nie umiesz! Linia 25. rand() zwraca liczby z zakresu 0 do RAND_MAX a to wartości dość spore. Stąd nie dziwne że wynikiem jest liczba ujemna.
http://en.cppreference.com/w/c/numeric/random
Poczytaj i wróć z kodem jak już coś SAM zrobisz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2015, o 16:28 
Offline
Nowy

Dołączył(a): 12 gru 2015
Posty: 4
Pomógł: 0

Samo losowanie nie jest najważniejsze, to prawdopodobnie zrobię sam. Potrzebuję wiedzieć, jak zrobić histogram, który będzie dopasowywał się do zakresu liczb wylosowanych (bez różnicy czy to będzie 5 czy 100), a nie mogę go ograniczyć do parametru stałego (np. jak wylosuję z zakresu od 0 do 3 ma pokazać 0=4; 1=4; 2=4; 3=4; a nie 0=4; 1=4; 2=4; 3=4; 5=0; 6=0; 7=0; 8=0...)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO