» »

problem with c/c++ like program

problem with c/c++ like program

boss-tech ::


#include

int err(char niz1[],char niz2[])
{

int rez=0,i=0,j=0;

while(niz1[i]!='\0')i++;
while(niz2[j]!='\0')j++;
i=i+j;
j=0;
if((niz1[0]=='\0')||(niz2[0]=='\0')) rez=1;
if(i>74) rez=2;
if((niz1[0]=='\0')&&(niz2[0]=='\0')) rez=3;
else{rez=4;}
return (rez);
}


void zdruzi(char niz1[],char niz2[],&niz3)
{
int i=0,j=0;

do{
(*niz3[i])=niz1[i];
i++;
}
while(niz1[i]!='\0');
j=0;
do{
(*niz3[i])=niz2[j];
j++;
}
while(niz2[i]!='\0');
(*niz3[i])='\0';

}



main()
{
char niz1[51],niz2[51],niz3[76];
int rez;
niz3[0]=1;
printf("Vpisi 1 niz:");
scanf("%s",&niz1);

printf("Vpisi niz 2:");
scanf("%s",&niz2);

rez=err(niz1,niz2);
if(rez==4)
{
zdruzi(niz1,niz2,&niz3);
}

switch (rez)
{
case 1: printf("Eden od nizov je prazen!");break;
case 2: printf("Skupna dolzina obeh nizov je vecja od 74!");break;
case 3: printf("Oba niza sta prazna!");break;
default: printf("zdruzen niz je: %s",niz3);
}

}

yabadak ::

A to je C++ ?:D
Poletje je toplo in zima je hladna

napsy ::

hm. Jst domnevam da ti program neki združuje nize. Sam problem bi mogoče nastal pri main() funkciji, ker uporablaš scanf() za vnos niza. Če bi bili vmes presledki, nebi zaznal ves niz.
"If you die, you die. But when you live you live. There is no time to waste."

OwcA ::

Kaj ko bi napisal v čem je težava, ne pa da se igramo slepe miši...

boss-tech ::

vpišemo 2 niza, če je 1 ali oba niza prazna izpiše eror, prav tako če je sestevek obeh vecji od 74; potem ta niz izpišemo- uporabimo funkcijo

OwcA ::

Eno trivialno vprašanja, zakaj raje ne uporabiš že napisanih funkcij oziroma razredov, naprimer std::string?

boss-tech ::

treba je blo tko naredi- po učiteljevi zahtevi

OwcA ::

Še vedno sicer ne vem konkretnega problema.
Vsekakor pa malo poglej indeksiranje v funciji zdruzi(). V drugem delu namreč za niz3 še vedno uporabljaš kot indekes i, ki pa ne povečuješ. j=0; je odveč (inicializiral si že v deklaraciji). (*niz3[i])='\0'; je takisto odveč, saj je prazen char[255] zapisan v obliki "\0\0\0...\0" 256x, tako tudi ko ga popolnoma "napolniš" še vedno ostane zadnji \0. Nisem čisto prepričan, vendar se mi zdi, da bi moralo biti "\0" in ne '\0' (z dvojnim narekovajem).
Lahko bi tudi rahlo optimiziral zadnji del main(). Če je rez = 4, je odgovor jasen in switch ni potreben (torej ga prestavi v drugo vejo if-a kjer previriš, če je rez = 4). Za default potem raje vzemi neveljavno napako (nikoli se ne ve... :D ).

Zgodovina sprememb…

  • spremenilo: OwcA ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

narediti tabele in izvajati sql ukaze

Oddelek: Pomoč in nasveti
181445 (1128) killa bee
»

Pomoč pri Javi

Oddelek: Programiranje
11810 (610) Spura
»

asm - vnos stevilk s tipkovnice

Oddelek: Programiranje
51283 (1139) scarymovie
»

Pomoc v C-ju

Oddelek: Programiranje
51309 (1221) rfmw
»

Naloga v C-ju pomoč

Oddelek: Programiranje
112460 (2060) keworkian

Več podobnih tem