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

[Problem] Mix problemów (prostych)


Rekomendowane odpowiedzi

Opublikowano

Witam.

Ostatnio wróciłem do C++ po pół roku przerwy i wszystko jadę od podstaw.

Więc w tym temacie będę dodawał błędy czy też problemy jakie mnie napotkają, ponieważ nie ma sensu robienia co i rusz nowego tematu :)

Dzisiaj napotkałem problem podczas zabawy z funkcjami a właściwie przy Swith , Case :)

Oto kod:

 

 

 

 
#include <iostream>
using namespace std;
 
 
void moja_funkcja()
    {
    cout<<"(1) Odejmij "<<endl;
    cout<<"(2) dodaj "<<endl;
    cout<<"(3) Pomnoz "<<endl;
    cout<<"(4) wyjscie "<<endl;    
}
 
void odejmowanie()
{
    cout<<"podaj pierwsza liczbe: ";
    int odejmowanie;
    cin>> odejmowanie;
    cout<<""<<endl;
    cout<<"podaj druga liczbe: ";
    int odejmowanie2;
    cin>>odejmowanie2;
    cout<<"Wynik odejmowania wynosi: "<< odejmowanie - odejmowanie2 <<endl;
    
}
void dodawanie()
{
    cout<<"Jeszcze nie oprogramowano."<<endl;
}
void mnozenie()
{
    dodawanie();
}
 
int main()
{
    int wybor;
    
    do{
 
    moja_funkcja();
    cin>>wybor;
    switch(wybor>0)
    {
        case 1:
            cout<<"Wybrano odejmowanie. "<<endl;
            odejmowanie();
        
        case 2:
        mnozenie();
            
            case 3:
                dodawanie();
        }
    }while(wybor!=4);
return 0;
}

 

 

kod błędu : (linia 48) F:\Funkcje.cpp [Warning] case label value exceeds maximum value for type [enabled by default]

 

2utq9g5.png b6u4qg.png
Opublikowano
Opublikowano

Sopelek wielkie dzięki.

Sam nie wiem jak mogłem tego nie zauważyć :/

Jeśli będę miał jeszcze jakieś problemy będę je tu wrzucał .

 

TEN PROBLEM JUZ ROZWIAZANY

2utq9g5.png b6u4qg.png
Opublikowano

Kolejny problem .

Czy pod operację switch case mogę podstawić literę np. "c"

 

Przykładowy kod:

 

