Witam! Muszę napisać program, który wyrzuca wybrany element z tablicy. Napisałem, ale coś w nim nie działa. Proszę o wskazanie błędu.
#include
void tablica(int t[], int c, int d);
int main(void)
{
int a,b, i;
int tab[100];
printf("Podaj liczbe elementow, ktore chcesz wpisac do tablicy\n");
scanf("%d", &a);
printf("Podaj numer elementu tablicy, ktory ma nie byc wyswietlany\n");
scanf("%d", &b);
printf("\n\n");
if (a<100 && b<=a)
{
for (i=0; i
{
printf("Wpisz wartosc %d elementu tablicy\n", i+1);
scanf("%d", &tab[i]);
fflush(stdin);
}
printf("\n\nTak wyglada Twoja tablica po usunieciu %d elementu\n", b);
for (i=0; i
{
tablica(tab,b,a);
printf("%d \t", tab[i]);
}
}
else printf("Chcesz wpisac zbyt duzo elementow. Element, który chcesz wyciac nie jest zapisany w tablicy. Sprobuj jeszcze raz");
system("PAUSE");
return 0;
}
void tablica(int t[], int c, int d)
{
int temp;
temp=t[c];
t[c]=t[c-1];
t[c-1]=temp;
}
[/code]
To może by tak dokładna treść zadania? Z wszystkimi ograniczeniami i założeniami, twoje “wyrzuca z tablicy” można różnie zrozumieć. A samo usuwanie elementu z tablicy można zrobić na wiele sposobów.
Ymmm… jeszcze jedno… to ma być napisane w czystym ‘C’ tzn nie pomyliłeś C a C++?
Ma być napisane w czystym C. A polecenia nie było jednoznacznego. Brzmiało mniej więcej tak. “Program z zastosowaniem tablicy w funkcji. Wpisz do tablicy dowolną ilość elementów, nie większą niż 100. Wyświetl na ekranie wszystkie elementy tabeli, bez elementu wybranego przez użytkownika. Macie 15min.”
void tablica(int t[], int c, int *d)
{
t[c]=t[*d-1];
*d--;
}
Musisz po prostu przenieść ostatni element tablicy w miejsce usuwanego elementu i zmniejszyć liczbę elementów tablicy. Poza tym popraw dalszą część kodu
printf("\n\nTak wyglada Twoja tablica po usunieciu %d elementu\n", b);
for (i=0; i
{
tablica(tab,b,a);
printf("%d \t", tab[i]);
}
Po wywołaniu funkcji tablica(tab,b,&a) wartość zmiennej a będzie o 1 mniejsza, więc potem w pętli nie musisz stosować zapisu i
tablica(tab,b,&a);
printf("\n\nTak wyglada Twoja tablica po usunieciu %d elementu\n", b);
for (i=0; i
{
printf("%d \t", tab[i]);
}[/code]
extern "C"{
#include
const int rozmiar = 20;
void usun_element(int usun, int tab_temp[], int ile, int tab[]);
int main(void){
int tab[rozmiar], ile, usun, i, tab_temp[rozmiar];
printf("Podaj liczbe elementow, ktore chcesz wpisac do tablicy\n");
scanf("%d",&ile);
for(i = 1; i < ile+1; i++){
printf("Element [%d] -> ",i);
scanf("%d",&tab[i]);
}
printf("Podaj element, ktory ma zostac usuniety z tablicy : \n");
scanf("%d",&usun);
usun_element(usun,tab_temp,ile,tab);
}
void usun_element(int usun, int tab_temp[], int ile, int tab[]){
int i, j, temp;
j = 0;
for (i =1; i < ile+1; i++){
temp = tab[i];
if (temp!=usun){
tab_temp[j] = temp;
j++;
}
}
for (i = 1; i < ile+1; i++)
tab[i] = 0;
for (i = 0; i < j; i++){
temp = tab_temp[i];
tab[i] = temp;
}
printf("TABLICA : \n");
for (i = 0; i < j; i++)
printf("%d ",tab[i]);
}}
Oczywiście metod jest wiele.
EDIT ----
Bez elementu tablicy wystarczy po prostu wypisać elementy różne != a