Podanie elementu tablicy string jako wartosci funkcji

0

Tak jak w temacie, czy jest to możliwe

 
            string liczba;
            if(liczba.length() == 1)
            cout<<jednosci(__**liczba[0]**__)<<endl;
            if(liczba.length() == 2)
            cout<<dziesiatki(__**liczba[0]**__)<<" "<<jednosci(__**liczba[1]**__)<<endl;
    

string jednosci(string tekst)
{
   
   if(tekst == '1')return "jeden";
   if(tekst == '2')return "dwa";
   if(tekst == '3')return "trzy";
   if(tekst == '4')return "cztery";
   if(tekst == '5')return "piec";
   if(tekst == '6')return "szesc";
   if(tekst == '7')return "siedem";
   if(tekst == '8')return "osiem";
   if(tekst == '9')return "dziewiec";  
}
string dziesiatki(string tekst)
{
  if(tekst=='2')return "dwadziescia";  
}

bez błędu typu

C:\Dev-Cpp\main.cpp invalid conversion from `char' to `const char*' 
1

liczba to u ciebie string a nie tablica stringów!
liczba[0] to jest JEDNA LITERKA ze stringa.

0

I o to własnie chodzi i dlatego jeżeli ktoś poda "liczbe" "21" to najpierwsz kod przeskanuje liczba[0] (czyli dwa i wypisze dwadziescia) a pozniej jednosci liczba[1]. Być może że nazwałem temat

0

argumenty funkcji
jednosci()
i
dziesiatki()
powinny być typu char (najlepiej const)

0
string jednosci(char tekst)
0
19 C:\Dev-Cpp\main.cpp invalid conversion from `char' to `const char*' 

Tez nie da rady

0

A moze łaskawie pokażesz caly kod? o_O

0

Wybaczcie :
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

string jednosci(string tekst);
string dziesiatki(string tekst);

int main()
{
int t;
string liczba;
cin>>t;
while(t--)
{
cin>>liczba;
if(liczba.length() == 1)
cout<<jednosci(liczba[0])<<endl;
if(liczba.length() == 2)
cout<<jednosci(liczba[0])<<" "<<dziesiatki(liczba[0])<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}

string jednosci(char tekst)
{
if(tekst == '1')return "jeden";
if(tekst == '2')return "dwa";
if(tekst == '3')return "trzy";
if(tekst == '4')return "cztery";
if(tekst == '5')return "piec";
if(tekst == '6')return "szesc";
if(tekst == '7')return "siedem";
if(tekst == '8')return "osiem";
if(tekst == '9')return "dziewiec";
}
string dziesiatki(string tekst)
{
if(tekst=='2')return "dwadziescia";
}

0

No i chyba widzisz gdzie jest błąd? Do funkcji dziesiatki powinieneś wysłać stringa a wysyłasz liczba[cośtam] czyli char! A wewnątrz robisz porównanie string == char które też nie zadziała z wiadomych przyczyn.
Już nawet nie wspominam o tym że deklaracje funkcji mają inne sygnatury niż definicje... Ty to piszesz notatnikiem? o_o

0

Zmień to:

string jednosci(string tekst);
 string dziesiatki(string tekst);

i to:

string jednosci(char tekst /*tu przyjmujesz chara, ale w deklaracji masz, że przyjmujesz stringa. Ta funkcja dla funkcji main nie istnieje*/)
 {   
    if(tekst == '1')return "jeden";
    if(tekst == '2')return "dwa";
    if(tekst == '3')return "trzy";
    if(tekst == '4')return "cztery";
    if(tekst == '5')return "piec";
    if(tekst == '6')return "szesc";
    if(tekst == '7')return "siedem";
    if(tekst == '8')return "osiem";
    if(tekst == '9')return "dziewiec";   
 }
 string dziesiatki(string tekst /*przyjmujesz stringa a nie chara*/)  
 {
   if(tekst=='2' /*porównujesz string == char*/)return "dwadziescia";  
 }
0

może napiszęto prościej, bo was nie zrozumie i będzie kolejny głupi post...

w deklaracjach tych obu funkcji i w ich definicjach argument powinien być typu char. Jak na razie zmieniłeś tylko w jednej definicji. Jeszcze zmień to w 3 miejscach...

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