A i jak zatrzymać kod aby po np. złyp podaniu w case nie wyłączał się odrazu tylko wyświetlił komunikat i po kliknieciu dopiero gasł ?

 
char c;
cin>>c;
cout<<"wybrales odpowiedz "<<c<<endl;
switch(a)
{
    case c:
        cout<<"twierdzisz ze do osiagniecia pelnoletnosci brakuje ci tylko 2 lat ?"<<endl;
        cout<<"jesli tak podaj date swoich urdzin (sam rok)"<<endl;
        int wiek;

SORRY ZA 2 POSTY POD RZAD NIE ZAUWAŻYŁEM

2utq9g5.png b6u4qg.png
Opublikowano

Witam.

Kolejny problem.

 

mam taką tablicę zmiennych w pętli:

 


	int zmienna[10];
	int zmienne=0;
	do
{
	zmienna[zmienne];
	zmienne++;
	
}(zmienne<10);// while

I chciałbym np. wybrać z tej tablicy (0-9zmiennych) wybrać zmienną z numerem 5 jak to zrobić ?

Bo wiem że jeżeli jest coś takiego:

 

 

#include<iostream>
using namespace std;
int main()
{
	int zmienna[10];
	int zmienne=0;
	do
{
	zmienna[zmienne];
	zmienne++;
	
}(zmienne<10);// while
do
{
cin>>zmienna[zmienne];
zmienne=0;
zmienne++;
}(zmienne<10);//while
}// main

 

 

To w miejscu cin>> podajemy 10 kolejnych liczb a ja chce wybrać jedną zmienną z tej tablicy np. z numerem 5

z gry dzięki

2utq9g5.png b6u4qg.png
Opublikowano
zmienna[4]; //przy indeksowaniu od zera, piąta wartość

?!

 

No problem.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Jak inaczej napisać tą linijkę bo takie coś nie przechodzi :

int wynik = srednia1[0]+srednia1[1]+srednia1[2]+srednia1[3]+srednia1[4]+srednia1[5]+srednia1[6]+srednia1[7]+srednia1[8]+srednia1[9]+srednia1[10]+srednia1[11]+srednia1[12]+srednia1[13]+srednia1[14]+srednia1[15]+srednia1[16]+srednia1[17]+srednia1[18]+srednia1[19]/20;
2utq9g5.png b6u4qg.png
Opublikowano

Jak już to średnią daj do float.

 

Pododawaj w pętli do jednego wyniku operatorem "+=", a później podziel przez 20.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Jak już to średnią daj do float.

 

Pododawaj w pętli do jednego wyniku operatorem "+=", a później podziel przez 20.

"Pododawaj w pętli do jednego wyniku operatorem "+=", a później podziel przez 20."

Jak to zrobić bo za bardzo nwm o co ci chodzi

2utq9g5.png b6u4qg.png
Opublikowano

Tworzysz zmienną, załóżmy sumaliczb.

float sumaliczb = 0;

nadajesz mu od razu wartość 0, po nazwie będziesz wiedział o co chodzi.

Robisz pętle, która ma wykonać się 20 razy.

 

for(int i=0; i<20; i++)

 

A w tej pętli będziesz po kolei dodawał wartości z poszczególnych zmiennych w tablicy do zmiennej sumaliczb, w ten sposób.

sumaliczb += tablica[i];

 

Jak już cała pętla przejdzie, to dzielisz sumaliczb przez 20 i voila! masz swoją ulubioną średnią arytmetyczną.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Tworzysz zmienną, załóżmy sumaliczb.

float sumaliczb = 0;
nadajesz mu od razu wartość 0, po nazwie będziesz wiedział o co chodzi.

Robisz pętle, która ma wykonać się 20 razy.

for(int i=0; i<20; i++)

A w tej pętli będziesz po kolei dodawał wartości z poszczególnych zmiennych w tablicy do zmiennej sumaliczb, w ten sposób.

sumaliczb += tablica[i];

Jak już cała pętla przejdzie, to dzielisz sumaliczb przez 20 i voila! masz swoją ulubioną średnią arytmetyczną.

zrobiłem coś takiego ale wychodzą mi głupoty w wyniku

#include<iostream>
using namespace std;
int main()
	{
	cout<<"Wybrano liczenie sredniej z jednego przedmiotu"<<endl;
	int wynik;
	int srednia1[20];
	int ilosc=0;
		cout<<endl;
		cout<<"Podaj 20 ocen, jesli posiadasz ich mniej reszte wpisz jako 0"<<endl;
		
		do
	{
		cin>>srednia1[ilosc];
		ilosc++;
		}while(ilosc<3); //while
		
		cout<<"Twoja srednia to: "<<wynik<<endl;
		for(int i=0; i<3; i++)
		{
		 wynik += srednia1[i];
	}
		

}// SREDNIA1
2utq9g5.png b6u4qg.png
Opublikowano


    (...)
    ilosc++;
}while(ilosc<3);

Wychodzi z petli po podaniu 3 liczb, a nie 20 jak zakłada etykieta tekstowa.

cout<<"Twoja srednia to: "<< wynik <<endl;
for(int i=0; i<3; i++)
{
	wynik += srednia1[i];
}

najpierw wypisujesz zmienną "wynik" a dopiero później liczysz średnią...

W c++ zmienne przy inicjowaniu przyjmują losowe wartości więc pisze Ci głupoty.

 

Druga sprawa to średniej nie liczy się dodając do siebie liczby. Oczywiście dodaje się do siebie wszystkie liczby, ale później trzeba podzielić wynik przez ilość tych liczb.

Zmienna wynik powinna być typu float chyba że chcesz mieć tylko liczby całkowite jako średnia.

 

