rrysio6 Napisano Listopad 19, 2010 Zgłoś Share Napisano Listopad 19, 2010 Coś mnie mój ćwiczeniowca wkręca i nie jestem pewien czy mówi prawdę... Czy macierz zapisana w ten sposob: char tyg[7][20]= { {"Poniedzialek"}, {"Wtorek"}, {"Sroda"}, {"Czwartek"}, {"Piatek"}, {"Sobota"}, {"Niedziela"} }; to to samo jak to? (chodzi mi o zapisanie każdego wyrazu czy też każdej litery w inną komórkę): char tyg[7][20]= { {'P','o','n','i','e','d','z','i','a','l','e','k'}, {'W','t','o','r','e','k'}, {'S','r','o','d','a'}, {'C','z','w','a','r','t','e','k'}, {'P','i','a','t','e','k'}, {'S','o','b','o','t','a'}, {'N','i','e','d','z','i','e','l','a'} }; Jezeli jest tak jak gosc gadal to czy mozna zapisac tak: tab[1]={"cokolwiek"} chodzi o C++ Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 19, 2010 Zgłoś Share Napisano Listopad 19, 2010 Tablica to wskaznik, a ze poprawne jest char* s = "tekst", wiec tamto tez powinno byc poprawne. A nie szybciej to skompilowac i samemu sprawdzic? www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
rrysio6 Napisano Listopad 19, 2010 Autor Zgłoś Share Napisano Listopad 19, 2010 czyli można np te dni tygodnia zapisać do tablicy jednowymiarowej tak, żeby potem przez for'a wyświetlić któryś dzień tygodnia? Link do komentarza Udostępnij na innych stronach More sharing options...
Blind Napisano Listopad 19, 2010 Zgłoś Share Napisano Listopad 19, 2010 jedno wymiarowa nie, chyba ze tablica wskaznikow. A najlepszym rozwiazaniem chyba jest sprintf. www.blinder.pl - Blog Link do komentarza Udostępnij na innych stronach More sharing options...
rrysio6 Napisano Listopad 19, 2010 Autor Zgłoś Share Napisano Listopad 19, 2010 może źle sformuowałem pytanie chodzi o to, że ja myślę, że: char tyg[7][20]= { {"Poniedzialek"}, {"Wtorek"}, {"Sroda"}, {"Czwartek"}, {"Piatek"}, {"Sobota"}, {"Niedziela"} }; jest to samo co to: char tyg[7][20]= { {'P','o','n','i','e','d','z','i','a','l','e','k'}, {'W','t','o','r','e','k'}, {'S','r','o','d','a'}, {'C','z','w','a','r','t','e','k'}, {'P','i','a','t','e','k'}, {'S','o','b','o','t','a'}, {'N','i','e','d','z','i','e','l','a'} }; a gość mi wkręca, że nie... idąc dalej, poniższy kawałek kodu jest poprawny? char tyg[7][20]= { {"Poniedzialek"}, {"Wtorek"}, {"Sroda"}, {"Czwartek"}, {"Piatek"}, {"Sobota"}, {"Niedziela"} }; for (i=0; i<7; i++) { for (j=0; j<15; j++) cout << tyg[j]; cout << endl; } i wyświetli mi (zresztą i wyświetla bo sprawdzałem): Poniedzialek Wtorek Sroda Czwartek Piatek Sobota Niedziela Z tym, że gościu mówi, że mu druga pętla się nie podoba i że nadaremno robi te 15 kroków z tej pętli... Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Listopad 19, 2010 Zgłoś Share Napisano Listopad 19, 2010 może źle sformuowałem pytanie chodzi o to, że ja myślę, że: char tyg[7][20]= { {"Poniedzialek"}, {"Wtorek"}, {"Sroda"}, {"Czwartek"}, {"Piatek"}, {"Sobota"}, {"Niedziela"} }; jest to samo co to: char tyg[7][20]= { {'P','o','n','i','e','d','z','i','a','l','e','k'}, {'W','t','o','r','e','k'}, {'S','r','o','d','a'}, {'C','z','w','a','r','t','e','k'}, {'P','i','a','t','e','k'}, {'S','o','b','o','t','a'}, {'N','i','e','d','z','i','e','l','a'} }; a gość mi wkręca, że nie... idąc dalej, poniższy kawałek kodu jest poprawny? char tyg[7][20]= { {"Poniedzialek"}, {"Wtorek"}, {"Sroda"}, {"Czwartek"}, {"Piatek"}, {"Sobota"}, {"Niedziela"} }; for (i=0; i { for (j=0; j cout cout i wyświetli mi (zresztą i wyświetla bo sprawdzałem): Poniedzialek Wtorek Sroda Czwartek Piatek Sobota Niedziela Z tym, że gościu mówi, że mu druga pętla się nie podoba i że nadaremno robi te 15 kroków z tej pętli... No pewnie, że ta druga pętla jest niepotrzebna. Bo ta tablica 2-wymiarowa to tak jakby tablica stringów. Więc nie musisz po pojedynczych znakach iterować. W tym wypelnianiu tablicy pojedynczymi znakami nie podoba mi sie to, ze nie konczysz lancuchow znakiem 0. Nie jestem teraz przy kompie, żeby sprawdzić (komóra ). Link do komentarza Udostępnij na innych stronach More sharing options...
KaYou Napisano Listopad 20, 2010 Zgłoś Share Napisano Listopad 20, 2010 char tyg[7][20]={ {'P','o','n','i','e','d','z','i','a','l','e','k'}, {'W','t','o','r','e','k'}, {'S','r','o','d','a'}, {'C','z','w','a','r','t','e','k'}, {'P','i','a','t','e','k'}, {'S','o','b','o','t','a'}, {'N','i','e','d','z','i','e','l','a'} }; KODchar tyg[7][20]= { {'P','o','n','i','e','d','z','i','a','l','e','k','\'}, {'W','t','o','r','e','k','\'}, {'S','r','o','d','a','\'}, {'C','z','w','a','r','t','e','k','\'}, {'P','i','a','t','e','k','\'}, {'S','o','b','o','t','a','\'}, {'N','i','e','d','z','i','e','l','a','\'} }; KOD for (i=0; i<7; i++) cout<<tyg<<endl; niewiem czemu, ale zera za ostatnimi backsleshami ucina. "(2b || !(2b)) == question" W. Shakespeare http://jakubniwa.pl - świat sztucznej inteligencji Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Listopad 20, 2010 Zgłoś Share Napisano Listopad 20, 2010 niewiem czemu, ale zera za ostatnimi backsleshami ucina. Czyżby nasze forum nie używało funkcji add slashes i strip slashes ? Link do komentarza Udostępnij na innych stronach More sharing options...
azra Napisano Grudzień 28, 2010 Zgłoś Share Napisano Grudzień 28, 2010 #include <iostream> #include <string> int main() { char two[] = {'W', 't', 'o', 'r', 'e', 'k'}; // ups, na końcu wcale nie musi być '' - jeśli sami go nie dodamy! // np w trybie release akurat działało dobrze, ale w debug już wywalało śmieci char one[] = "Poniedzialek"; // na końcu string literal automatycznie dodawane jest '' std::cout << two << "nn"; (void)one; std::cout << "string literals:n"; char tyg[7][20] = { {"Poniedzialek"}, {"Wtorek"}, {"Sroda"}, {"Czwartek"}, {"Piatek"}, {"Sobota"}, {"Niedziela"} }; for (int i = 0; i < 7; ++i) { for (int j = 0; j < 20; ++j) { if (tyg[i][j] != 0) { std::cout << tyg[i][j]; } else { std::cout << '0'; } } std::cout << "n"; } std::cout << "char literals:n"; char tyg2[7][20] ={ {'P', 'o', 'n', 'i', 'e', 'd', 'z', 'i', 'a', 'l', 'e', 'k'}, {'W', 't', 'o', 'r', 'e', 'k'}, {'S', 'r', 'o', 'd', 'a'}, {'C', 'z', 'w', 'a', 'r', 't', 'e', 'k'}, {'P', 'i', 'a', 't', 'e', 'k'}, {'S', 'o', 'b', 'o', 't', 'a'}, {'N', 'i', 'e', 'd', 'z', 'i', 'e', 'l', 'a'} }; for (int i = 0; i < 7; ++i) { for (int j = 0; j < 20; ++j) { if (tyg2[i][j] != 0) { std::cout << tyg2[i][j]; } else { std::cout << '0'; } } std::cout << "n"; } return 0; } Ponieważ te tablice są statyczne, oraz inicjalizowane literałami, to reszta (tj brakujące znaki) wypełniane są zerami. O ile nazwy dni tygodni będą krótsze o jeden znak od długości tablicy, to wszystko będzie w porządku. Pod tym względem obydwa zapisy dadzą ten sam wynik. Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.