Skocz do zawartości
andixad

C++ ćwiczenia.

Rekomendowane odpowiedzi

24. Napisz program, który po podaniu argumentu, wypisze wartość funkcji określonej wzorem.

f(x)={ 3(x*x)-1 dla x < -5 ; 2x+1 dla xE < -5;2 ; -x dla x >= 2 .

#include <iostream>using namespace std;double f(double x) {	   if (x<-5) return  (3*(x*x)-1 );	   if (x <2) return 2*x+1;	   return -x;			}int main (){	int x;	cout<<"Podaj x: ";	cin >> x;	cout<<"Wartość f(x) to "<<"\n";	f(x);	system("pause");	return 0;	}
Błędów nie ma, ale po uruchomieniu program nie wypisuje mi określonych (podanych) funkcji.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ma byc:

 

#include <iostream>using namespace std;double f(double x) {	   if (x<-5) return  (3*(x*x)-1 );	   if (x <2) return 2*x+1;	   return -x;			}int main (){	int x;	cout<<"Podaj x: ";	cin >> x;	cout<<"Wartość f(x) to " << f(x) << "\n";	system("pause");	return 0;	}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

14. Napisz program, który pobierze płeć od użytkownik. Płeć powinna być zmienną typu char i pobierać jeden ze znaków "K" lub "M". Po podaniu znaku powinna zostać wypisana pełna informacja "Kobieta" lub "Mężczyzna".

#include <iostream>#include <ctype>#include <math.h>using namespace std;void wybierz(int K, int M);	K = Kobieta	M = Mężczyzna	pint main(){	int p;	cout<<"Podaj twoją płeć (znak k lub m): ";	cin>>p;	p=	cout<<"Twoja płeć to "<<p<<"\n";	system("pause");	return 0;}
Tworze coś, tylko nie wiem co z tego wyjdzie, proszę o pomoc. Edytowane przez andixad

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#include <iostream>using namespace std;int main() {	char c;	cout << "Podaj pierwszą litere twojej plci ";	cin >> c;	if(c == 'K')		cout << "Kobieta"<<"\n";	else if(c == 'k')		cout << "Kobieta"<<"\n";	else if(c == 'M')		cout << "Mezczyzna"<<"\n";	else if(c == 'm')		cout << "Mezczyzna"<<"\n";	else		cout << "Blad!";	system("pause");	return 0;}
Czy tak moze być? Bo jezeli uzytkownik wpisze np: 'k' zamiast 'K' to wtedy nie wyskoczy komunikat 'blad' tylko 'Kobieta'. A tak by mogło być? (c == 'm' == 'M')

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

po co...

 

if( c=='k' || c='K') cout<<"kobieta";else if( c=='m' || c='M') cout<<"mezczyzna";

Na przyszłość, warunki można łączyć za pomocą || - lub, && - i, ! - negacja

 

np czy liczba jest z przedziału otwartego 25..35, czyli jesli x>25 i x<35

if( x>25 && x<35 )

lub, jeśli x jest równe 5 lub y różne od 3

if( 5==x && y!=3 )

pamiętać należy o podwójnym == bo ten operator zwraca typ bool (prawda lub fałsz), Tutaj uzyłem porównania 5==x zamiast x==5, choc oba są poprawne, to w przypadku błędu np if( x=5 ) zwróci zawsze prawdę, bo wykona się operator przypisania = a nie porównania ==. Zatem kompilator pozwoli na przypisanie x=5 ale nie pozwoli na 5=x. Kompilatory zazwyczaj ostrzegają warningiem jeśli w konstrukcji if() znajduje sie przypisanie, ale nieraz można je przeoczyć... więc jeśli ktoś jest roztragniony to lepiej niech porównuje 5==x niż x==5 ;)

 

Jesli powyższe warunki nie działają, być może chodzi o priorytety operacji, może sie zdarzyć że kompilator w wyrażeniu if( x>25 && x<35 ) najpierw sprawdzi 25 && x, a nastepnie będzie kombinował z x> i <35, aby mieć pewność że kompilator dobrze porówna x>25 a potem x<35 a następnie sprawdzi czy zaszedł iloczyn logiczny to najlepiej brać pojedyncze warunki w nawias, czyli

if( (x>25) && (x<35) )

Oczywiscie operatorów logicznych i warunków można dawać ile dusza zapragnie z racjonalnym umiarem :)

