• 6 odgovora
  • 4.626 pregleda
[Zadatak] Napisati funkciju s imenom adresa() koja ... 31.12.2005. u 01:28 · pre 253 meseci #1
molim vas da mi pomognete ja sam nesto pokusao ali mi ne ide bas ovaj unos ni ispis u glavnoom programu inace jedna nesto malo kontam iz ovih pokazivaca i stringova

zadatak glasi :
1. Napisati funkciju s imenom adresa() koja kao argument uzima dva stringa koji predstavljaju ime i
prezime a kao rezultat vraća novi string koji se dobije tako da se string koji predstavlja prezime
promijeni u string koji predstavlja e-mail adresu slijedećeg oblika:
[prezime].[ime]@yahoo.com
Prototip funkcije je:
char *adresa(char *ime, char *prezime)
Na primjer, ako su argumenti ime=“Marko“, prezime=“Markovic“ funkcija adresa() vraća pokazivač
na rezultirajući string prezime koji je promijenjen u novi string oblika:
[email protected]
Nakon toga, napisati glavni program koji učitava ime i prezime neke osobe i na standardnom izlazu
ispisuje toj osobi pridruženu e-mail adresu koja se dobije pozivom funkcije adresa().


moj pokusaj:

Code:

#include<stdio.h>
char *adresa(char *ime, char *prezime)
{
    int i;
    char ostatak[]="@yahoo.com";
    char *p=prezime;
    while(*prezime !='\0')
    {
        prezime++;
    }
    *prezime='.';
    prezime++;
    while (*ime='\0')
    {
        *prezime=*ime;
        prezime++;
        ime++;
    }
    i=0;
    while(ostatak[i]='\0')
    {
        *prezime=ostatak[i];
        prezime++;
        i++;
    }
    *prezime='\0';
    return p;
}
int main()
{
    char ime[20], prezime[30];
    printf("\nUnesite ime: ");
    scanf("%c", &ime);
    printf("\nUnesite prezime: ");
    scanf("%c", &prezime);
    while (*adresa(ime,prezime)!='\0')
    {
        printf("%c",*adresa(ime,prezime));
        *adresa(ime,prezime)=*adresa(ime,prezime)+1;
    }
    return 0;
}

ovo sam malo uz materijale sa predavanja napisao ali upadnem u neki beskonacno dugi ispis nekih brojeva (ne znam vec kako se to zove)
molim pomozite mi

hitno mi je!
Re: [Zadatak] Napisati funkciju s imenom adresa() koja ... 31.12.2005. u 09:10 · pre 253 meseci #2
Mozda moze nesto ovako:

Code:
#include<stdio.h>
#include<string.h>

char *adresa(char *ime, char *prezime)
{
    strcat(prezime, ".");
    strcat(prezime, ime);
    strcat(prezime, "@yahoo.com");
    
    return prezime;
}
int main()
{
    char ime[100], prezime[100];

    printf("\nUnesite ime: ");
    scanf("%s", &ime);
    printf("\nUnesite prezime: ");
    scanf("%s", &prezime);
    printf("\n%s\n\n",adresa(ime,prezime));
    
    return 0;
}
Re: [Zadatak] Napisati funkciju s imenom adresa() koja ... 31.12.2005. u 09:19 · pre 253 meseci #3
Da li neko pazi na konverziju velikih u mala slova?

Ako radis staticko resenje (sto je verovatno slucaj), verovatno zelis da koristis staticki niz unutar f-je koja resava problem ili neki globalni. U svakom slucaju se vraca pokazivac na njega. Evo primera dinamickog resenja:

Code:
// dinamicki...

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

unsigned int strl(const char*p)
{
    const char * q = p;
    while(*q) q++;
    return q-p;
}

void strcatlow(char *dest,const char*src)
{
    while(*dest) dest++;
    while(*dest = tolower(*src)) dest++,src++;
}

char *adresa(char *ime, char *prezime)
{
    static char add[] = "@yahoo.com";
    
    char * p = (char*) malloc( strl(ime) + 1 + strl(prezime) + strl(add) + 1 );
    *p = 0;
    strcatlow(p,ime);
    strcatlow(p,".");
    strcatlow(p,prezime);
    strcatlow(p,add);

    return p;
}

main()
{
    char * p = adresa("Milan","Milanovic");

    printf("%s",p);

    // ne zaboraviti...
    free ( p ) ;
    
    return 0;
}
Potpis
Ipak se ++uje.
Re: [Zadatak] Napisati funkciju s imenom adresa() koja ... 31.12.2005. u 09:22 · pre 253 meseci #4
1. U gornjem kodu treba prvo dodati prezime pa ime. Trenutno stoji obrnuto.
2. Uzgred, input stringova ide sa:
Code:
char a[30];
scanf("%s",a);

3. Mislim da yahoo ne dozvoljava tacke unutar imena naloga...

[Ovu poruku je menjao Mali Misha dana 31.12.2005. u 10:39 GMT+1]
Potpis
Ipak se ++uje.
Re: [Zadatak] Napisati funkciju s imenom adresa() koja ... 31.12.2005. u 15:14 · pre 253 meseci #5
Evo tvog rešenja, ali naravno malo modofikovanog. Ovo treba da radi:

Code:
#include<stdio.h>

char *adresa(char *ime, char *prezime)
{
    int i;
    char ostatak[]="@yahoo.com";
    char *p=prezime;
    while(*prezime !='\0')
    {
        prezime++;
    }
    *prezime='.';
    prezime++;
    while (*ime!='\0')
        *prezime++=*ime++;

    i=0;
    while(ostatak[i]!='\0')
        *prezime++=ostatak[i++];
        
    *prezime='\0';

    return p;
}
int main()
{
    char ime[20], prezime[30];
    char *pp;
    
    printf("\nUnesite ime: ");
    scanf("%s", &ime);
    printf("\nUnesite prezime: ");
    scanf("%s", &prezime);
    
    pp=adresa(ime,prezime);
    
    while (*pp !='\0')
        printf("%c",*(pp++));
        
    printf("\n");
    
    return 0;
}
Potpis
"Verovatno da preko nje mnoge sile kontrolišu mnogo šta..." - GANDOR
"Kada bi ljudski mozak bio tako jednostavan da bismo mogli da ga shvatimo, onda bismo mi bili toliko glupi da ga ipak ne bismo mogli shvatiti."
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme