PDA

View Full Version : Molim pomoc oko c++


nera_ri
06.05.2007., 21:38
naime, ako ima koji dobrovoljac da mi rjesi ovaj zadatak?
4. Napisati funkciju za dodavanje niza znakova(izv) na kraj niza znakova odr. Izgled prototipa funkcije je: char * dodniz(char * odr, char * izv); Funkcija kao rezultat vraća pokazivač na rezultat (odr).

ili
10. Napisati program za rad s povezanom listom. Program korisniku nudi zadani izbornik, a svaka od opcija ponuđenih u izborniku treba biti realizirana u zasebnoj funkciji. Elementi liste su cijeli brojevi. Program organizirati tako da se u funkciji main() poziva samo funkcija izbornik(), a iz funkcije izbornik() neka se pozivaju sve ostale funkcije. U funkciji izbornik dozvoljen je samo unos korisnikovog odabira, a unos svih ostalih elemenata treba biti u odgovarajućim funkcijama. Ponavljati ispis izbornika na ekranu sve dok se ne unese 0 – oznaka za izlaz.

IZBORNIK
1 – Unos elementa liste (na početak liste)
2 – 'Pomak liste za n' – briše se prvih n elemenata liste, kod unosa broja n provjeriti ima li uopće toliko elemenata u listi - ima li se što brisati
3 – Ispis elemenata liste
0 – Kraj rada

? hm.. zbilja bi mi pomogao =)

devious
09.05.2007., 01:33
4. Napisati funkciju za dodavanje niza znakova(izv) na kraj niza znakova odr. Izgled prototipa funkcije je: char * dodniz(char * odr, char * izv); Funkcija kao rezultat vraća pokazivač na rezultat (odr).


char *dodniz(char * odr, char *izv){
char *tmp=(char*)malloc(size(izv)+size(odr));
int i,j;
for(i=0;i<size(odr);i++){
tmp[i]=odr[i];
}
i++;
while(++izv[j]){
tmp[i]=izv[j];
i++;
}
return tmp;
}

odiee
09.05.2007., 21:27
char *dodniz(char * odr, char *izv){
char *tmp=(char*)malloc(size(izv)+size(odr));
int i,j;
for(i=0;i<size(odr);i++){
tmp[i]=odr[i];
}
i++;
while(++izv[j]){
tmp[i]=izv[j];
i++;
}
return tmp;
}
????
Sta je ovo??
size(...) ne postoji niti u c++u niti u c-u, postoji sizeof, ali to ce ti opet vratiti LOL, ovo: size(izv) == 4, LOL.
Mislim da si ti ipak htio nesto poput strlen(izv) ili tako nesto? :rolleyes:

nera_ri
10.05.2007., 00:07
decki hvala puno na pomoci... evo kako sam ja to napravila
/

#include <iostream>
using namespace std;
char *dodniz(char *odr, char *izv); //bili ste pisali dodniz(char *odr, char *izv) bez pokazivača
//funkcija vraća pokazivač *dodniz

int main (){
char niz_1[100], niz_2[100], dodani_niz[200];
cout<<"unesite prvi znakovni niz....\n";
cin.getline(niz_1, sizeof(niz_1));

cout<<"unesite drugi znakovni niz....\n";
cin.getline(niz_2, sizeof(niz_2));

cout<<"\nprvi niz je: \n";
cout<<"niz_1="<<niz_1<<endl;
cout<<"\ndrugi niz je: \n";
cout<<"niz_2="<<niz_2<<endl;

cout<<"dodniz="<<dodniz(niz_1,niz_2)<<endl;

return 0;
}
char *dodniz(char *odr, char *izv){

char *temp=odr;
while(*temp!='\0')
temp++; //u ovoj while petlji dodjemo do kraja niza

//nakon toga kopiramo znak po znak niz izv tako da se ne

while(*izv!='\0'){
*temp=*izv;
temp++;
izv++;
}
*temp='\0';
return odr;
}



i

#include<iostream>
using namespace std;

struct cvor {
int podatak;
cvor *veza;
};

void izbornik ();
//funkcija unutar koje se ispisuje izbornik
//korisnik unosi svoj odabir
void unos_elta(cvor *&glava, int &n);
//funkcija za unos elemenata liste
//korisnik unosi koliko elemenata ce upisati
void ispis_elta(cvor *glava, int n);
//funkcija za ispis svih elemenata liste
void pomak(cvor *glava, int n);
//funkcija za pomak za n elemenata
//korisnik sam unosi broj elemeneta koje zeli obrisati

int main () {

izbornik();

return 0;
}

//DEFINICIJE FUNKCIJA:
void izbornik () {
int odabir, n;
cvor *glava=NULL;

do {
do {
cout<<"IZBORNIK: "<<endl;
cout<<"1-unos elemenata liste. "<<endl;
cout<<"2-pomak liste za n elemenata. "<<endl;
cout<<"3-ispis elemenata liste. "<<endl;
cout<<"0- kraj rada. "<<endl;
cout<<"unesite vas odabir: ";
cin>>odabir;
} while (odabir<0 || odabir>3);

switch (odabir) {
case 1:
unos_elta(glava,n);
break;
case 2:
pomak(glava,n);
break;
case 3:
ispis_elta(glava, n);
break;
}
} while (odabir!=0);

cout<<"hvala na koristenju..."<<endl;

return;
}

void unos_elta(cvor *&glava, int &n) {
cvor *novi;
int elt;

cout<<"koliko elemenata zelite upisati?: "<<endl;
cin>>n;

cout<<"unesite elemente: "<<endl;
for (int i=0; i<n; i++)
{
cin>>elt;
novi=new cvor;
novi->podatak=elt;
if (glava==NULL)
{
glava=novi;
glava->veza=NULL;
}
else
{
novi->veza=glava;
glava=novi;
}
}
return;
}


void ispis_elta(cvor *glava, int n) {
cvor *tekuci=glava;

cout<<"ispis svih elemenata liste: "<<endl;
for (int i=0; i<n; i++)
{
cout<<tekuci->podatak<<endl;
tekuci=tekuci->veza;
}

return;
}

void pomak(cvor *glava, int n) {
int m;
cvor *tekuci=glava, *brisanje;

cout<<"za koliko mjesta zelite pomaknuti listu? ";
cin>>m;

if(n<m)
{
/*while(tekuci) {
brisanje=tekuci;
tekuci=tekuci->veza;
delete brisanje;
}*/
cout<<" a jel?? "<<endl;
}
else
{
for (int i=0; i<m; i++)
{
brisanje=tekuci;
tekuci=tekuci->veza;
delete brisanje;
}
glava=tekuci;
}

ispis_elta(glava,n);

return;
}
sto je kolegica prosvjetlila =)

hvala vam jos jednom

odiee
11.05.2007., 08:50
gle Nera, ajde probaj upotrijebljavati code tagove kada postas kod, jer mozda bi neki i htijeli procitati tvoj kod, ali je u ovom obliku jednostavno necitljiv.