Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++] Pomocy.


Rekomendowane odpowiedzi

Opublikowano

Czy ktoś byłby w stanie napisać program który np od 1000 bedzie odejmował dana wartośc np 75 i na koniec wyświetlił ile razy ta liczba mieści sie w tej pierwszej. Próbowałem to zrobił ale niestety marnie mi to wyszło.

Mój kod który nie działa ;/

#include <iostream>
#include <cstdlib>


using namespace std;

int number1,number2,number3,i=0;

int main(){
	
	number1=1000;
	number2=75;
	
	while(number1>>0){

		number3=number1-number2;
		number1==number3;
		if(number1<0)number1==0;
		i+1;
		
	}
	
	cout<<"\n"<<i;
}

Jeśli ktoś może mi wytłumaczyc jeszcze co tu zrobiłem źle.

Opublikowano

wyświetlił ile razy ta liczba mieści sie w tej pierwszej

To się nazywa dzielenie.

 

while(number1>>0){
To nie operator logiczny, to przesunięcie bitowe. '>' to operator "lewa strona większa od prawej" a '>>' to przesunięcie bitowe w prawo.

 

Prosz:

#include <iostream> //std
#include <conio.h> //getch

using namespace std;

int main()
{
	int num1 = 1000, num2 = 75, num3; //deklaracje

	num3 = num1 - num2; //odejmowanie
	num3 /= num2; //dzielenie

	cout << num3; //wyświetlanie
	_getch(); //czekanie na użytkownika
	return 0;
}
846331404756772371599.jpeg
Opublikowano

Takie pytanie mam do Ciebie ...

Czy zastanawiales sie nad tym co napisales?

Sprawdz lepiej pierwsze czy program Ci smiga zamiast dawac bledny kod , bo wedlug mnie liczba 75 miesci sie w 1000 ,13 razy a nie 12 ;]

 

 

#include <iostream> //std
#include <conio.h> //getch

using namespace std;

int main()
{
	int num1 = 1000, num2 = 75, num3; //deklaracje

	num3 = num1 - num2; //odejmowanie
	num3 /= num2; 

	cout << num3; //wyświetlanie
	_getch(); //czekanie na użytkownika
	return 0;
}

 

 

Wytlumacz mi po co odejmowac num2 od num1 a potem dzielic to przez num2 ?

num3 = num1 - num2; //odejmowanie
	num3 /= num2; 
        cout << num3;
----------------------//Tak w ogole mogles to prosciej zapisac
cout<<((num1-num2)/num2);

Ja bym to tak napisal :

#include <iostream>
using namespace std;
int main()
{
float a=5,b=2.6;

   cout<<int(a/b);

return 0;
}

Jezeli ma to byc tak jak w temacie poprzez odejmowanie to tak ,')

#include <iostream>
using namespace std;
int main()
{
float a=5,b=2.6;
int i=0;

 while((a-=>=0)   i++;
 	
   cout<<i;
  
return 0;
} 
Opublikowano

REPREDATOR... ponieważ tak jest czytelniej i łatwiej zrozumieć?

Niektórzy nie są tak ogarnięci jak ty czy ja, i nie zrozumieli by nic z twojej składni, a nie trzeba sobie skracać kodu na czym tylko się da, bo milion razy lepiej jest żeby był minimalnie wolniejszy ale czytelny, niż narypać mnóstwo skróconego kodu a potem nie móc dojść ładu. Zrobiłem to tak, żeby on albo jakiś newbie który szuka takiego rozwiązania bez problemu to zrozumiał. Mogłem zrobić to wszystko tak:

 

#include <iostream>
#include <conio.h>
int main()
{int num1=1000,num2=75;num1=(num1-num2)/num2;std::cout<<num1;_getch();return 0;}
i by zadziałało.

 

A tak swoją drogą, jak już wytykamy sobie błędy:

int i=1;

 while((a-=>=   i++;
Po co zaśmiecasz pamięć niepotrzebną zmienną 'i', skoro do takich rzeczy służy pętla for? I po co zaśmiecasz procesor pętlą, skoro to jest zwykłe dzielenie?

 

bo wedlug mnie liczba 75 miesci sie w 1000 ,13 razy a nie 12 ;]

Od kiedy w 1000-75, 75 mieści się 13 razy?
846331404756772371599.jpeg
Opublikowano

Jeśli ktoś może mi wytłumaczyc jeszcze co tu zrobiłem źle.

 

#include <iostream>
#include <cstdlib>


using namespace std;

int number1,number2,number3,i=0;

int main(){
	
	number1=1000;
	number2=75;
	
	while(number1>>0){

		number3=number1-number2;
		number1==number3;
		if(number1<0)number1==0;
		i+1;
		
	}
	
	cout<<"\n"<<i;
}

 

Postaram sie Ci cos nie cos naswietlic , moze zrozumiesz .')

 

1. Widac ,ze masz problem z operatorami , np. mylisz operator porownania wartosi z operatorem przypisania. Zapamietaj ,ze :

 

przypisanie  =
porownanie  ==

----------------------------------------------
Z reszta tutaj masz fajnie opisane operatory:

http://www.algorytm.edu.pl/wstp-do-c/operatory-w-c.html#logiczne
http://cpw.net.pl/c++/artykuł/264/ 

 

2.

number3=number1-number2;
number1==number3;

Dobrze tutaj wymysliles , tylko mozna prosciej a dzialanie jest takie samo

numer1=numer1-numer2
3.

i+1;

musi byc
i++; badz i+=1; 

4.

while(number1>>0){

		number3=number1-number2;
		number1==number3;
		if(number1<0)number1==0;
		i+1;
		
	}
Pomijac to ze w petli do sprawdzania uzyles zlego operatora, nie mozesz sprawdzac czy numer1>0 .

Na przykladzie Ci pokaze .

 

 

a=5,b=2.6

warunek (a>0) jezeli sie zgadza to 
krok 1.) a=5-2.6 ,czyli a=2.4 

warunek (a>0) jezeli sie zgadza to 
krok 2.) a=2.4-2.6 ,czyli a= -0.2

