for (int i = 0; napis[i] != '0'; i++)
Powinno być:
for (int i = 0; napis[i] != '\0'; i++)
Zastanów się również nad używaniem string, zamiast łańcuchów w stylu C. Dzięki temu mógłbyś napisać to dużo prościej:
#include <iostream>
#include <cstdlib>//to do system("pause"), ale lepiej skorzystac z cin.get()
#include <string>
using namespace std;
int main()
{
int tablica[1000], rozmiar, wybor;
string napis;
cout << "MENU" << endl;
cout << "1. Pobieranie liczby elementow" << endl;
cout << "2. Wyswietlanie dodatnich elementow" << endl;
cout << "3. Wyswietla napis az do 0" << endl;
cout << "4. Liczenie spacji" << endl;
cin >> wybor;
cin.ignore();
switch (wybor)
{
case 1:
cout << "Podaj liczbe elementow (maksymalnie 1000): ";
cin >> rozmiar;
for (int i = 0; i < rozmiar; i++)
{
cout << "Podaj " << i + 1 << " element tablicy";
cin >> tablica[i];
}
case 2:
for (int i = 0; i < rozmiar; i++)
{
if (tablica[i] > 0) {
cout << endl << tablica[i] << endl;
}
}
case 3:
cout << "Wpisz linie tekstu ";
getline(cin, napis);//pobierz linie tekstu z konsoli i zapisz ja w napis
cout << "Twoj tekst: " << napis << endl;
case 4:
int spacja = 0;
cout << "Wpisz linie tekstu";
getline(cin, napis);//pobierz linie tekstu z konsoli i zapisz ja w napis
for (size_t i = 0; i < napis.size(); i++)//napis.size() reprezentuje obecna dlugosc napisu
{
if (napis[i] == ' ') {
spacja++;//inkrementacja, czyli dodanie 1 do aktualnej wartosci zmiennej
}
}
cout << "Liczba spacji w Twoim tekscie: " << spacja << endl;
}
system("pause");
}
Generalnie to menu nie ma większego sensu, bo i tak trzeba najpierw skorzystać z opcji numer 1, aby móc skorzystać z opcji numer 2 (inaczej wartości będą niezainicjalizowane) oraz bez względu na wybór użytkownika będą wykonywane pozostałe opcje case np. użytkownik podaje 3, a wykonywane są 3 i 4 (to ze względu na brak instrukcji break; przed następnym case).