eMatematikas.lt
Kategorijos +Nauja tema Prisijungti        

C++ uždavinys. "Kodas". String masyvo pakeitimas.


Sveiki, kažkodėl nespausdina tam tikro kodo(kuris užkoduotas raidėmis). Atrodo lyg padaryta gerai, reiktų pagalbos randant klaidą(spausdinimo funkcijoje parodžiau vietą).
Uždavinio sąlyga yra, kad reikia nuskaityti duomenis ir perspausdinti duotu kodu.

Pradiniai duomenys:
SVEIKI IR SUDIE.  //tekstas kuri reikia pespausdinti užkoduotomis raidėmis.
8      // raidžių kiekis
D _**
E *
I **
K _*_
R *_*
S ***
U **_
V ***_



#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const char in[] = "Duomenys.txt";
const char out[] = "Rezultatai.txt";
const int CMax = 100;

void skaityti(const char in[], string kodas[], string raide[], string & tekstas, int & n);
void spausdinti(const char out[], string raide[], string kodas[], string tekstas, int n);

int main()
{
string tekstas;
int n;
string raide[CMax];
string kodas[CMax];

skaityti(in, kodas, raide, tekstas, n);
spausdinti(out, raide, kodas, tekstas, n);
return 0;
}

void skaityti(const char in[], string kodas[], string raide[], string & tekstas, int & n) {
ifstream fd(in);
getline(fd, tekstas);
cout << tekstas << endl;
fd >> n;
cout << n << endl;
for (int i = 0; i<n; i++) {
fd >> raide[i] >> kodas[i];
cout << raide[i] << "  " << kodas[i] << endl;
}
fd.close();
}

void spausdinti(const char out[], string raide[], string kodas[], string tekstas, int n) {
ofstream fr(out);
string naujas;
cout << tekstas << endl;
int e;
e = tekstas.length();
cout << e << endl;
for (int i = 0; i<e - 1; i++) { //kažkur nuo čia prasideda klaida.
for (int j = 0; j<n; j++) {
if (tekstas[i]) == raide[j])
cout << kodas[i];
}
}

}

Paskutinį kartą atnaujinta 2017-12-07

0

Nesuprantu kodėl "spausdinti" funkcijoje nepraeina "if" patikrinimo..

0

Dabar turėtų veikti:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const char in[] = "Duomenys.txt";
const char out[] = "Rezultatai.txt";
const int CMax = 100;

void skaityti(const char in[], string kodas[], char raide[], string & tekstas, int & n);
void spausdinti(const char out[], char raide[], string kodas[], string tekstas, int n);

int main()
{
string tekstas;
int n;
char raide[CMax];
string kodas[CMax];

skaityti(in, kodas, raide, tekstas, n);
spausdinti(out, raide, kodas, tekstas, n);
return 0;
}

void skaityti(const char in[], string kodas[], char raide[], string & tekstas, int & n) {
ifstream fd(in);
getline(fd, tekstas);
cout << tekstas << endl;
fd >> n;
cout << n << endl;
for (int i = 0; i<n; i++) {
fd >> raide[i] >> kodas[i];
cout << raide[i] << "  " << kodas[i] << endl;
}
fd.close();
}

void spausdinti(const char out[], char raide[], string kodas[], string tekstas, int n) {
ofstream fr(out);
string naujas;
cout << tekstas << endl;
int e;
e = tekstas.length();
cout << e << endl;
for (int i = 0; i<e; i++) { //kažkur nuo cia prasideda klaida.
for (int j = 0; j<n; j++) {
if (tekstas[i] == raide[j])
fr <<kodas[j];
}
}
fr.close();
}

Paskutinį kartą atnaujinta 2017-12-08

0

Tik gal būtų protinga dar bent tarp žodžių sudėti tarpus, bet čia aišku priklauso nuo to kaip sąlygoje tiksliai nurodyta.

0

Taip, sudėsiu. Ačiū labai, bet čia klaida buvo tik dėl to, kad ne char tipo duomenis pasidariau?

0

Jei atidžiau pažiūrėsi, tai pastebėsi dar šiek tiek klaidelių.

0

Norėdami rašyti žinutes privalote prisijungti!