#jeszcze jeden kwiatek

cout<<"Podaj 20 ocen, jesli posiadasz ich mniej reszte wpisz jako 0"<<endl;

Jeżeli wpiszesz resztę jako 0 wpłynie to na wynik.

Przykład, mając "przymus" podania 4 liczb:

5,5,0,0

Średnia nie będzie wcale 5 pomimo że ma tylko takie oceny tylko

(5+5+0+0)/4, a to wyniesie 2.5

Opublikowano

@up

Większość tych błędów specjalnie nie poprawiałem bo nie miałem czasu ale wiem co trzeba zrobić .

Nie wiem natomiast jak zrobić aby te 3 podane liczby były wczytane do tego wynik +=srednia1;

2utq9g5.png b6u4qg.png
Opublikowano

Jak poprawisz te błędy to samo wyjdzie z 3 liczbami Twoimi średnia będzie wyglądać mniej-więcej tak:

for(int i=0; i<3; i++)
	{
		 wynik += srednia1[i];
	}
wynik/=iloscLiczb;
cout<<"Twoja srednia to: "<<wynik<<endl;

Pamiętaj tylko wyzerować zmienną wynik np przy inicjacji wpisać od razu:

int wynik=0;
Opublikowano

Nareszcie !

Już napisałem tą funkcję obliczania średniej.

Oto ona:

 

 

#include<iostream>
using namespace std;
int main()
{
	int liczby[50];
	int ilosc_liczb = 0;
	cout<<"Podaj z ilu liczb chcesz obliczyc srednia."<<endl;
	cin>>ilosc_liczb;
	
	
	int ilosc = 0 ;
	float wynik = 0;
	cout<<"podaj "<<ilosc_liczb<<" liczb."<<endl;

		do
		{

			cin>>liczby[ilosc];
			ilosc++;
			}while(ilosc<ilosc_liczb);// while
			
			for(int i = 0; i<ilosc_liczb; i++)
			{
				wynik +=liczby[i];
				}// for
	wynik /=ilosc_liczb;
	cout<<"Srednia 5 liczb to : "<<wynik<<endl;
	
}// main


 

 

Powiedzcie co można w niej zmienić :)

2utq9g5.png b6u4qg.png
Opublikowano

A do czego ?

do wsyzstkiego

 

władowałeś wszystko do main i nazywasz to funkcją obliczającą średnią?

 

 

#include<iostream>
using namespace std;
float srednia(int* liczby, int iloscLiczb)
{
    int sum = 0;
    for(int i = 0; i<iloscLiczb;++i)sum+=liczby[i];
    return ((float)sum)/iloscLiczb;
}
int main()
{
    int* liczby;
    int iloscLiczb;
    cout<<"Podaj z ilu liczb chcesz obliczyc srednia."<<endl;
    cin>>IloscLiczb;
    liczby = new int[iloscLiczb];
    cout<<"podaj "<<iloscLiczb<<" liczb."<<endl;
    for(int i = 0;i<iloscLiczb;++i)cin >> liczby[i];
            
    cout<<"Srednia liczb to : "<<srednia(liczby, iloscLiczb)<<'\n';
    
}// main
 

lub

#include<iostream>
using namespace std;
int main()
{
    int iloscLiczb, sum = 0;
    cout<<"Podaj z ilu liczb chcesz obliczyc srednia."<<endl;
    cin>>IloscLiczb;
    cout<<"podaj "<<iloscLiczb<<" liczb."<<endl;
    for(int i = 0, liczba;i<iloscLiczb;++i)
    {
       cin >> liczba;
       sum += liczba;
    }
    cout<<"Srednia liczb to : "<<((float)sum)/iloscLiczb<<'\n';
}// main
 
Opublikowano

 

do wsyzstkiego

 

władowałeś wszystko do main i nazywasz to funkcją obliczającą średnią?

 

 

