Cos skopalem

0

Witam mam problem z dwoma programami.
1 ma za zadanie podac wartosc podatku od ilosc zarabiania pieniedzy. DONE Program ma tez wypisywac blad przy wypisywaniu wartosci niebedacej liczba. Tu nie dziala :(

#include <iostream>
#include <cctype>
using namespace std;

int main()
{
	int zarobki = 0, podatek = 0;
	cout << "Ile zarabia obywatel Naturlandii: ";
	cin >> zarobki;
	
	/*if(isblank(zarobki))
	{
		cout << "To nie jest liczba.\n";
		exit(0);
	}
		
	else if(ispunct(zarobki))
	{
		cout << "To nie jest liczba.\n";
		exit(0);
	}
	else if (isalpha(zarobki))
	{
		cout << "To nie jest liczba.\n";
		exit(0);
	}*/
	if(zarobki <0)
	{
		cout << "Ujemna wartosc.\n";
		exit(0);
	}
	
	if(zarobki >= 0 && zarobki <= 5000)
	{
		cout << "Wartosc podatku wynosi: " << 0 << endl;
	}
	if(zarobki > 5000 && zarobki <= 15000)
	{
		zarobki = zarobki - 5000;
		podatek += zarobki * 0.1;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}
	if(zarobki > 15000 && zarobki <= 35000)
	{
		podatek = 1000;
		zarobki = zarobki - 15000;
		podatek += zarobki * 0.15;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}
	if(zarobki > 35000)
	{
		podatek = 1000 + 20000 * 0.15;
		zarobki = zarobki - 35000;
		podatek += zarobki * 0.2;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}

	else
	cout << "To nie jest liczba.\n";
	
	system("pause");
    return 0;
}

Natomiast ten prog ma za zadanie otwierac plik *.txt i liczyc ilosc znakow od poczatku do konca. Na koniec podac ta wartosc. Tu tez nie dziala. Co zle zrobilem?

// sumafile.cpp -- funkcje majÄ…ce tablicÄ™ za parametr
#include <iostream>
#include <fstream>          // wejście-wyjście przez pliki
#include <cstdlib>          // funkcja exit()
const int SIZE = 60;
int main()
{
    using namespace std;
    char filename[SIZE];
    ifstream inFile;        // obiekt obsługujący odczyt z pliku

    cout << "Podaj nazwÄ™ pliku z danymi: ";
    cin.getline(filename, SIZE);
    inFile.open(filename);  // połączenie inFile z plikiem
    if (!inFile.is_open())  // nieudana prĂłba otwarcia pliku
    {
        cout << "Otwarcie pliku " << filename << " nie powiodło się.\n";
        cout << "Program zostanie zakończony.\n";
        exit(EXIT_FAILURE);
    }
    char value;
    int count = 0;          // liczba elementĂłw do odczytu

    inFile >> value;        // pobierz pierwszą wartość
    while (inFile.good())   // pĂłki dobre dane i nie EOF
    {
        ++count;            // wczytano kolejnÄ… danÄ… 
        inFile >> value;    // pobranie następnej wartości
    }
    if (inFile.eof())
        cout << "Koniec pliku.\n";
    else if (inFile.fail())
        cout << "Wczytywanie danych przerwane - błąd.\n";
    else
        cout << "Wczytywanie danych przerwane, przyczyna nieznana.\n";
    if (count == 0)
        cout << "Nie przetworzono ĹĽadnych danych.\n";
    else
    {
        cout << "Wczytanych elementĂłw: " << count << endl;
    }
	cout << "Wczytanych elementĂłw: " << count << endl;
    inFile.close();         // plik juĹĽ niepotrzebny
    system("pause");
    return 0;
}
0

Program ma tez wypisywac blad przy wypisywaniu wartosci niebedacej liczba.

Aaaaaleeeee ooooczyyywiście spraaawdzaaaałeś w internecie i NIC nie było na ten temat napisane?

1
if(!(cin>>zarobki)) ...
else if(zarobki<0) ...
else if(zarobki<=5000) ...
else if(zarobki<=15000) ...
else if(zarobki<=35000) ...
else ...
0

Cos dalej mi nie dziala

if(!(cin>>zarobki))
	{
	if(zarobki <0)
	{
		cout << "Ujemna wartosc.\n";
		exit(0);
	}
	
	else if(zarobki >= 0 && zarobki <= 5000)
	{
		cout << "Wartosc podatku wynosi: " << 0 << endl;
	}
	else if(zarobki > 5000 && zarobki <= 15000)
	{
		zarobki = zarobki - 5000;
		podatek += zarobki * 0.1;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}
	else if(zarobki > 15000 && zarobki <= 35000)
	{
		podatek = 1000;
		zarobki = zarobki - 15000;
		podatek += zarobki * 0.15;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}
	else if(zarobki > 35000)
	{
		podatek = 1000 + 20000 * 0.15;
		zarobki = zarobki - 35000;
		podatek += zarobki * 0.2;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}

	else
	cout << "To nie jest liczba.\n";
}
0

1.Co to znaczy "nie działa"?
2.else cout << "To nie jest liczba.\n"; zobacz, do której konstrukcji to się odnosi.

0

Czy rozumiesz różnicę pomiędzy:

if(!(cin>>zarobki)) ...
else if(zarobki<0) ...
else if(zarobki<=5000) ...

a

if(!(cin>>zarobki))
  {
   if(zarobki<0) ...
   else if(zarobki<=5000) ...
  }

?

0

Okej poradzilem sobie. Dziekuje bardzo. Zastanawiam sie jeszcze jak najlepiej zapamietac znaczenie "if(!(cin>>zarobki))"
Dodatkowo czy ostatni else jest potrzebny? Wydaje mi sie tak ale wole sie upewnic. Zostal jeszcze drugi program.

	if(!(cin>>zarobki))
		cout << "To nie jest liczba.\n";
		
	else if(zarobki <0)
	{
		cout << "Ujemna wartosc.\n";
		exit(0);
	}
	
	else if(zarobki >= 0 && zarobki <= 5000)
	{
		cout << "Wartosc podatku wynosi: " << 0 << endl;
	}
	else if(zarobki > 5000 && zarobki <= 15000)
	{
		zarobki = zarobki - 5000;
		podatek += zarobki * 0.1;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}
	else if(zarobki > 15000 && zarobki <= 35000)
	{
		podatek = 1000;
		zarobki = zarobki - 15000;
		podatek += zarobki * 0.15;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}
	else if(zarobki > 35000)
	{
		podatek = 1000 + 20000 * 0.15;
		zarobki = zarobki - 35000;
		podatek += zarobki * 0.2;
		cout << "Wartosc podatku wynosi: " << podatek << endl;
	}

	else
	cout << "To nie jest liczba.\n";
	
0

Bump jeszcze zostalo drugie zadanie!

0
bybue napisał(a):

Bump jeszcze zostalo drugie zadanie!

Bump po godzinie? Ehm...
Poza tym nawet nie raczyłeś napisać, co źle działa.

0

Jeeeju...

Okej poradzilem sobie. Dziekuje bardzo.

czytales to? Juz wiem co zrobilem...

0

Więc wykonałeś bump, chociaż problem jest rozwiązany?

0

Czy ty na prawde czytasz tylko to co chcesz. wkleje ponownie
<quote> Okej poradzilem sobie. Dziekuje bardzo. Zastanawiam sie jeszcze jak najlepiej zapamietac znaczenie "if(!(cin>>zarobki))"
Dodatkowo czy ostatni else jest potrzebny? Wydaje mi sie tak ale wole sie upewnic. Zostal jeszcze drugi program.<foofoo/quote>
Czytaj wszystkie posty, od poczatku do konca..

0

Przecież my mówimy o drugim zadaniu, a Ty przytaczasz cytat z pierwszego, który nijak ma się do mojego pytania.

0

EKHEMMMMMMMMMM
tego wszystkiego nie bylo.


Wracajac do zadania mam jeszcze kilka pytan.
Nie potrafie sobie wytlumaczyc o co chodzi w if(!(cin>>zarobki)). Czy moglby ktos to wyjasnic? I ostatnie pytanie dot. tego programu: czy ostatni else jest potrzebny?

Zostalo jeszcze do rozwiazanie drugie zadanie. Program ma zliczyc ilosc znakow w pliku o nazwie ktora podamy. Wkleje ponownie kod:

#include <iostream>
#include <fstream>          // wejście-wyjście przez pliki
#include <cstdlib>          // funkcja exit()
const int SIZE = 60;
int main()
{
    using namespace std;
    char filename[SIZE];
    ifstream inFile;        // obiekt obsługujący odczyt z pliku
 
    cout << "Podaj nazwÄ™ pliku z danymi: ";
    cin.getline(filename, SIZE);
    inFile.open(filename);  // połączenie inFile z plikiem
    if (!inFile.is_open())  // nieudana prĂłba otwarcia pliku
    {
        cout << "Otwarcie pliku " << filename << " nie powiodło się.\n";
        cout << "Program zostanie zakończony.\n";
        exit(EXIT_FAILURE);
    }
    char value;
    int count = 0;          // liczba elementĂłw do odczytu
 
    inFile >> value;        // pobierz pierwszą wartość
    while (inFile.good())   // pĂłki dobre dane i nie EOF
    {
        ++count;            // wczytano kolejnÄ… danÄ… 
        inFile >> value;    // pobranie następnej wartości
    }
    if (inFile.eof())
        cout << "Koniec pliku.\n";
    else if (inFile.fail())
        cout << "Wczytywanie danych przerwane - błąd.\n";
    else
        cout << "Wczytywanie danych przerwane, przyczyna nieznana.\n";
    if (count == 0)
        cout << "Nie przetworzono ĹĽadnych danych.\n";
    else
    {
        cout << "Wczytanych elementĂłw: " << count << endl;
    }
    cout << "Wczytanych elementĂłw: " << count << endl;
    inFile.close();         // plik juĹĽ niepotrzebny
    system("pause");
    return 0;
}
0

Zostalo jeszcze do rozwiazanie drugie zadanie. Program ma zliczyc ilosc znakow w pliku o nazwie ktora podamy. Wkleje ponownie kod:

Jakie jest pytanie?

0

Za kazdym razem pokazuje to
cout << "Otwarcie pliku " << filename << " nie powiodło się.\n";
cout << "Program zostanie zakończony.\n";
po wpisaniu plik.txt ktory ma w sobie to

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

No czyli nie zlicza ilosci znakow.

0

Czy odpalasz program z konsoli czy z IDE?
Jeżeli z IDE to powiedz z którego.

0

Uzywam 64 bit Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC. jak uzywam ww. to wypisuje blad i tyle. Natomaist jesli wlacze plik.exe to po wpisaniu i zatwierdzeniu insta sie zamyka.

0

Czy nazwa pliku zawiera polskie znaki?

0

nie jestem na tyle pracowity zeby tu wciskac polskie znaki wiec w nazwie pliku tez nie ma.

1
  1. Odpal i podaj jako nazwę pliku źródło tego programu.
  2. Czy masz w ustawieniach windows: - "ukryj rozszerzenia znanych typów" ?
  3. Gdzie znajduje się plik który chcesz otworzyć?
  4. Czy podajesz pełną ścieżkę do pliku?
0

Odpal i podaj jako nazwę pliku źródło tego programu. WAT przykro mi nie zrozumialem.
2 Oznaczylem ta opcje i program nawet dziala z tym ze: plik.txt ma jakies 100 znakow a program wypluwa ze nie ptrzetworzyl zadnych znakow.
3 w tym samym katalogu.
4 nie, daje tak: plik.txt

EDIT przypomnialem sobie ze zmienilem zmianna value z char na int, to byl powod tego ze nie dziala. Zmienilem z powrotem. dziekuje bardzo
Zostalo jeszcze: nie potrafie sobie wytlumaczyc o co chodzi w if(!(cin>>zarobki)). Czy moglby ktos to wyjasnic?

0

Wiem o tym ze ! neguje wartosci typu bool, ale nie potrafie sobie tego wyobrazic w przypadku; if(!(cin>>zarobki)). Dla mnie oznacza to ze jezeli NIE wpiszemy zadnej wartosci to ma wykonac dalsze instrukcje. Ale tak to nie dziala.

0

To jest zanegowanie rezultatu metody (w tym przypadku operatora) a nie sposobu jej działania.
http://www.cplusplus.com/reference/istream/istream/operator%3E%3E/

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