if(  (((godzina==22) && (minuta==22)) || ((godzina==11) && (minuta==11))) && (dzien!=poniedzialek') ) cout<< "ale mamy fajną godzinę :]\n";
tutaj sprawdzam warunek następujący, jeśli godzina jest 22 i (&&) minuta 22 lub (||) godzina jest 11 i (&&) minuta jedenasta i dzien jest inny (!=) niż poniedziałek to mamy fajną godzinę.. Można się pogubić trochę w nawiasach więc skomplikowane wyrażenia warto pisać kilkulinijkowo

if( (	   ( (godzina==22) && (minuta==22) ) 	   || ( (godzina==11) && (minuta==11) )	) 	&& (dzien!=poniedzialek') 	) 	  cout<< "ale mamy fajną godzinę :]\n";
Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

16. Napisz program, który pobierze wiek użytkownika, a następnie wypisze jeden z konunikatów : przedszkolak, szkoła podstawowa, gimnazjum itd.

 

Jak się podaje przedział liczbowy? (potrzebuje do zad 16)

 

 

---------------------------

 

31. Napisz program, który pobierze liczbę sekund i wypisze ile to jest godzin ile minut i ile sekund.

#include <iostream>using namespace std;int main (){ void ileGodzinIleSekund(int pom){			 if (pom>3600)			 cout<<"godzin"<<pom/3600<<endln;			 pom %=3600;			 if (pom>60)			 cout<<"minut"<<pom/60<<endln;			 pom%=60;			 cout<<"sekund"<<pom<<endln;			 }system("pause");return 0;}

Napotkane błędy:

4 -- a function-definition is not allowed here before '{' token

4 -- expected `,' or `;' before '{' token

 

Ja nie wiedzieć co tu poprawić :? .

 

------------------------

(37. Oblicz sumę wszystkich liczb całkowitych od 1 do 10.

38. Do powyższego zadania dodaj jeszcze średnią tych liczb.)

39. Dwa powyższe zadania należy udoskonalić tak, by działały nie na konkretnych liczbach od 1 do 10, ale na liczbach z podanego zakresu.

#include <iostream>using namespace std;void wypisz(int a,int b){	 int sum, i;sum=0;for(i=a;i<=b;i++) sum+=i;cout<<sum;cout<<((double)sum)/((double)a-b);	system("pause");	return 0;}
Na 'return 0' sie zatrzymuje i działać nie chce...

 

---------------------

35. Wypisz liczby od 5 do 15 w porządku rosnącym.

#include <iostream>using namespace std;void wypisz(int a,int b){		 int i;		 if (b<a){		 i =a;		 a =b;		 b=i;		 }for(int i=5;i<=15;i++) cout<<i<<"\n";}int main(){cout<<wypisz<<"\n";system("pause");return 0;}
Tu jak sie uruchomi to tylko '1' pokazuje i koniec. :angry: Edytowane przez andixad

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

16. Napisz program, który pobierze wiek użytkownika, a następnie wypisze jeden z konunikatów : przedszkolak, szkoła podstawowa, gimnazjum itd.

Jak się podaje przedział liczbowy? (potrzebuje do zad 16)

 

void wypisz (int wiek)

{

*char g= "gimnazjum";

*char sp ="szkoła podstawowa"

*char p="przedszkolak";

*char ptr=sp;;

if ( wiek<7)

ptr = p;

else if (p>13)

ptr =g;

cout<<ptr;

}

---------------------------

 

 

31. Napisz program, który pobierze liczbę sekund i wypisze ile to jest godzin ile minut i ile sekund.

#include <iostream>using namespace std;int main (){ void ileGodzinIleSekund(int pom){			 if (pom>3600)			 cout<<"godzin"<<pom/3600<<endln;			 pom %=3600;			 if (pom>60)			 cout<<"minut"<<pom/60<<endln;			 pom%=60;			 cout<<"sekund"<<pom<<endln;			 }system("pause");return 0;}
Napotkane błędy:

4 -- a function-definition is not allowed here before '{' token

4 -- expected `,' or `;' before '{' token

Ja nie wiedzieć co tu poprawić :? .

 

Rzuć te studia . :twisted2:

 

------------------------

Edytowane przez Haquim

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie działa, czy dodatkowa biblioteka jeszcze jest potrzebna, czy co?

#include <iostream>using namespace std;void wypisz(int wiek){	int main(){	int ptr;*char p="przedszkole";*char sp="szkoła podstawowa"*char g="gimnazjum";*char ptr=sp;if ( wiek<7)ptr = p;else if (p>13)ptr=g;cout<<wypisz;}	system("pause");	return 0;}
Edytowane przez andixad

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Haquim po co tworzysz wskaźnik na tablicę znaków? Przecież nie ma takiej potrzeby.

bo lubię :banana:

 

Nie działa, czy dodatkowa biblioteka jeszcze jest potrzebna, czy co?

Nie nie jest potrzebna. Wystarczy nie zagnieżdżać ciałek funkcji w innych funkcjach .

 

void a(){  cout<<"dsdwe";}int main(){   a();return 0;}

DOBRZE

 

int main(){   void a()  {  cout<<"dsdwe";  }return 0;}
ŹLE

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No rzeczywiście :wink: , niby nic, ale jednak kolejność jest ważna. Też tak próbowałem ,ale mi nie wychodziło bo pewnie gdzieś indziej był błąd i ja tego nie zauważyłem.

Edytowane przez andixad

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

No rzeczywiście :wink: , niby nic, ale jednak kolejność jest ważna. Też tak próbowałem ,ale mi nie wychodziło bo pewnie gdzieś indziej był błąd i ja tego nie zauważyłem.

 

Powoli zaczyna mnie wkurzać to zadanie:

 

#include <iostream>using namespace stdint main(){		 *char p = "przedszkolak";	 *char sp = "szkoła podstawowa";	 *char g = "gimnazjum";	 *char ptr = sp;	int p, sp, g, ptr;	if ( wiek<7)	ptr = p;	else if (p>13)	ptr = g;	cin>>wiek;	cout<<wypisz;	system("pause");	return 0;}
Nie rozumiem czego nie rozumiesz

 

PS: Nie będę kontynuował konwersacji tym wątku , wracam pisać kompilator pa :dontfeedtrolls:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

przy okazji, nie stosuj bardzo głupiego rodem z JAVY sposobu blockowania kodu, bo to utrudnia wyszukiwanie błędów...

czyli zamiast

void main {   int i=3;   for(int i=0; i<20; i++){   //kod...   }}
Lepiej pisać...

void main {   int i=3;   for(int i=0; i<20; i++)   {		//kod...   }}

tracisz jedną linijkę kodu - zyskujesz przejrzystość...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

przy okazji, nie stosuj bardzo głupiego rodem z JAVY sposobu blockowania kodu, bo to utrudnia wyszukiwanie błędów...

czyli zamiast

void main {   int i=3;   for(int i=0; i<20; i++){   //kod...   }}
Lepiej pisać...

void main {   int i=3;   for(int i=0; i<20; i++)   {		//kod...   }}

tracisz jedną linijkę kodu - zyskujesz przejrzystość...

Trzeba się cieszyć, że używa w ogóle {} niektórzy stają się mistrzami w unikaniu klamer. Potem jak się patrzy na taki kod to konia z rzędem temu, kto rozpozna co jest od czego.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dlaczego mi nie chodzi ten program?

Program sam z siebie jest źle zakodowany. Podaj jeszcze raz zadanie i ten program, który napisałeś. Tak, żeby było razem wszystko.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

"Podaj pierwszą literę twojej płci" ? ? ? Co to ma być. Program jest zły. Daj zmienną np. unsigned short zamiast char. Char pobiera Ci znak. I gdy porównujesz zmienną w standardowy sposób to nie otrzymasz poprawnego wyniku. Pomyśl trochę, przynajmniej się czegoś nauczysz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

"Podaj pierwszą literę twojej płci"

:-P nie zauważyłem :-P

 

Czy tak jest teraz ok??

#include <iostream>using namespace std;unsigned short wiek;int main(){int wiek;	cout << "Podaj wiek ";	cin >> wiek;	if(wiek<=4)		cout << "przedszkolak"<<"\n";	else if(wiek<=13)		cout << "Szkoła podstawowa"<<"\n";	else if(wiek<=16)		cout << "gimnazjum"<<"\n";	else		cout << "Blad!";	system("pause");	return 0;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

33. Napisz program, który wypisuje 10 razy Twoje imię.

#include <iostream>using namespace std;int main(){int i;	cout<< "Podaj imie:  ";	cin>>i; 	for(int i=0;i<10;i++)	cout<<i<<endl;system("pause");return 0; }
Po podaniu imienia, zamiast imienia wypisuje w kolumnie liczby 0-9. :?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Eee, a od kiedy to sie stringa wczytuje do inta? :mur:

W tym temacie nie takie rzeczy się działy...

 

Musisz utworzyć tablicę znaków, albo stringa, bo inaczej tego nie zrobisz. Szczególnie próbując wczytaj zmienną znakową do zmiennej całkowitej.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak?

#include <iostream>using namespace std;int main(){stringcin>>y;for (x = 10; x > 0; x--){  printf y;}system("pause");return 0;}
nie

#include <iostream>using namespace std;int main(){char imie[15];cin>>imie;for (int i = 10; i > 0; i--){  printf("\n %s",imie);}system("pause");return 0;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Aha, a słyszałem, że Java jest trudniejsza niż C++.

Podobna na 1 rzut oka ale im dalej sie w nią wgłębia tym coraz wiecej różnic wychodzi.

 

 

Teoretycznie jej celem było być uproszczoną wersją c++ i tak defacto było przez jakiś czas ale teraz to już jest wg. mnie troche chory język.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie chcąc niepotrzebnie zakładać nowego tematu chciałem sie zapytać jak utworzyć plik *.exe za pomocą C++ lub *.ini który by sie ładował za pomocą autostaru wykonując zadanie: uruchom 'wskazany plik' w dodzinach 12.00-15.00. I żeby było też tak ze on na bieżąco sprawdza godzinę. Bo jeżeli komputer uruchomię np o 10.00 to żeby też zadziałał o 12.00.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie



×
×
  • Dodaj nową pozycję...