Kilka podstawowych funkcji do napisania w C - nauka.

0

Mam do napisania kilka funkcji w C. I na razie piszę je na kartkach. I chciałabym, żeby ktoś je sprawdzał na bieżąco czy dobrze rozumiem i je tworzę, więc będę ten post na bieżąco edytować. Funkcje, które muszę napisać: zwracający napis Ala, zwrócić liczbę typu float 5.5, zwrócić 10 elementową tablicę typu int, dodającą.odejmującą.mnożącą.dzielącą liczby 10 i 12, 10.5 i 12.21 tablicę tak jak się dodaje macierze i do tego liczbę 100, tak samo tylko że używając wskaźników, sumując elementy tablicy, porównującą dwa napisy literka po literce jeśli takie same to 1 jeśli inne to 0, generującą tablicę z elementami 10 do 30, porównywanie wskaźników jeśli są takie same 1 jeśli różne 0,wymienienie adresów pomiędzy dwoma wskaźnikami, sortującą tablicę i wypisującą ją na ekran.

Na razie napisałam tylko do zwracania napisu, ale będę uzupełniać o każdą napisaną funkcję. Proszę o porady co mogę zmienić i jak zabrać się za te bardziej skomplikowane funkcje.

Program zwracający napis:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
char zwrocNapisAla (char);

int main (void)
{
printf ("%s\n", zwrocNapisAla());
return 0;
}

char zwrocNapisAla()
{
return Ala;
}




 
3

Moja propozycja nie pisz na kartkach tylko w IDE, albo chociaż sprawdzaj na czymś w rodzaju ideone ponieważ to co wrzuciłeś nawet się nie kompiluje. Poza tym jak chcesz zwrócić napis to jest kompletną bzdurą. A tu masz coś do poczytania http://lmgtfy.com/?q=how+to+return+a+char+array+from+a+function+in+C

2

Zacznij od przeczytania byle kursu, wybierz ten najkrótszy, przynajmniej:

  • aby dostrzec że połowa z zadań są lekko bezsensowne (lub wypisane bez rozumienia)
  • aby umieć sensownie zadać pytanie.
  • aby zrozumieć to co tobie odpowiemy.
0

Staram się, ale zawsze widzę więcej kursów z C++ niż z C. I próbuję programować muszą się kompilować w Visual tylko teraz piszę na komputerze na którym nie mam Visuala to ściągnę IDE.

0

Do czystego C polece Ci książkę http://helion.pl/ksiazki/jezyk-ansi-c-programowanie-wydanie-ii-brian-w-kernighan-dennis-m-ritchie,jansic.htm dla mnie bardzo przypadła do gustu. Ładnie wprowadza w język.

Ale w sumie jakbyś napisał dobrze, to kompilator nie ma znaczenia. Ale osobiście sam wolę programować pod tym na czym to będzie ewentualnie sprawdzane.

0

Na razie znalazłam taki program do kompilacji online https://ideone.com/zVZ95E. Ale mam problem, bo nie wiem co robię źle próbuję napisać funkcję zwracającą liczbę a typu float gdzie w funkcji nadaje jej wartość która jest zadana.

0

Udało się program się skompilował, ale niestety strona nie ma możliwości uruchomienia aplikacji okienkowej ani debbugera, więc nie wiem czy poprawnie to zrobiłam. Czy zna kto narzędzie do tworzenia wersji tetowyc online nie chcę ściągać, żadnego kompilatora, bo komputer na którym je tworze ma bardzo mało pamięci.

 #include <stdio.h>
float zwrocLiczbe();
int main(void)
{
	float a;
	zwrocLiczbe(a);
	printf ("%f\n",a);
	return 0;
}

float zwrocLiczbe()
{
	float a;
	a=5.5;
	return a;
	
}
1

Co do IDE nie wymagającego to zainstaluj DevC++ http://orwelldevcpp.blogspot.com/

Co do programu to dalej robisz źle. Musisz zrobić tak:

int main(void)
{
    float a;
    a=zwrocLiczbe();
    printf ("%f\n",a);
    return 0;
}

Przecież funkcja zwrocLiczbe nie przyjmuje żadnego parametru, więc nie można jej nic przekazać, a jedynie zapisać do innej zmiennej wartość przez nią zwracaną.

1

http://ideone.com/Sp1q79

#include <stdio.h>

float returnFloat() { return 5.5; }

int main(void)
  {
   printf("%f\n",returnFloat());
   return 0;
  }

http://ideone.com/Gfg5Gz

0

Poprawiłam na coś takiego i próbowałam skompilować i nie działa wyświetla się jakby opis biblioteki i pokazuje, że nie ma pliku main.o

 #include <stdio.h>
float zwrocLiczbe();


    int main(void)
{
    float a;
    a=zwrocLiczbe();
    printf ("%f\n",a);
    return 0;
}

float zwrocLiczbe()
{
    float a;
	a=5.5;
    return a;
 
} 
0
  1. Kod jest poprawny i działa: http://ideone.com/iL7341
  2. Nie ma sensu rozdzielać deklaracje zmiennej i jej inicjalizacje - niepotrzebnie wydłużasz kod, np: float a=5.5; , float a=zwrocLiczbe();
  3. Nie musisz w funkcji wyliczać jakąś wartość w zmiennej aby ją zwrócić, w return może być wyrażenie, np: return 5.5;
  4. Do printf też można przekazywać wyrażenia, np: printf("%f\n",zwrocLiczbe());
  5. Pamiętaj ilość błędów w kodzie jest proporcjonalna ilości wierszy oraz odwrotnie proporcjonalna doświadczeniu autora, pisząc zwięzłe zmniejszasz ilość wierszy i zwiększasz doświadczeniu autora.
0

Dzięki to zgodnie z tymi zasadami próbuję pisać te inne funkcje.

0

Próbowałam przez analogie stworzyć dodawanie liczb, ale chyba mi nie wyszło.

 
#include <stdio.h>
#include <math.h>

int dodaj(int a,int b)
{
	int y=a+b;
	return y;
}

int main (void)
{
	
	int y=dodaj(10,12);
	printf("Wynik=%d\n",y);
	return 0;
}
1
  1. Kod jest poprawny i działa: http://ideone.com/bZiyGG - nie musisz o to pytać wystarczy wkleić do ideone
  2. Nie potrzebujesz tu <math.h>
  3. Nie musisz w funkcji wyliczać jakąś wartość w zmiennej aby ją zwrócić, w return może być wyrażenie, np: return a+b;
  4. Do printf też można przekazywać wyrażenia, np: printf("Wynik=%d\n",dodaj(10,12));
    Pamiętaj ilość błędów w kodzie jest proporcjonalna ilości wierszy oraz odwrotnie proporcjonalna doświadczeniu autora, pisząc zwięzłe zmniejszasz ilość wierszy i zwiększasz doświadczeniu autora.
0
dicappo napisał(a):

Próbowałam przez analogie stworzyć dodawanie liczb, ale chyba mi nie wyszło.
Trochę to dziwne. Bo każdy kod który dajesz to ładnie się kompiluje i działa. Warto podawać więcej szczegółów na temat tego co nie działa. Czy kod się nie kompiluje, czy źle działa.

0

Zrobiłam tylko te proste programy dodające odejmujące mnożące i dzieląca. Teraz potrzebuje te funkcje przetworzyć na wskaźniki i napisać kolejne funkcje i nie wiem co dalej.

1

Dalej przeczytać byle kurs aby przynajmniej umieć zadać sensowne pytanie.

0

Teraz muszę napisać takie programy jak na zdjęciu czy ktoś coś pomoże?

0

Nie jestem jakimś geniuszem z programowania, dlatego proszę o pomoc. Bo jak mam kod napisany to umiem go zrozumieć. Ale jak mam sama coś wymyślić to nawet jak mam pomysł to nie umiem tego przełożyć na C. Dziękuje bardzo. Pilne

0

Ale te zdjęcie nic nie mówi. Poza tym skoro na uczelni masz takie zajęcia, to oznacza, że Ci będzie potrzebne.

Wybacz, ale tłumaczenie, że umiesz czytać kod w C, ale napisać nie za bardzo jest niezbyt trafne. Prosząc o gotowe zadanie dalej niczego się nie nauczysz. A skoro tak, to nie powinnaś zdać tego przedmiotu. Co innego jakbyś czegoś nie rozumiała, wtedy Ci pomożemy, teraz nawet nie ma w czym pomóc, ponieważ zrobienie za kogoś pracy domowej to nie pomoc. A forum służy właśnie do pomocy.

1
dicappo napisał(a):

Nie jestem jakimś geniuszem z programowania, dlatego proszę o pomoc. Bo jak mam kod napisany to umiem go zrozumieć. Ale jak mam sama coś wymyślić to nawet jak mam pomysł to nie umiem tego przełożyć na C. Dziękuje bardzo. Pilne

Oczekujesz pomocy czy rozwiązania za Ciebie?

  1. Jeśli pomocy: pokaż kod, staraj się zastosować do Dlaczego nikt nie odpowiada w moim wątku?
  2. Jeśli wykonania za Ciebie: http://4programmers.net/Forum/Og%C5%82oszenia_drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)

