Zadania z C

0

Niedawno zacząłem pisać w C i mam kilka zadań do zrobienia. Czy ktoś mógłby zobaczyć czy są dobrze rozwiązane? Jeżeli są jakieś błędy to proszę o pomoc w rozwiązaniu :)

*Zadanie 1. Opisz poniższe deklaracje.

a) char t[7] Odp: tablica siedmiu znaków
b) chat*t[7] Odp: tablica siedmiu wskaźników
c) char(*t)[7] Odp: wskaźnik do tablicy z siedmioma znakami

*Zadanie 2. Zadeklarowano strukturę: struct st(char *text float *f)

a) Zdefiniuj wyłącznie wskaźnik do struktury st i nadaj wartości składowym struktury, wpisz
wartości pod adresy:
Odp:???

b) Zdefiniuj 3 elementową tablicę wskaźników do struktury st. Wypełnij tablicę, wpisz do każdego
jej elementu pod następujące wartości: pod adres text: „idx” oraz pod adres f w każdym elemencie
tablicy wpisz ciąg wartości rzeczywistych : 1,2,3.
Odp:???

*Zadanie 3. Zdefiniowano funkcję: float *f(float a) {float w; w=0,3 *a ; return&w;}

a) Popraw błąd w definicji funkcji, uzasadnij.
Odp :
float *f(float a)
{
static float w;
w=0,3a;
return w;
}
Uzasadnienie:?.

b) Wywołaj funkcję po lewej stronie znaku przypisania. Podaj skutki takiego wywołania funkcji.
Odp:???

Zadanie 4. Jaki jest skutek działania pętli while: char k[] = „egzamin”, t[]=”info”; int i=0;
while(
(k+i)=*(t+i))i++;
Odp: Zostanie wyświetlony info/0in.
Pytanie ode mnie co by było, gdyby t>k?

*Zadanie 5. Jaki błąd popełniono definiując poniższą funkcje, popraw jej definicje. Uzasadnij

Błędna
float *kopiuj(float zm[], int r){
int k;
float k[r];
for(i=0;i<r;i++)k[1]=zm[1]
return k;
}
Odp:
Poprawna
float kopiuj(float zm[], int r)
{ int i;
float k=(float)(malloc(r
sizeof(float));
for (i=0; i<=r;i++)k[i]=zm[i];
return k
}

*Zadanie 6. Zdefiniowano funkcje:
char *f(char *nazwa char znak)
{
while(*nazwa !=znak)nazwa++;
return nazwa;
}

a) Jaki błąd popełniono?
Odp: char *f(char *nazwa char znak)
{
while((*nazwa != znak) && (*nazwa))
return nazwa;
}

*Zadanie 7. Jakie wartości może przyjąć zmienna int x? Uzasadnij w jakim przypadku otrzymamy te
wartości. x=a>b.

Odp: x może przyjąć wartośći 0 lub 1. Jeżeli wartość wyrażenia będzie poprawna (a będzie większe od b), to x przyjmie wartość 1, jeżeli nie, to przyjmie wartość 0.

*Zadanie 8. Zadeklarowano tablicę float[r1][r2]. Utwórz dynamiczną kopie tej tablicy. Wywołaj
funkcje, wyświetl utworzona kopie.

Odp:???

*Zadanie 9. Zdefiniuj funkcje, która wykonuje dynamiczną kopię, jednowymiarowej tablicy w której
znajduje się łańcuch. Wywołaj funkcję, wyświetl utworzoną kopie.

Odp:???

*Zadanie 10. Zdefiniuj wskaźnik do funkcji i przypisz mu adres funkcji: int f(int z, float x).
Odp: int *(f)(int x,float y);.

Zadanie 11. Zdefiniuj funkcje typu void, która nada wartość zmiennej deklarowanej w funkcji i
wartości ta zostaje zachowana po wyjściu z funkcji oraz jest dostępna w programie. Przygotuj
parametry i wywołaj funkcje.

Odp:???

Zadanie 12. Dokonano deklaracji: int tab[3][2]=(1,23 , 14,8 20,30).
a) Omów instrukcje tab++; Odp:
b) zdefiniuj zmienna, tak aby przypisanie było prawdziwe uzasadnij ???=tab;
c) zdefiniuj zmienna, tak aby przypisanie było prawdziwe uzasadnij ???=tab[2];
d) zdefiniuj zmienna, tak aby przypisanie było prawdziwe,podaj jej wartość po wykonaniu
odejmowania. Uzasadnij wynik:
???=tab[2]-tab[0];

*Zadanie 13. Zadeklarowano zmienne: char c, t[]=”info”; char *const d=t. Wybierz poprawne instrukcje.
a) *d=*t+1;
b) c=*d++;
c) c=*d;
d) (*d)++;
e) Brak poprawnej instrukcji.
Odp: e.

*Zadanie 14. Zadeklarowano: struct s{ float f; char zn;};struct s st[20];
Wypełnij składowe struktury elementu st[10], odwołując się do składowych struktury przez . oraz
→ . Nie deklaruj dodatkowych zmiennych.
Odp: ???

*Zadanie 15. Napisz fragment programu tak aby, poprawne były przypisania. Opisz przypisania w
pkt a) i b).

a) *adr=*k++;Odp:???
b) *adr = ++(*k);Odp:???

*Zadanie 16 Podaj wartości zmiennej w tabeli.
int c=100;
if(a>0)
{ if(b<0) c=12; }
else c=1;
a)a>0 i b=0 c=1
b)a<0 i b>0 c=100
c)a>0 i b>0 c=1
d)a<0 i b=0 c=100

*Zadanie 17. Zadeklarowano funkcje i zmienne.
char *f(char str)
{str = (char
)malloc(sizeof("procesor"));
strcpy(tab, "procesor");
return str;
} char *wsk, tab[30] ="komputer";

a) Podaj wartośc wsk oraz str wyświetlone przez funkcje printf. Uzasadnij.
wsk=f(str); printf(”%s %s”, wsk, str)
Odp: Wyświetli procesor komputer. Uzasadnienie:?

Bym był bardzo wdzięczny gdyby ktoś pomógł chociaż w poszczególnych zadaniach. W międzyczasie postaram się rozwiązać brakujące zadania, proszę o pomoc i podpowiedzi :)

0

tylko tyle !! ?
Daj no jeszcze z dziesięć...

0

Tutaj ludzie mogą Ci pomóc rozwiązać jakieś zadanie, nie zrobić je za Ciebie...

0

Zadanie 3

float f(float a)
 {
    float w;
    w=0.3 *a; //ma być kropka, nie przecinek
    return w;
}

Nie ma sensu tu zwracać przez wskaźnik, a jak już to trzeba dynamicznie alokować pamięć, w przeciwnym wypadku po wyjściu z funkcji w przestanie istnieć.
Wywołanie takiej funkcji z lewej strony operatora = wywoła błąd kompilacji.

Zadanie 4 - bzdura, nic nie zostanie wypisane. Odpal to to się przekonasz co się stanie.

Zadanie 7 - jeżeli wyrażenie nie jest prawdziwe x = 0, a jeżeli jest prawdziwe to x może przyjąć dowolną wartość różną od 0 (to zależy od implementacji kompilatora)

Zadanie 13 - c

Więcej mi się nie chciało ;)

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