Podobnież.
Wersja do druku
Ok to jeszcze jedno pytanie, a bardziej taka kwestia wytlumaczenia dlaczego tak sie dzieje, kod:
Chodzi mi o pogrubione linijkii otóż , dopóki miałem tylko 2 fgetsy w tym voidzie to funkcja łapała tylko jednego, jak dodałem jeszcze 3(który mi się tam nie podoba) funkcja zaczyna działać normalnie, ignoruje w tej funkcji tak jakby jednego a dwa pozostałe działają ok. Czyli w skrócie jak usunę przykładowo pierwszego fgetsa, zostaną dwa, to pierwszy napotkany zostanie zignorowany i dopiero kolejny działa. Dlaczego? ;sKod:void dodaj()
{
system("cls");
printf("Podaj temat quizu: \n"); ////przypisanie wartości x w obiekcie vinyl
// scanf("%s",&pytanie[ktore_pytanie].temat);
fgets(pytanie[ktore_pytanie].temat,sizeof(pytanie),stdin);
fgets(pytanie[ktore_pytanie].temat,sizeof(pytanie),stdin);
printf("Napisz pytanie: \n");
// scanf("%s",&pytanie[ktore_pytanie].zapytanie);
fgets(pytanie[ktore_pytanie].zapytanie,sizeof(pytanie),stdin);
ktore_pytanie++;
}
może masz znak końca linii w 1 linii?
https://pl.wikibooks.org/wiki/C/fgets
ale przeciez ja to wbijam z palca-stdin, nie z pliku. Chyba ze nie bardzo rozumiem calego uzycia tej funkcji, jednak wydaje mi sie ze rozumiem :P, pobieram ciag znakow o okreslonej dlugosci i wrzucam go do tablicy pytanie[ktore_pytanie]. Tablica 200 elementowa , byla pusta przed uzyciem funkcji.
Nie ważne czy czytanie z pliku czy z palca, znak końca linii może być w obu.
Przed uzyciem fgets wyczyść bufor funkcja fflush albo cos.
ale i tak nie wiem po chuj Ci ten fgets jak mozesz uzyc scanfa
Witam, mam takie zadanie : Opracuj algorytm (schemat blokowy) i napisz program, który na podstawie trzech wprowadzonych liczb obli-cza ich średnią arytmetyczną.
int main() {
int a,b,c;
float d;
printf("Podaj liczbe a:\n");
scanf("%d", &a);
printf("Podaj liczbe b:\n");
scanf("%d", &b);
printf("Podaj liczbe c:\n");
scanf("%d", &c);
d=a+b+c/3;
printf("Srednia arytmetyczna podanych liczb to %f", d);
return 0;
}
ktoś coś, czemu m nie dzieli przez te 3?
witam,czy mozna nauczyc sie jakiegos jezyka z neta? uczac sie codzennie/czytac jakies ksiazki? jaki jezyk na poczatek? czytalem ze ludzie mowia ze c++ a niektorzy ze to trudny jezyk na poczatek,co wy byscie poradzili na poczatek? jezeli c++ to jaka ksiazka na poczatek?
ile ludzi tyle opinii
ja twierdzę, że jeżeli chcesz się nauczyć programowania, to c++ jest dobrym wyborem, bo masz kontrolę nad wszystkim co się dzieje.
jeśli jednak celujesz w jakiś konkretny rynek, to ucz się od razu języka i technologii, których się przy tym wykorzystuje, np. jeśli chcesz robić strony to RoR/python/.net + html/css/js(jquery). jeśli chcesz robić aplikacje na mobilne to C# (xamarin), java (android sdk lub jakieś multiplatformowe frameworki typu libgdx), grafika 3d to głównie c++ i glsl (hlsl w dx xD)
zrób jakąś książkę od deski do deski a potem pisz własne programy i googluj to czego nie wiesz
Jaki jest najlepszy sposób na szybką(i efektywną) naukę c++? Z jednej strony chciałbym się podszkolić w tym co studiuje, z drugiej poprostu umieć troszke wiecej. Jakiś protipy?
ps. Symfonie czytam i niektore programy testuje ;d.
@Plastus ;
1. s/Symfonia/C++. Szkola Programowania
2. Czytaj blogi / arty C++ guru's (Meyers, Sutter, Alexandrescu, Milewski, ..)
3. Dolacz do jakis projektow open sourcowuch (zacznij od prostych wrzutek na githabie, odnosnie projektow ktore Cie interesuja)
Opracuj algorytm (schemat blokowy) i napisz program, który oblicza wartość bezwzględną podanej liczby.
Kod:#include <stdio.h>
#include <math.h>
int main ()
{
int a,b;
printf("Podaj liczbe:\n");
scanf("%d", &a);
if (a>=0) {
printf("wartosc bezwgledna wynosi %d", a);
}
if (a<0) {
b= sqrt(a*a);
printf("Wartosc bezwgledna wynosi %d", b);
}
return 0;
}
Działa, ale może da się to jakoś lepiej zrobić?
A po co sqrt i potega :P
Jesli a <0 to a = a*(-1)
@Roiben ;
po 1. kod wklejaj w bloki [.code] [./code] (bez kropek)
po 2. jak korzystasz z sqrt(a*a) to bez sensu Ci pisać jakiegokolwiek IFa.
W przypadku a = 4; i a = -4; wyniki beda przeciez identyczne.
Opracuj algorytm (schemat blokowy) i napisz program zwracający największą z trzech liczb podanych przez użytkownika. Nie bardzo wiem jak to zrobić, kombinuje z ifami no ale nic z tego nie wynika. Ktoś da jakąś wskazówke?
max()
petla for
if max < liczba then max = liczba
O to 3 wskazowki, powodzenia :) Można wiedziec ile masz lat / w ktorej klasie jestes?
Te zadania sa proste do zrobienia oczywiscie, ale na poczatku trudne do sformulowania na kartce. Dlatego najpierw zanim zaczniesz pisac, to sie zastanow sam, jak ty jako czlowiek porownujesz ktora z tych liczb podanych jest najwieksza. A pozniej dokladnie to samo zapisz na kartce :)
20 / 1 rok automatyki i robotyki
zaimplementuj sortowanie bąbelkowe i po sprawie
Jasne, i dostanie baniaka bo nie rozumie 1. zdaniowego polecenia...
@Roiben
https://pl.wikipedia.org/wiki/Dziel_...%C4%99%C5%BCaj
Ktoś to jest into asembler? Podstawy, prosty program:
Program ma wczytywać tekst, a potem wypisywać go n razy (też ilość podana przez użytkownika). Działa dobrze dla 0,3, 5,6,7,8,9. Dla 1 nie wyswietla nic, dla 2 wyswietla 4x, dla 4 wyswietla 4x ale w 1 lini dopisuje 4. O co chodzi? XD
Ad2: Jak zapisać aby program wczytywał liczbę która ma więcej niż 1 znak?
Kod:section .text
global _start:
_start:
call fun1
call fun2
xor esi, esi
etyk:
call fun3
koniec:
mov eax, 1
int 80h
fun1:
mov eax, 3
mov ebx, 0
mov ecx, napis
mov edx, [dlugosc]
int 80h
mov eax, 3
mov ebx, 0
mov ecx, znak
mov edx, 1
int 80h
ret
fun2:
mov al, [znak]
sub al, 48
mov [cyfra], al
int 80h
ret
fun3:
cmp esi,[cyfra]
jae koniec
mov eax, 4
mov ebx, 1
mov ecx, napis
mov edx, [dlugosc]
int 80h
inc esi
jmp etyk
ret
section .data
napis times 50 db 0
dlugosc dd $ - napis
znak db 0
cyfra dd 0
@LordCompi ; chyba jest into assembler :)
Dobra, błędy już ogarnąłem. Za bardzo namieszałem tam z tymi funkcjami. Natomiast czy istnieje możliwość wpisania do asm wiecej niż 1 cyfry przez int 80h? Czy tylko trzeba operować przez printf/scanf?
https://mitpress.mit.edu/sicp/full-text/book/book.html
bdb ksiazka polecam
cc rolly
jest jest, możesz np liczbę 123 wczytywać po znaku (ascii) i załóżmy wrzucać sobie te znaki na stos,
jak masz 1,2,3 to dostaniesz wartości ascii 49,50,51, więc trzeba od nich odjąć 48, będziesz miał już 1,2,3 i potem jak ściągasz ze stosu to mnożysz przez kolejne potęgi 10 i wrzucasz do rejestru
dx += 1 * 100
dx += 2 * 10
dx += 3 * 1
@sw.5 ;
Czyli ogólnie najpierw wczytuje sobie jeden znak z dajmy na to funkcji1, używam funkcji2 gdzie mam odejmowanie, a potem push na stos, wczytuje znak 2 i 3. Gdy już wszystkie mam, to ściągam je po kolei popem pierwszy *1, drugi *10 itd i wszystko wpisać do JEDNEGO rejestru. Dobrze zrozumiałem? A można to ew wpisywać do rejestrów odrazu? Zamiast na stos to wrzucam do np dx *100 pierwszy itd.? :d
Pytam sie bo jedna grupa miała na kolosie zadanie które polegało na tym żeby wpisać wynik działania 12*12 jeśli prawidłowy wynik został podany to kończyło program komunikatem. W przeciwnym razie trzeba było zrobić tak żeby było można wczytac wynik jeszcze raz.
I do tego najlepiej chyba takim algorytmem, a ilość wczytywanych znaków uzależnić po prostu od wyniku oczekiwanego, no i wszystko w pętlach.
Nawet lepiej od razu wrzucać wszystko do jednego rejestru. Gdybyś chciał korzystać ze stosu to przypominam jeszcze o pewnym problemie o którym trzeba pamiętać podczas używania stosu i funkcji - (to się chyba ramka stosu nazywało) - chodzi o to że jak korzystasz z jakieś funkcji i używasz mnemo call to adres powrotny z funkcji ląduje na stosie, gdy w trakcie funkcji będziesz coś zmieniał na stosie to potem program nie wróci w dobre miejsce. Więc w przypadku gdy musiałbyś korzystać ze stosu wewnątrz jakiejś funkcji to trzeba zapisać wskaźnik stosu gdzieś tak aby można było przed końcem funkcji przywrócić go do stanu jaki był przed wejściem do funkcji.
I wracając do tego polecenia na kolosie to tak, dokładnie tak trzeba to zrobić :p
btw w jakim asm'ie piszecie?
Wiesz co, to w takim razie zrobie to wersją bez stosu i jutro zdam relację. Ogólnie jestem na 1 roku infy, nie wiem ile jest 'rodzajów' asma :D. Pracuje na wirtualnej fedorze 32 bitowej, kompiluje nasmem... i w sumie nie wiem co wiecej moge powiedzieć :D. Jest to język dodatkowy, głównie ogarniamy jego podstawy...
To ja też te parę rzeczy co robiłem to w nasm. Ale po co Wam fedorka?
Fedore mamy zainstalowaną na kompach labolatoryjnych. Poprostu chciałem sobie stworzyć takie samo środowisko żeby ew prowadzący nie mieli powodów do spin, bo na zajeciach tego typu wole pracować na swoim lapsie, niż pendrive + PC na agh xd.
Błagam, nie śmiejcie się z kodu i jego ilości xD.
Algorytm ogarniam, gorzej z zapisem..
W zaznaczonych miejscach 3x invalid effective address. Wiecej błędów narazie nie wywalił.
@wyedytowane, sorki
Zadanie tak jak ostatnio pisałem. Wpisz wynik działania 12*12, jesli wynik się nie zgadza, wróć do początku programu.
Kod:section .text
global _start:
_start
etykstart:
call wypisywanie_tekstu ; początek, wypisywanie i wczytywanie dla 1 liczby (1)
call wczytywanie
call odejmowanie ascii
cmp esi, 1
je koniec1:
jmp etykstart ;pętla czy wczytana liczba jest równa 1, jeśli nie wraca do początku
;***********************************************
koniec1:
xor ax,ax
mov ax, [cyfra] ;tutaj jest
mov dx, [ax*100] ;duzy cyrk
call wczytywanie
xor al, al ;zerowanie rejestrów
xor esi, esi
call odejmowanie_ascii
cmp esi, 4
je koniec2:
jmp etykstart ;petla nr 2, jesli 2 znak jest równy 4, idzie dalej, jeśli nie to wraca na początek
;*****************************************************************
koniec2:
xor ax,ax ;tutaj jest
mov ax, [cyfra] ;duzy cyrk
mov dx, [ax*10] ;caly czas
call wczytywanie
xor al, al
xor esi, esi ;znowu zerowanie rejestrów
call odejmowani_ascii
cmp esi, 4
je koniec3:
jmp etykstart ;petla nr 3
;*****************************************************************
koniec3:
xor ax,ax ;tutaj jest
mov ax, [cyfra] ;duzy cyrk
mov dx, [ax*1] ;cały czas
mov wynik, dx ;wpisanie liczby 144 z rejestru do wyniku
mov eax, 4
mov ebx, 1
mov ecx, wynik ;tutaj chciałem wypisać wynik 144 na ekran, ale mogłem cos pomieszać bo miałem mętlik w głowie :v.
mov edx, [dlwynik]
int 80h
mov eax, 1
int 80h ; zakonczenie programu
;*****************************************************************
wypisywanie_tekstu:
mov eax, 4
mov ebx, 1
mov ecx, tekst
mov edx, [dl_tekst]
int 80h
ret;*****************************************************************
wczytywanie:
mov eax, 3
mov ebx, 0
mov ecx, zmienna
mov edx, 1
int 80h
ret;*****************************************************************
odejmowanie_ascii:
mov al, [zmienna]
sub al, 48
mov esi, al
mov cyfra, al
ret;*****************************************************************
section .data
tekst db "Podaj wynik mnozenia 12*12, kazda cyfre oddzielajac enterem", 0ah
dl_tekst dd $ - tekst
zmienna db 0
cyfra dd 0
wynik dd 0
dlwynik dd $ - wynik
a jakie masz w ogóle polecenie? i jak piszesz asm dla kogoś to komentuje co jaki fragment robi albo co ma robić bo tak to trzeba się domyślać (plus nazywanie funkcji fun1 fun2 fun3 też dużo nie mówi)
@Plastus ;
To nie jest poprawne adresowanie na 16-bitowej binarce. Sprobuj:
Kod:mov dx, byte [ax*100]
Dobra, jestem durniem i za bardzo komplikuje sobie sam zadanie. Dzieki wszystkim za pomoc, sam już to ogarnąłem bez żadnego mnożenia i kombinowania z rejestrami ;p.
Niech pierwszy rzuci kamieniem ten kto nigdy nie był początkujący :p
Istnieją plotki, że @szulak ; nigdy nie był początkującym.
Kolos zaliczony 30/40 pkt Dzieki panowie :D.
szulak dostał kurs z x86 i C++ od mamy, dobre geny co poradzisz xD
Tak na serio @szulak ; Ty nie studiowałeś infy czasami?
Jeśli ktoś się nudzi, możecie kolesiowi zgasić albo zapalić lampki na domu/płocie etc ;)
http://STEROWANIE24.PL
http://www.elektroda.pl/rtvforum/topic2955498.html
Może kogoś to zainteresuje:
https://stacksocial.com/sales/pay-wh...4-f2f71bff233f
Polecam przejrzeć też inne "paczki"
Nie wiem czy dobre miejsce na to, jak nie to proszę usunąć.
Kursy są udostępniane na platformie stackskills.com
http://iv.pl/images/79710537147091136405.jpg
Jakby, ktoś zechciał założyć konto z refa:
UWAGA: REF LINK !
Te filmiki sa jakies sensowne? ;d
Odnosnie filmikow to na http://www.codeupstart.com/ w tym miesiacu jest za darmo videotutorial jak w pythongu i flasku zrobic kopie kickstartera.
Jak tak przejrzałem to ten 3 kurs mozliwe ze jest na yt, albo bardzo podobny. Od tego samego kolesia
https://www.youtube.com/watch?v=wNUr...UVc6L0&index=1
bardzo dobre miejsce, dzieki bardzo juz kupilem ;)
Przypadkowo przekleilem tez twojego refa na 2 grupy na fejsie dla developerow :D
Ale za paczki promocyjne profitu nie ma, z tego co ktos w komentarzach pisal, dopiero jak ktos z twojego refa kupi cos bez promocji, to masz z tego jakies profity.