Anonymní profil Martin – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Martin – Programujte.comAnonymní profil Martin – Programujte.com

 

Příspěvky odeslané z IP adresy 89.103.215.–

Martin
C / C++ › Použití returnutého stringu…
11. 4. 2015   #201253

 Diky moc za radu, udelal jsem to nakonec takhle, mozna je to trochu prasarna dole s tou main funkci, ale funguje to tak jak ma. Nevim jestli tam jsou osetreny vsechny pripady :-)

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <list>
#include <algorithm>
#include <iterator>
#include <cctype>


using namespace std;

void uvod(void)
{
    cout << "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n";
    cout << "|||||||||||||                                             |||||||||||||\n";
    cout << "|||||||||||||   Program pro lokalizaci mistnosti   |||||||||||||\n";
    cout << "|||||||||||||                                             |||||||||||||\n";
    cout << "|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n";
}

struct Lokace//...................................................................................................................vytvoreni struktury pro udaje o mistnostech
    {
	string Mistnost;
	string Typ;
	string Budova;
    };

string hledani(void)//............................................................................................................funkce pro nacteni nazvu mistnosti od uzivatele
{
    cout << "\nZadejte nazev hledane mistnosti: ";
    string vstup;
    getline(cin, vstup);
    return vstup;
}

string uppercase(string vstup)//..................................................................................................funkce pro prevedeni celeho stringu do uppercase
    {
    string vystup;
    transform(vstup.begin(),vstup.end(), std::back_inserter(vystup),::toupper);
    return vystup;
    }

string mezery(string vstup)//.....................................................................................................funkce pro odstraneni mezery ze stringu
    {
    string vystup = vstup;
    for(int i=0; i<vystup.length(); i++)
    if(vystup[i] == ' ') vystup.erase(i,1);
    return vystup;
    }

string noveHledani(void)//........................................................................................................funkce pro vyhledani nove mistnosti
    {
    cout << "\nChcete zadat novou mistnost? (Ano/Ne): ";
    string vstup;
    getline(cin, vstup);
    vstup = mezery(vstup);
    vstup = uppercase(vstup);
    if (vstup == "ANO")
        {
        return "Ano";
        }
    if (vstup == "NE")
        {
        exit(0);
        }
    else
        {
        cout << "Chyba v zadavani!\n";
        noveHledani();
        }
    }

void hlavni(void)
    {

    string vstup = hledani();
    vstup = mezery(vstup);
    vstup = uppercase(vstup);
    string vysledek = vstup;
    //cout << "\nProbehlo zadani uzivatelem: " << vysledek << endl;//.............................................................kontrolni vystup hodnoty zadane uzivatelem
    //string vysledek2 = mezery(vysledek);//......................................................................................volani funkce pro odstraneni mezery
    //cout << "\nProbehlo odstraneni mezer: " << vysledek2 << endl;//.............................................................kontrolni vystup zadane hodnoty bez mezer
    //string vysledek3 = uppercase(vysledek2);//..................................................................................volani funkce pro prevod stringu na velka pismena
    //cout << "\nProbehlo prevedeni do uppercase: " << vysledek3 << endl;//.......................................................kontrolni vystup zadane hodnoty bez mezer a v uppercase
    //cout << vysledek3 << endl;//................................................................................................kontrolni vystup pro porovnani
    ifstream file ("file.csv");//.................................................................................................nacteni zdrojoveho souboru s daty o mistnostech
    while (file.good())
        {
        Lokace lokace;
        getline(file, lokace.Mistnost, ',');//....................................................................................nacteni nazvu mostnosti
		getline(file, lokace.Typ, ',');//.........................................................................................nacteni nazvu typu mistnosti
		getline(file, lokace.Budova);//...........................................................................................nacteni nazvu budovy
          if (lokace.Mistnost == vstup)//.........................................................................................porovnani nacteneho stringu se zadanym nazvem mistnosti
            {
            cout << "\n" << lokace.Typ << " " << lokace.Mistnost << " se nachazi v budove " << lokace.Budova << "." << endl;//....vypis nazvu mistnosti spolu s jejim typem a umistenim
            if (noveHledani() == "Ano");
                {
                hlavni();
                }
            }
            }
    cout << "\nMistnost \"" << vstup << "\" nebyla nalezena!\n";
    if (noveHledani() == "Ano");
        {
        hlavni();
        }
    }

int main()
{
    uvod();
    hlavni();
}
Martin
C / C++ › Použití returnutého stringu…
10. 4. 2015   #201245

Zdravím, předem říkám, že nejsem žádný programátor a tak mam s tímhle asi nejspíš triviálním případem trochu problém. Jde mi o to, že mam CSV soubor ve kterém postupně načítám hodnoty po čárku a tyto hodnoty chci porovnat se zadanou hodnotou. Tuto hodnotu chci ale získat pomocí funkce která, když ji zavolám, tak mi do console vypise zadost uzivateli o zadani stringu, tento string pote ulozim do proměnné a tuto proměnnou poté použiju jako návratovou hodnotu z této funkce.

Nevím ale jak to syntakticky napsat, nebo jestli to vubec nejak jde. Jedná se konkrétně hlavně o porovnání if (value == vyhledavani())        

Předem díky za pomoc.         
         

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <list>
#include <algorithm>
#include <iterator>
#include <cctype>
 

using namespace std;

string vyhledavani(string lower, string upper)              

    {
    cout << "Zadejte nazev mistnosti: ";
    cin >> lower;
    transform(lower.begin(),lower.end(), std::back_inserter(upper), ::toupper);
    return upper;
    }

int main()
{

int kontrola=0;

/*
    cout << "Zadejte nazev mistnosti: ";
    string lower;
    cin >> lower;
    string upper;
    transform(lower.begin(),lower.end(), std::back_inserter(upper), ::toupper);
*/
    ifstream file ("file2.csv");                            
    string value;
    list <string> values;
    while (file.good())
    {
        getline (file, value, ',');                         
          if (value == vyhledavani())                         //porovnani nasteneho stringu se zadanym nazvem mistnosti
            {
            string mistnost = value;
            getline (file, value, ',');
            string typ = value;
            getline (file, value, ',');
            string budova = value;
            cout << "\n" << typ << " " << mistnost << " se nachazi v budove " << budova << "." <<endl;    //vypis nazvu mistnosti spolu j jejim typem a umistenim
            int kontrola=1;
            return 0;
            }
      }
      if (kontrola != 1)                            //pokud uzivatel zada mistnost, ktera neni v databazi
      {
      cout << "\nTato mistnost nebyla nalezena!" << endl;
      }
}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý