Pomoć oko zadaće (2 zadatka)

Teme vezane za console/GUI programiranje u C/C++ jeziku
10 post(ov)a • Stranica: 1/1.

Pomoć oko zadaće (2 zadatka)

PostPostao/la Heisenberg » 08 lip 2014, 14:36

1. zadatak
Korisnik u glavnom programu unosi rečenicu. Koristeći rekurzije ispisati, u obrnutom poretku, sve riječi u rečenici.

Npr: Ovo je moja zadaca iz programiranja
Ispis: programiranja iz zadaca moja je Ovo


2. zadatak
Korisnik bira koliko decimalnih brojeva želi popuniti dva zasebna niza brojeva (veličina tih dvaju nizova može biti različita).
Definiraju se 2 dinamička niza onih veličina koje je odabrao korisnik.

Potrebno je definirati treći dinamički niz te u njega upisati brojeve oba prethodna niza ali na taj način da se brojevi upisuju u obrnutom redosljedu i iz svakog niza po jedan.
Nakon što su, u slučaju da su nizovi različite duljine, potrošeni brojevi jednog niza, do kraja se upišu preostali brojevi iz duljeg niza.

Sve (osim brojača petlji) definirati preko pokazivača.
Na kraju programa dealocirati memoriju.

Npr:

Uneseni NIZ1: 10 20 30 40 50 60 70 80 90
Uneseni NIZ2: 1 2 3 4 5

Rezultat NIZ3: 90 5 80 4 70 3 60 2 50 1 40 30 20 10


Kasnije cu napravit predstavljanje, rok za predaju zadace je do 23:55, a i moram ucit za teorijski dio koji je sutra.

edit: zaboravio sam nadodat. jezik je c++ a software koji koristim je Visual Studio 2012.
edit2: rok za predaju zadace je do 23:55, pa bi bilo lijepo kada bi to realizirali. Inace se nece uvaziti.
He who dares, wins.

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la gagiD » 08 lip 2014, 15:52

1.

Nije rekurzija al ce uradit posao, ako budem imo inspiracije za rekurziju stavit cu i to :D

cpp code
#include <iostream>
#include <string>

using namespace std;

void unazad(string &m) {
string tmp = m;
int l = m.length() -1, i(0);
while ( l >= 0 ) {
m[i] = tmp[l];
i++;
l--;
}
}
int main()
{
string s, sr , tmp ;
cout<<"Unesite reecenicu"<<endl;
getline(cin , s);

int l = s.length() - 1;

while ( l >= 0) {
if ( s[l] != ' ' ) {
tmp.push_back(s[l]);
} else {
unazad(tmp);
sr += tmp;
sr += " ";
tmp.clear();
}
l--;
}

unazad(tmp);
sr += tmp;

cout<<"Obrnuta recenica:"<<endl;
cout<<sr<<endl;


return 0;
}


2.

cpp code
#include <iostream>

using namespace std;

int main() {
int n1,n2;
cout<<"Unesite velicinu nizova"<<endl;
cin>>n1>>n2;

int* niz1 = new int[n1];
int* niz2 = new int[n2];
int* niz3 = new int[n1+n2];

for ( int i = 0 ; i < n1 ; i++ ) {
cout<<"niz1["<<i<<"]=";
cin>>niz1[i];
}
for ( int i = 0 ; i < n2 ; i++ ) {
cout<<"niz2["<<i<<"]=";
cin>>niz2[i];
}

int m , b(0);
if ( n1 > n2 ) m = n1;
else m = n2;

for ( int i = 0 ; i < m ; i++) {
if ( i < n1 ) {
niz3[b] = niz1[i];
b++;
}
if ( i < n2 ) {
niz3[b] = niz2[i];
b++;
}
}

for ( int i = 0 ; i < b ; i++) {
cout<<niz3[i]<<" "<<endl;
}

delete[] niz1;
delete[] niz2;
delete[] niz3;

return 0;
}


Nego pusti teoriju nju ces naucit usput vjezbajuc :)

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la Heisenberg » 08 lip 2014, 16:13

Probao sam prvi kod, radi ali bilo bi ljepse kada bi bila rekurzija, tako je navedeno u zadatku. Sada idem pogledat drugi.
He who dares, wins.

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la Tracer » 09 lip 2014, 14:50

Što se tiče rekurzije probaj ovo:

cpp code
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
using namespace std;

void ispis(const char* recenica){
char rijec[256];
if(sscanf(recenica, "%s", rijec) != EOF){
ispis(&recenica[strlen(rijec) + 1]);
cout << rijec << " ";
}
}
int main(){
string recenica;
//cout << "Unesite recenicu: ";
//getline(cin, recenica);
recenica = "Ovo je moja zadaca iz programiranja";
ispis(recenica.c_str());
return 0;
}