warunek (a>0) juz sie nie zgadza 
Zapewne sam widzisz ,ze wychodzi na to ,iz liczba 2.6 miesci sie w 5, 2x ,a to chyba jest nie mozliwe ;]

 

Teraz obadaj ten warunek

a=5,b=2.6

warunek (a> jezeli sie zgadza to 
krok 1.) a=5-2.6 ,czyli a=2.4 


warunek (a> juz sie nie zgadza
Czyli juz jestesmy na dobrej drodze , bo wynika na to ze 2.6 miesci sie tylko 1x

 

Teraz pozostal jeszcze 1 przypadek , co jesli (a==b ) ,czyli a=2.6 i b=2.6

Musimy uzyc odpowiedniego operatora 

>= , wieksze badz rowne

a=5.2,b=2.6

warunek (a>= jezeli a jest wieksze badz rowne b to program smiga dalej
krok 1.) a=5.2-2.6 ,czyli a=2.6 

warunek (a>= (2.6>=2.6) , zgadza sie wiec kolejny krok
krok 2.) a=5.2-2.6 ,czyli a=0

I tym wlasnie prostym sposobem wypada rozwiazac to zadanie ;)
Opublikowano

A tak swoją drogą, jak już wytykamy sobie błędy:

int i=1;

 while((a-=>=   i++;
Po co zaśmiecasz pamięć niepotrzebną zmienną 'i', skoro do takich rzeczy służy pętla for? I po co zaśmiecasz procesor pętlą, skoro to jest zwykłe dzielenie?

 

Przeciez napisalem ,ze tak bym to zrobil ,jezeli nie musi byc tak jak w temacie poprzez odejmowanie !

#include <iostream>
using namespace std;
int main()
{
float a=5,b=2.6;

   cout<<int(a/b);

return 0;
}

Od kiedy w 1000-75, 75 mieści się 13 razy?

Program który od 1000 bedzie odejmował dana wartośc 75 i na koniec wyświetlił ile razy ta liczba mieści sie w tej pierwszej.

 

Wydaje mi sie z tego co wniskuje z tematu ze zadanie powinno tak byc napisane , moze latwiej byloby Ci je zrozumiec;]

Program który od 1000 do 0 bedzie odejmował dana wartośc 75 i na koniec wyświetlił ile razy dana wartosc zmieściła sie w tej pierwszej.

 

@ Odnosie tego "Po co zaśmiecasz pamięć niepotrzebną zmienną 'i', skoro do takich rzeczy służy pętla for? I po co zaśmiecasz procesor pętlą, skoro to jest zwykłe dzielenie?"

 

Mozesz napisac kod ktory bedzie ODEJMOWAŁ , uzywajac petli for ?

Opublikowano

@topic niech się wypowie, bo nie można oceniać o co mu dokładnie chodzi. I niech się nauczy dokładniej opisywać problem, bo to, że jako jedyny dostrzegłeś takie rozwiązanie nie oznacza od razu że jest ono prawidłowe.

 

@down to nie nabijaj sobie postów

 

@down na to samo wychodzi jak w przypadku while, źle spojrzałem.

846331404756772371599.jpeg
Opublikowano

kubus_puchatek29.gifOdpal, pobaw się, pokombinuj...

 

int main()
{  
for(int i=0,j=100,l=10;((j-=l)>-1)||printf("%d",i)<0;i++);
}

 

Jak juz tak zaszalales i caly kod zmiesciles w wyrazeniu petli , to natchnales mnie na taki pomysl ,')

int main()
{ 
 int i=0,a=100,b=10;
 while((a-=>=0?++i:!printf("%d",i));
}
@ 55 znakow udalo mi sie wyciagnac ,ale Sopel i tak lepszy ,')
Opublikowano

&amp;amp;nbsp;

Sopel, wypadasz z formy:
int main() {
for(int i=0,j=100,l=10;((j-=l)>-1)||printf("%d",i)<0;i++); //58 znaków
}

int main(){   
 for(int i=0,j=100,l=10;j-l*i>=l||!printf("%d",i);++i); //54 znaki
}

;P

 

PS.

można też tak

 

for(int i=0,j=100,l=10;j-l*i>=l||!(cout<<i);++i);
49 znaków[/code]

ale chciałem zostać przy printf

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...