Niby na początku wykazałeś jakąś chęć pracy, ale teraz to sam nie wiem. Przecież to jest zadanie na pierwsze dwia-trzy rozdziały kursu...

0

Na początku coś jeszcze rozumiałam, a teraz coraz gorzej z tym idzie, a potrzebuję to szybko zeozumieć. Jak ja mam napisać kod jak ja to rozumiem słownie co mam pisać?

0

Napisz pseudokod w takim razie, jako kolejność wykonywania działań, zupełnie jak w przepisie na jakieś ciasto czy coś. Na przykład coś takiego: http://4programmers.net/Forum/1237626

tak czy inaczej, zadanie jest trywialne i dowolny kurs tego uczy.

0

zadanie 1 :

  1. Utwórz statyczną tablice x1,y1,x2,y2,xwy,ywy o wielkości każda 25 liczb
  2. Dodaj pierwszy element tablicy x1 do x2 tak samo y1 do y2 dopóki nie dojdzie do końcowego elemntu tablicy
  3. Wynik dodawania zapisz po kolei w tablicy xwy i ywy
  4. Wypisz tablice

Analogicznie dla odejmowania. Zwiększenie amplitudy to wymnożenie wartości y. Podobnie dla przesuwania sygnału tylko dodawanie na x lub y. Nie wiem jak policzyć pole sygnału. Czy o taki pseudokod chodzi?

0

to teraz przeniesc to wszystko na kod a jak bedziesz miec problemy z polem silowym to wtedy napisz (i wklej kod ktory juz bedziesz miec)

2

https://pl.wikibooks.org/wiki/C/Tablice
Tablice

masz do utworzenia trzy tablice z rozmiarem 25 elementów. Posstaraj się to zrobić, podesłałam Ci linki zobacz co tam jest zrobione. Rozmiar tab definiujesz np: int nazwaTablicy[25];

0

I już mam problem jak złożyć to w całość mam urywki kodu bo słownie to umiem ale nie wiem jak wywołać żeby w tablicy y były wartości sinusa dla danego x i w drugiej jak do x wylosować jakiegoś y "zakłócenie" i potem to połączyć w dwie tablice wyjściowe i nie wiem jak zrobić że elementtt x1 i x2 do siebie dodać i odjąć. Cały czas nad tym myślę i będę tu po mału wstawiać kod jaki uda mi się wymyślić.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define ROZMIAR 70




int main()
{
	return 0;
}



int tabx[ROZMIAR] = [70]
int i;

for (i = 0; i<ROZMIAR; ++i) 


 
0

wygenerujablice1Dchar(&wsk_char,25); alokujemy pamiec na 25-elem tablicy
wygenerujtablice1Dchar(&wsk_char,'a'); to samo
wypiszdotablicy1Dchar(&wsk_char,'ala ma kota'); wpisujemy do niej
wygenerujtablice1Dfloat(&wsk,30);
wygenerujtablice1Dfloat(&wsk,0,55); od 0 do 55

tablica 2D o rozmiarach 5 x 5
wygenerujtablice2Dfloat(&wsk,30);
wygenerujtablice2Dfloat(&wsk,0,55);
skopiujtab2D(&wsk1,&wsk2); kopiowanie z pierwszej tablicy do drugiej tablicy

Teraz mam takie do napisania i na razie mam:

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

int main()
{
	char tab1d[25];
	int *wskch;
	25 * sizeof(char);
	*wskch = malloc(25 * sizeof(char));
	free;
	return 0;
}
 

I nie wiem czy to dobrze, bo wyskakuje mi jakiś komunikat, a na tej podstawie mogę robić dopiero następne.

0

Taki. Niestety inaczej nie umiem dodać na forum niż załącznik.
I jeśli dobrze odczytałam z tego co program wyświetla to jest tam opis, że nie ma deklaracji wskch, a to jest mój wskaźnik, żeby móc użyć malloca. I nie wiem czy on powinien być typ jak cała tablica char czy może int bo to będzie miejsce w pamięci komputera.

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

void wygenerujablice1Dchar(char **wsk,unsigned size) { *wsk=malloc(size); }
 
int main()
  {
   char *wsk_char;
   wygenerujablice1Dchar(&wsk_char,25);
   free(wsk_char);
   return 0;
  }

Jeszcze raz powtórzę:

Zacznij od przeczytania byle kursu, wybierz ten najkrótszy, przynajmniej:

  • aby dostrzec że połowa z zadań są lekko bezsensowne (lub wypisane bez rozumienia)
  • aby umieć sensownie zadać pytanie.
  • aby zrozumieć to co tobie odpowiemy.

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