Iako, rekurzije jako rijetko koristim pa sam možda i zahrđao.

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la Timur » 10 lip 2014, 00:44

Pozz!!

da ne pravim duplu temu( a ako zasmeta slobodno premjestite) trebao bih pomoc oko dva zadataka :D

slika

vidim da je dosta necitljivo ovo pa cu jos jednom ovdje to napisat dakle...

zad I.

U dva vektora zapisani si brojevi . Napisite funkciju FORMIRAJ koja ce formirati novu datoteku
"brojevi.txt". Funkcija usporedjuje medjusobno brojeve koji se nalaze u vektorima te u datoteku zapise uvijek onaj broj elemenata vektora koji je veci.





zad II.
u datoteci "telefon.txt" nalaze se zapisani telefonski brojevi studenata na nacin da prvo pise
ime i prezime studenata, a u sljedecm redu njegov telefonski broj . Napisite funkciju
STUDENT_TELEFON koja ce vratiti telefonski broj za trazeno ime i prezime studenata.
Funkcija ima jedan parametar , ime i prezime studenata.

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la gagiD » 10 lip 2014, 01:00

Timur je napisao/la:Pozz!!

da ne pravim duplu temu( a ako zasmeta slobodno premjestite) trebao bih pomoc oko dva zadataka :D

zad I.

U dva vektora zapisani si brojevi . Napisite funkciju FORMIRAJ koja ce formirati novu datoteku
"brojevi.txt". Funkcija usporedjuje medjusobno brojeve koji se nalaze u vektorima te u datoteku zapise uvijek onaj broj elemenata vektora koji je veci.



Ne smeta :)

Nego, vektori su iste duzine i ispituje se koji je veci od dva broja koji imaju isti index ?

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la Timur » 10 lip 2014, 01:26

@gagiD

funkcija usporedjuje brojeve koji se nalaze u vektorima te zapisuje onaj broj elemenata u vektoru koji je veci , , indexi su razliciti

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la gagiD » 10 lip 2014, 02:20

Evo mozes ovo iskoristit za 2. , a za prvi stvarno nisam siguran sta f-ja tacno treba da radi tako da nisam napiso. :-??

cpp code
#include <iostream>
#include <fstream>
#include <string>
#include <map>

using namespace std;

map<string,string> imenik;

string student_telefon(string m) {
for ( map<string,string>::iterator it = imenik.begin() ; it != imenik.end() ; ++it ) {
if ( m == it->first) return it->second;
}
return "Korisnik ne postoji";
}

int main() {
ifstream fajl;
fajl.open("telefon.txt");

string tmpIP , tmpB;

if ( fajl.is_open() ) {
while (1) {
if ( !getline(fajl,tmpIP) ) break;
if ( !getline(fajl,tmpB) ) break;
imenik.insert(pair<string,string>(tmpIP,tmpB));
}
fajl.close();
} else cout<<"Fajl nije otovoren"<<endl;

// Ispis Imenika
for ( map<string,string>::iterator it = imenik.begin() ; it != imenik.end() ; ++it ) {
cout<<"Ime: "<<it->first<<" Broj: "<<it->second<<endl;
}

string ime;

cout<<"Unesite trazeno ime"<<endl;
getline(cin , ime);

cout<<"Broj: "<<student_telefon(ime)<<endl;

return 0;
}

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la Timur » 10 lip 2014, 12:59

gagiD je napisao/la:Evo mozes ovo iskoristit za 2. , a za prvi stvarno nisam siguran sta f-ja tacno treba da radi tako da nisam napiso. :-??


Thx

u prvom zadatku je nesto slicno ovom , mda nisam siguran ...

cpp code
void FORMIRAJ(vector<int>vec1, vector<int>vec2) {
ofstream writeFile("brojevi.txt");

for (int i = 0; i < vec1.size(); i++) {
if (vec1[i] > vec2[i])
{
writeFile << vec1[i] << endl;
}
else {
writeFile << vec2[i] << endl;
}
}
writeFile.close();
[/quote]

Re: Pomoć oko zadaće (2 zadatka)

PostPostao/la gagiD » 10 lip 2014, 13:31

Za 2. zadatak, samo format telefon.txt neka ti bude:

Ime Prezime[ENTER]
Broj[ENTER]
.
.
.

Samo neka nema razmaka jer getline cita sve do '\n' (znaka za novi red).


Da tako ako treba po tom pravilu da upisuje.
A ako trebaju u jednom redu da se ispisu u fajl, onda:

cpp code
writeFile << vec1[i] << " ";


10 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.