Wypełnianie tablicy

Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

Wypełnianie tablicy

Post autor: Fristajler »

To ja pozwolę się podpiąć do tego tematu. Napisałem programik, którego zadaniem jest przechwycenie od uzytkownika elementów tablicy jednowymiarowej (maksymalnie użytkownik ma wprowadzic 20 elementow do tablicy). Następnie program ma odwrócić te elementy i wyświetlić. Będę wdzięczny za pomoc w poprawieniu algorytmu, bo nie działa mi:

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
 printf("WPROWADZ PONIZEJ ELEMENT TABLICY JEDNOWYMIAROWEJ 

");
 int tab[20];
 int element;
 int rozm=sizeof(tab)/sizeof(int);
 int i,j;
 int temp;
 for (element=0;i<rozm;element++);
 {
     printf("tab[%d]: ",element);
     scanf("%d 
",tab[element]);
 }
 for(i=0;i<(rozm-1)/2;i++)
 {
   temp=tab[i];
   tab[i]=tab[rozm-1-i];
   tab[rozm-1-i]=temp;
 }
 printf("Elementy tablicy w przestawionej kolejnosci: ");
 for(j=0;j<rozm;j++) printf("%d ",tab[j]);
 printf("

");
 return 0;
 system("PAUSE");
 return EXIT_SUCCESS;

}
Ostatnio zmieniony 11 lis 2009, o 20:05 przez Szemek, łącznie zmieniany 1 raz.
Powód: To ja pozwolę sobie podzielić ten temat.
peterp
Użytkownik
Użytkownik
Posty: 30
Rejestracja: 27 sie 2008, o 13:29
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 3 razy
Pomógł: 5 razy

Wypełnianie tablicy

Post autor: peterp »

Mnóstwo błędów w kodzie:
1) za dużo nadmiarowych zmiennych (i, j)
2) Niepotrzebna zmienna rozm - nieczytelny zapis: int rozm=sizeof(tab)/sizeof(int);
3) Błąd w pętli: for (element=0;i<rozm;element++); i nie jest zainicjalizowane, więc może przybrać dowolną wartość. Poza tym wewnątrz pętli nie ulega zmianie, więc albo zawartość pętli nigdy się nie wykona, albo program nigdy z niej nie wyjdzie. Średni po pętli spowoduje, że wyrażenia w klamrach poniżej wykonają się raz.
4) Błąd przy wczytywaniu danych z wejścia (pominąłeś & w funkcji scanf)
5) Błąd w warunku pętli: for(i=0;i<(rozm-1)/2;i++). Ta pętla wykona się tylko 9 razy (dla i = od 0 do 8), a powinna 10.
6) Wszystko co znajduje się po instrukcji return (po tej pierwszej) nie wykona się.
Na oko tyle. Więcej nie chciało mi się szukać.
Może ten kod Ci rozjaśni:

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>

#define ROZM 20

int main(void)
{
    printf("WPROWADZ PONIZEJ ELEMENT TABLICY JEDNOWYMIAROWEJ

");
    int tab[20]={0}, temp;
    for (int i=0; i<ROZM; i++)
    {
        printf("tab[%d]: ", i);
        scanf("%d", &tab[i]);
    }
    for(int i=0; i<ROZM/2; i++)
    {
       temp=tab[i];
       tab[i]=tab[ROZM-1-i];
       tab[ROZM-1-i]=temp;
    }
    printf("Elementy tablicy w przestawionej kolejnosci: ");
    for(int i=0; i<ROZM; i++) printf("%d ", tab[i]);
    printf("

");
    system("PAUSE");
    return EXIT_SUCCESS;
}
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

Wypełnianie tablicy

Post autor: Fristajler »

Dzięki serdeczne za pomoc. To mi w zupełności wystarczy
ODPOWIEDZ