Dlaczego wyświetlają się śmieci na końcu tablicy?

Odpowiedz Nowy wątek
2015-01-09 21:03
0
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int *tablica1, *tablica2,*tabliczka, n,m,k,i;

    printf("Podaj liczbe elementow pierwszej tablicy: ");
    scanf("%d",&n);

    printf("Podaj liczbe elementow drugiej tablicy: ");
    scanf("%d",&m);

    k = m + n;
    tablica1 = malloc(n * sizeof(int));
    tablica2 = malloc(m * sizeof(int));
    tabliczka = malloc(k * sizeof(int));

    for(i = 0; i < n; i++)
    {
        tablica1[i] = rand() % 100 + 1;
    }
    for(i = 0; i < m; i++)
    {
        tablica2[i] = rand() % 100 + 1;
    }

    printf("\nLiczby z pierwszej tablicy: ");
    for(i = 0; i < n; i++)
    {
        printf("%d ",tablica1[i]);
    }

    printf("\n\nLiczby z drugiej tablicy: ");
    for(i = 0; i < n; i++)
    {
        printf("%d ",tablica2[i]);
    }

    printf("\n\nLiczby z pierwszej i drugiej tablicy: ");
    for(i = 0; i< k; i++)
    {
        if(i == n)
        {
            tabliczka[i] = tablica2[i - n];
        }
        if(i < n)
        {
            tabliczka[i] = tablica1[i];
        }
        printf("%d ",tabliczka[i]);
    }

    return 0;

}

Dlaczego na koniec tablicy o nazwie tabliczka wyświetlają się śmieci ?

Pozostało 580 znaków

2015-01-09 21:05
1

No a gdzie masz sytuację że i>n? Co się wtedy wg ciebie wypisuje? Bo wg mnie wypisujesz wtedy "śmieci" z tablicy "tabliczka"...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-09 22:12
0

Już poprawiłem dzięki.A kod ogółem dobrze wygląda ?

Pozostało 580 znaków

2015-01-09 22:13
0

Nie i totalnie nie rozumiem po co ci ta trzecia tablica. O braku zwolnienia pamięci nawet nie wspominam...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-09 22:20
0

A co jest nie tak ? Chciałem dwie tablice w jedną złączyć.

Pozostało 580 znaków

2015-01-09 22:24
0

To przydziel najpierw pamięć dla "sumarycznej" tablicy po czym wczytaj do odpowiednich jej części.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-09 22:27
0

Nie bardzo rozumiem, można jaśniej ;p ? Bo najpierw chcę te dwie pierwsze tablice zapełnić. To jak wczytać coś do trzeciej tablicy jak jeszcze nie będzie zapełnionej drugiej i trzeciej tablicy ?

edytowany 1x, ostatnio: nowicjusz35, 2015-01-09 22:32

Pozostało 580 znaków

2015-01-09 22:35
0
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
  {
   int *tab,*ptr,*end;
   unsigned sizeA,sizeB;
   srand(time(NULL));
   printf("Podaj liczbe elementow pierwszej tablicy: ");
   scanf("%u",&sizeA); 
   printf("Podaj liczbe elementow drugiej tablicy: ");
   scanf("%u",&sizeB);
   tab=(int*)malloc((sizeA+sizeB)*sizeof(int));
   for(ptr=tab,end=ptr+sizeA;ptr<end;++ptr) *ptr=rand()%100+1;
   for(end=ptr+sizeB;ptr<end;++ptr) *ptr=rand()%100+1;
   printf("Liczby z pierwszej tablicy: ");
   for(ptr=tab,end=ptr+sizeA;ptr<end;++ptr) printf("%d ",*ptr);
   printf("\nLiczby z drugiej tablicy: ");
   for(end=ptr+sizeB;ptr<end;++ptr) printf("%d ",*ptr);
   printf("\nLiczby z pierwszej i drugiej tablicy: ");
   for(ptr=tab,end=ptr+sizeA+sizeB;ptr<end;++ptr) printf("%d ",*ptr);
   printf("\n");
   free(tab);
   return 0;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Takie pętle są lepsze od moich ? - nowicjusz35 2015-01-09 22:45
Nie są ani trochę szybsze. - Endrju 2015-01-09 23:11

Pozostało 580 znaków

2015-01-09 22:49
0

Dlaczego unsigned a nie int ?

Może głupie pytanie ale w pracy programiści właśnie piszą take pętle jakie Ty napisałeś ? Bo trochę ciężko je zrozumieć dla mnie.

edytowany 1x, ostatnio: nowicjusz35, 2015-01-09 22:51
Szczególnie "w pracy" się tak nie pisze. - Endrju 2015-01-09 23:11

Pozostało 580 znaków

2015-01-09 22:57
0

Dlaczego unsigned - czy wyobrażasz sobie tablicę ujemnej długości?
Wszystko zależy gdzie, kiedy i w którym miejscu, przy wprowadzeniu lub wyświetleniu na ekran raczej nie, bo oszczędzony czas jest bardzo małym ułamkiem tego co zżerają cin/cout z tym że w pracy nie używa się cin/cout od ładnych 20 lat (jak nie więcej).


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
to co teraz się używa zamiast cin/cout ? - nowicjusz35 2015-01-09 23:02
GUI - czyli wyświetlanie graficzne ? Ale to pewnie dużo kodu trzeba napisać. - nowicjusz35 2015-01-09 23:04

Pozostało 580 znaków

2015-01-09 23:05
0

A jeszcze spytam czy ten mój kod jest w ogóle beznadziejny ? Zapomniałem dodać zwolnienia pamięci.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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