#include<iostream>
using namespace std;
float srednia(int* liczby, int iloscLiczb)
{
    int sum = 0;
    for(int i = 0; i<iloscLiczb;++i)sum+=liczby[i];
    return ((float)sum)/iloscLiczb;
}
int main()
{
    int* liczby;
    int iloscLiczb;
    cout<<"Podaj z ilu liczb chcesz obliczyc srednia."<<endl;
    cin>>IloscLiczb;
    liczby = new int[iloscLiczb];
    cout<<"podaj "<<iloscLiczb<<" liczb."<<endl;
    for(int i = 0;i<iloscLiczb;++i)cin >> liczby[i];
            
    cout<<"Srednia liczb to : "<<srednia(liczby, iloscLiczb)<<'\n';
    
}// main
 
lub
#include<iostream>
using namespace std;
int main()
{
    int iloscLiczb, sum = 0;
    cout<<"Podaj z ilu liczb chcesz obliczyc srednia."<<endl;
    cin>>IloscLiczb;
    cout<<"podaj "<<iloscLiczb<<" liczb."<<endl;
    for(int i = 0, liczba;i<iloscLiczb;++i)
    {
       cin >> liczba;
       sum += liczba;
    }
    cout<<"Srednia liczb to : "<<((float)sum)/iloscLiczb<<'\n';
}// main
 

 

Bo to funkcja zapisana jako program dla wlasnych potrzeb.

Zamieniasz int na void i już masz funkcję :)

tak się czepiasz

2utq9g5.png b6u4qg.png
Opublikowano

Bo to funkcja zapisana jako program dla wlasnych potrzeb.

 

Zamieniasz int na void i już masz funkcję :)

Że tak spytam, czy ty masz jakiekolwiek pojęcie czym jest funkcja, co znaczy int/void etc? Bo z twoich wypowiedzi wynika, że masz podstawowe braki.

Opublikowano

Że tak spytam, czy ty masz jakiekolwiek pojęcie czym jest funkcja, co znaczy int/void etc? Bo z twoich wypowiedzi wynika, że masz podstawowe braki.

wiem :)

 

tak wygląda funkcja :)

void mojafunkcja()

{

//zawartosc

}//koniec funkcji :)

 

tylko kurwa nie zapisałem tego tak bo potrzebowałem tej funkcji jako odrębny program bo posiadam napisany program wielofunkcjyjny do którego była mi potrzebna ta finkcja i aby krócej mi się to włączało i sprawdzało to zapisałem w zwykłej postaci, a jak tak ci zależy to proszę :

 

 

 

void srednia()
{
	int liczby[50];
	int ilosc_liczb = 0;
	cout<<"Podaj z ilu liczb chcesz obliczyc srednia."<<endl;
	cin>>ilosc_liczb;
	
	
	int ilosc = 0 ;
	float wynik = 0;
	cout<<"podaj "<<ilosc_liczb<<" liczb."<<endl;

		do
		{

			cin>>liczby[ilosc];
			ilosc++;
			}while(ilosc<ilosc_liczb);// while
			
			for(int i = 0; i<ilosc_liczb; i++)
			{
				wynik +=liczby[i];
				}// for
	wynik /=ilosc_liczb;
	cout<<"Srednia 5 liczb to : "<<wynik<<endl;
	
}// func

 

2utq9g5.png b6u4qg.png
Opublikowano

Po chuj ci ta tablica?

Nie lepiej tak?

int ilosc_liczb;
int wynik = 0;
cin>>ilosc_liczb;
for(int i=0; i<iloscliczb; i++)
{
int wartosc;     
cin>>wartosc;
wynik+=wartosc;
}
wynik/=2;
cout<<wynik;

 

To że wiesz, jak wygląda funkcja, to nie znaczy, że wiesz, co to jest funkcja i jak powinna działać.

 

 


Zamieniasz int na void i już masz funkcję :)

 

Kompletna bzdura, doucz się :).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Wiem co to funkcja wiem :)

A pozatym to czy to jest funkcja czy inny chuj to nie jest mój problem więc na razie KLOSE :)

 

Pojutrze może coś będę pisał to coś wrzucę jak będę miał problemy z czymś

2utq9g5.png b6u4qg.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...