Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Sortowanie napisów ze względu na ilość małych liter (błąd)

Ostatnio zmodyfikowano 2017-03-05 10:10
Autor Wiadomość
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-03-05 01:55:44
No to rozumiem ale co jeśli wielkość tablicy nadaje mi użytkownik. Po to własnie pytam użytkownika o to ile napisów chce wpisać.

No ale w zadaniu w sumie nie może być więcej niż 10 tych napisów :D

Ale też chyba nie powinienem deklarować tablicy na 10 napisów jeśli użytkownik wpisuje tylko 4 napisy.

Więc chyba wszystko się sprowadza do tego, że muszę to jeszcze jakoś zrobić inaczej :D
P-158555
karambaHZP
» 2017-03-05 01:56:52
P-158556
maly7
» 2017-03-05 01:59:42
Wydaje mi się, że po to w zadaniu jest określona ilość (<10), żebyś mógł właśnie utworzyć tablicę 9 elementową.
Jeśli nie chcesz (nie miałeś jeszcze) tablicy dynamicznej lub vectora (czy czegoś podobnego) to inaczej tego raczej nie zrobisz.
P-158557
karambaHZP
» 2017-03-05 02:06:40
Prosty przykład użycia narzędzi od C++11:
C/C++
#include <iostream>
#include <string>
#include <algorithm> // std::sort
#include <vector> // std::vector

int main()
{
    std::vector < std::string > words; // tablica wyrazów
    std::size_t how_many_words;
    std::cin >> how_many_words;
    for( std::size_t i { }; i < how_many_words; ++i ) {
        std::string tmp;
        std::cin >> tmp;
        words.push_back( tmp ); // dodawanie na bieżąco wyrazu do tablicy
    }
   
    std::sort( words.begin(), words.end(), // funkcja sortująca
    []( const auto & lhs, const auto & rhs ) { return lhs < rhs; } ); // wyrażenie lambda porównujące wyrazy
   
    for( auto const & el: words ) { // wypisanie posortowanej tablicy, pętla oparta na zakrasie
        std::cout << el << '\n';
    }
    std::cout << '\n';
}
P-158558
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-03-05 02:08:11
Ok, to zrobię tego const int.

C/C++
#include <iostream>
#include <string>
#include <math.h>
#include <cstdlib>
#include <ctime>
#include <ctype.h>
using namespace std;





int ilemalych( string napis )
{
   
    int licznik = 0;
    for( int i = 0; i < napis.length(); i++ ) {
       
        if( islower( napis[ i ] ) )
        {
            licznik++;
           
        }
    }
    return licznik;
}

int main()
{
   
    int ilosc;
   
    do {
        const int rozmiar = 10;
        string tab[ rozmiar ];
        cout << "Podaj ilosc napisow : \n ";
        cin >> ilosc;
    } while( ilosc > 10 && ilosc < 0 );
   
   
    for( int i = 0; i < ilosc; i++ ) {
       
       
        cout << "Podaj  napis : \n ";
        cin >> tab[ i ];
       
       
    }
    cout << "Przed  sortowaniem : \n ";
    for( int i = 0; i < ilosc; i++ )
         cout << tab[ i ] << " ";
   
    cout << endl;
   
   
    ilemalych( tab );
   
    cout << "Po  sortowaniu : \n ";
   
   
    for( int i = 0; i < ilosc; i++ )
         cout << tab[ i ] << " ";
   
    cout << endl;
   
   
}

Dostaję błąd, że tab[] nie jest zadeklarowane.
Właśnie z tym też zawsze mam problem jeśli chodzi o tablicę napisów.

W C chyba deklarowałem najpierw to jak:

C/C++
char tab[ N ];

A dzisiaj w internecie widziałem, że w C++ robi się to za pomocą
C/C++
string tab[ N ];

A teraz mam błąd i nie wiem co myśleć.
P-158559
karambaHZP
» 2017-03-05 02:09:46
C/C++
#include <cmath>
#include <cctype>
 jeśli piszemy w C++.

Funkcję
ilemalych
 poprawiłem, bo jest błędna.
Zerknij co tam zrobiłem. Pomiń
std::vector
i dodaj tam
C/C++
int ilemalych( const std::string tab[], std::size_t size )
;
P-158560
maly7
» 2017-03-05 02:11:41
char i string to różne typy zmiennych, i w C i w C++ możesz robić jak chcesz. String to jest ciąg charów. Ty potrzebujesz tutaj string. Wyskakuje Ci, że tab[] nie jest zdefiniowane bo nie jest. Daj gdzieś na początku maina
string tab[ 9 ];
Tzn masz coś takiego w pętli do, ale nie jest ona widoczna poza tą pętlą, dlatego musisz ją dać przed, żeby była dostępna w całym mainie.


nowawieza, zadam Ci takie ważne pytanie :D Ty chcesz się nauczyć czy zdać przedmiot? Jeśli chcesz się nauczyć to wróć do poprzednich lekcji (bo na pewno miałeś tablice jako argument) i poćwicz. Jakieś proste funkcje, żeby zrozumieć jak to działa :D Taka rada.
P-158561
nowawieza
Temat założony przez niniejszego użytkownika
» 2017-03-05 02:12:42
No karamba ja wiem, że Ciebie rozrywa jak widzisz moje próby zapisu :D Ale to są początki i ja nie chcę wyprzedzać toku nauczania studiów :D

Jeszcze nie umiem zbyt dobrze robić funkcji i zarządzać tablicami, a co dopiero wchodzić w wektory itd. :D
P-158562
1 2 « 3 » 4 5 6
Poprzednia strona Strona 3 z 6 Następna strona