Cześć,
Moglibyście mi pomóc w rozwiązaniu tych zadań na podstawie tych funkcji?
Coś tam rozwiązałem ale nie wiem czy dobrze a kilku zadań nie jestem w stanie rozwiązać.
Funkcje:
#ifndef MAIN_H_
#define MAIN_H_
#include "stdbool.h"
void wyswietlLiczbe1(int32_t liczba);
void wyswietlLiczbe2(int32_t *wsk_liczba);
void wyswietlText(char *text);
void wyswietlZnak(char *text, uint8_t index);
bool porownajZnaki(char *txt1, uint8_t idx1, char *txt2, uint8_t idx2);
int16_t suma(int8_t a, int8_t b);
int16_t roznica(int8_t a, int8_t b);
int16_t iloczyn(uint8_t a, uint8_t b);
int16_t iloraz(uint8_t a, uint8_t b);
uint32_t poleProstokata(uint8_t a, uint8_t b);
uint32_t moduloAprzezB(uint16_t a, uint8_t b);
float poleTrojkata(uint8_t a, uint8_t h);
uint32_t silniaLiczby(uint8_t a);
uint32_t potegaLiczby(uint8_t a, uint8_t b);
uint8_t liczbaPowtorzenZnaku(char *text, char znak);
uint8_t znajdzZnak(char *text, char znak);
#endif // MAIN_H
Zadania:
#include <stdio.h>
#include <stdlib.h>
#include "stdint.h"
#include "main.h"
int main(int argc, char ** argv)
{
//Wykonaj polecenia zgodnie z ponizszymi komentarzami
int a;
int b = 0;
printf("(1)(2)\n");
wyswietlText("Hello World\n");
a = b++;
printf("a=%d, b=%d", a, b);
printf("\n");
printf("\n");
/*
1. Ustaw breakpoint na linii 12 (W programie CodeBlocks - kliknij dwukrotnie po prawej stronie od numeru linii).
Uruchom program w trybie debug (czerwona strzalka).
Jaka wartosc ma zmienna a? 8
Dlaczego? Ponieważ jest ona 8 bitowa
**Aby podejrzec wartosci zmiennych w trybie debug nalezy otworzyc okno "Watches"
**Znajduje się ono w zakladce Debug->Debugging windows->Watches
Przejdz do linii 14 przyciskiem "Next Line". Obserwuj wartosci zmiennych a i b.
Wartości zmieniają się na a=0 i b=1 - wykonanie działania.
2. W linii 12 : Zamien funkcje printf na funkcje wyswietlText. Pamietaj o deklaracji funkcji w pliku main.h
3. Skorzystaj w programie z funkcji wyswietlLiczbe1 oraz wyswietlLiczbe2.
Podaj różnicę pomiędzy argumentem obu tych funkcji - wyjaśnij różnice.
wyswietlLiczbe1 - wyswietla liczbę. którą wpiszemy.
wyswietlLiczbe2 - wyswietla liczbe z wskazanej zmiennej.
*/
printf("(3)\n");
wyswietlLiczbe1(10);
wyswietlLiczbe2(&a);
printf("\n");
/*
4. Wyswietl znak numer 5 z tekstu "Hello World" przy wykorzystaniu funkcji wyswietlZnak
Opisz działanie tej funkcji (wypisz wszystkie zmienne i argumenty - podaj ich typ oraz opisz co zawierają).
Funkcja tak wypisuje dany numer znaku w podanym ciągu znaków.
index(uint8_t) - zawiera numer znaku który podaliśmy do pokazania.
sizeof(char) - długość wpisanego ciągu znaków
c (char) - znak którego szukamy.
*/
printf("(4)\n");
wyswietlZnak("Hello World",5);
printf("\n");
/*
5. Stwórz dwie tablice znakow "To jest pierwszy text" oraz "Moja druga linijka"
Porównaj znaki numer 2 w obu tablicach przy wykorzystaniu funkcji porownajZnaki
Porónaj znaki numer 6 w obu tablicach
Wynik porownania wyswietl w formie tekstowej
(Deklaracje funkcji znajduja sie w pliku main.h)
*/
printf("(5)\n");
char tab1[] = {"To jest pierwszy text"};
char tab2[] = {"Moja druga linijka"};
char wynik1 = porownajZnaki(tab1,2,tab2,2);
char wynik2 = porownajZnaki(tab1,6,tab2,6);
if(wynik1 == true)
{
printf("Prawda");
}
else
{
printf("Fałsz");
}
printf("\n");
if(wynik2 == true)
{
printf("Prawda");
}
else
{
printf("Falsz");
}
printf("\n");
printf("\n");
/*
6. Dodaj do programu funkcje suma, roznica, iloczyn, iloraz (Pamiętaj dodaj deklaracje w pliku main.h)
*/
printf("(6)\n");
suma(4,1);
roznica(5,2);
iloczyn(25,2);
iloraz(10,5);
printf("\n");
/*
7. Dodaj do programu funkcje poleProstokata, moduloAprzezB
*/
printf("(7)\n");
poleProstokata(4,5);
moduloAprzezB(4,4);
printf("\n");
/*
8. Dodaj do programu funkcje poleTrojkata
*/
printf("(8)\n");
poleTrojkata(4,1);
printf("\n");
/*
9. Dodaj do programu funkcje silniaLiczby
*/
printf("(9)\n");
silniaLiczby(4);
printf("\n");
/*
10. Dodaj do programu funkcje potegaLiczby (a do potęgi b)
*/
printf("(10)\n");
potegaLiczby(4,4);
printf("\n");
/*
11. Dodaj do programu funkcje liczbaPowtorzenZnaku (funkcja zwraca ilość powtórzeń znaku 'znak' w tablicy znakow 'text')
*/
/*
12. Dodaj do programu funkcje znajdzZnak (funkcja szuka pierwszego wystąpienia znaku 'znak' w tablicy znakow 'text' i zwraca położenie tego znaku w tablicy.
Umiesc spakowany projekt na platformie jako rozwiazania na zadanie numer 2.
*/
system("pause");
return 0;
}
uint8_t liczbaPowtorzenZnaku(char *text, char znak)
{
}
uint32_t potegaLiczby(uint8_t a, uint8_t b)
{
printf("%d\n", a*b);
}
uint32_t silniaLiczby(uint8_t a)
{
printf("%d\n", a);
}
float poleTrojkata(uint8_t a, uint8_t h)
{
printf("%d\n",a*h);
}
uint32_t moduloAprzezB(uint16_t a, uint8_t b)
{
printf("%d\n",a/b);
}
uint32_t poleProstokata(uint8_t a, uint8_t b)
{
printf("%d\n",a*b);
}
int16_t iloraz(uint8_t a, uint8_t b)
{
printf("%d\n",a/b);
}
int16_t roznica(int8_t a, int8_t b)
{
printf("%d\n",a-b);
}
int16_t suma(int8_t a, int8_t b)
{
printf("%d\n",a+b);
}
int16_t iloczyn(uint8_t a, uint8_t b)
{
printf ("%d\n",a*b);
}
void wyswietlText(char *text)
{
printf("%s", text);
}
void wyswietlLiczbe1(int32_t liczba)
{
printf("%d\n", liczba);
}
void wyswietlLiczbe2(int32_t *wsk_liczba)
{
printf("%d\n", *wsk_liczba);
}
void wyswietlZnak(char *text, uint8_t index)
{
char *c = text + (index - 1) * sizeof(char) ;
printf("Znak numer %d to : %c\n", index, *c);
}
bool porownajZnaki(char *txt1, uint8_t idx1, char *txt2, uint8_t idx2)
{
bool wynik = false;
char *c1 = txt1 + (idx1 - 1) * sizeof(char) ;
char *c2 = txt2 + (idx2 - 1) * sizeof(char) ;
if(*c1 == *c2)
{
wynik = true;
}
else
{
wynik = false;
}
return wynik;
}