Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

search funkcija u programu

[es] :: C/C++ programiranje :: search funkcija u programu

[ Pregleda: 3434 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tm87sa

Član broj: 156333
Poruke: 2
85.158.35.*



Profil

icon search funkcija u programu08.09.2007. u 16:38 - pre 202 meseci
pozdrav.Imam jedan big problem ako moze help..Naime radim program telefonski imenik i dosao sam da napravim funkciju za pretrazivanje tog imenika.Imam ideju ali ne znam kako da to izvedem..(preko poredjenja stringova i fgets)
Trebao bi da string varijable ime i prezime uporedim sa ovim u tekst fajlu..Imam neku ideju ali ne znam kako bi realizovao to..Ako hocete postavicu kod programa koji sam uradio..Ako moze neko napisati kod plz.hvala unaprijed

 
Odgovor na temu

obranko
severna amerika

Član broj: 36599
Poruke: 152
*.cpe.net.cable.rogers.com.



+1 Profil

icon Re: search funkcija u programu09.09.2007. u 05:03 - pre 202 meseci
pozdrav,

da bi ti pretrazivanje koje nameravas da radis (trazis stirng u tekst fajlu) bilo brzo, potrebno je da podatke u fajlu uredis (bilo da budu rastuci (aca, braca, caca, daca...) ili opadajuci (daca, caca, braca, aca). kada to ostvaris onda mozes a pretrazujes fajl metodom deljenja intervala na pola. to ti garantuje rezultat u log2 broj imena u falju. jos nesto, posto su ti podaci u fajlu moras da uradis jednu od ove dve stvari da bi radio opisano pretrazivanje:
svi zapsi (record) u tom fajlu moraju biti iste duzine (da bi znao gde da citas fajl koristeci random access) ili ako zapisi mogu biti proizvolje duzine, kada startujes program generises vektor ciji elementi sadrze ofset zapisa od pocetka fajla. posto konfuzno objasnjavam za slucaj aca 111-1111braca 222-2222caca 333-3333daca 444-4444... vektor traba da ima sledece vrednosti: 0, 12, 26, 39.... takodje ako dodajes ili brises imena moras azurirati vektor da bi pretrazivanje i dalje radilo.
 
Odgovor na temu

tm87sa

Član broj: 156333
Poruke: 2
85.158.35.*



Profil

icon Re: search funkcija u programu09.09.2007. u 12:10 - pre 202 meseci
Code:

#include<stdio.h>


char ime[50];
char prezime[50];
char kucni[50];
char mob[50];
FILE *fp;

void add()
{
fp=fopen("Telefonskiimenik.txt","a+");
printf("Dodavanje u imenik\n");
printf("\n");
printf("Unesi ime:");
scanf("%s",&ime);
printf("Unesi prezime");
scanf("%s",&prezime);
printf("Unesi kucni broj:");
scanf("%s",&kucni);
printf("Unesi mobilni broj:");
scanf("%s",&mob);
fprintf(fp,"%s  %s %s\n",ime,prezime,kucni,mob);
fclose(fp);
}


     



main()
{
int izbor;

printf("\t###### ##  ## ###### ##  ## ###### ###### ###### ###### ##  ##\n");
printf("\t##  ## ##  ## ##  ## ### ## ##     ##  ## ##  ## ##  ## ## ##\n");
printf("\t###### ###### ##  ## ###### ###### #####  ##  ## ##  ## ####\n");
printf("\t##     ##  ## ##  ## ## ### ##     ##  ## ##  ## ##  ## ## ##\n");
printf("\t##     ##  ## ###### ## ### ###### #####  ###### ###### ##  ##\n");
      
printf("\n");
printf("1:Dodaj broj\n");
printf("2:Izbrisi\n");
printf("3:Pretrazi\n");
printf("4:Exit\n");
scanf("%d",&izbor);
if (izbor==1)
{
             system("CLS");
             add();
             
             
             }

                           else printf("Niste unjeli ni jedan od ponudjenih opcija");
                           
             getche();
}


Nek vas ne zbunjuje ovo grannje jer tako testiram funkciju koju napravim posto pravim jednu po jednu..znaci napravio sam funkciju za dodavanje i onda sam je testirao :) sad mi treba funkcija za pretrazivanje..

A ti obranko hvala..ali mozes li mi dati konkretan tutorijal o tome?nesto gdje bi mogao to savladati i sl?
Znaic treba mi funkcija za pretrazivanje koja ce spojiti uneseno ime i prezime i traziti ga ..
Hvala
 
Odgovor na temu

android~paranoid

Član broj: 81947
Poruke: 211
212.200.179.*



Profil

icon Re: search funkcija u programu27.09.2007. u 09:23 - pre 201 meseci
Ono sto tebi ustvari treba su LISTE, onda mozes sa strcmp da uporedjujes stringove. Ovo je nesto slicno sto sam radio davno pa sam iskopao stim da ovde nema upisa u fajl...

Code:

/*
3.2.    Napisati program za unos telefonskog imenika (ime i prezime, broj telefona) i
 ispis tog imenika.
3.3.    Napisati program koji telefonski imenik (iz prethodnog zadatka) sortira po 
imenu i prezimenu i ispisuje sortirani imenik.
3.4.    Napisati program koji ispisuje podatke  (ime i prezime) za uneti broj telefona.
 (iz 3.2.)
3.5.    Napisati program koji traži duple zapise u imeniku i ispisuje ih.
*/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

typedef struct element
{
    char ime[15];
    char prezime[20];
    char broj[12];
    struct element *sledeci;
} Elem;

Elem *unos(void);
void ispis(Elem *niz);
Elem *sorti(Elem *lista);
void razmeni(Elem *prvi,Elem *drugi);
void uneti_broj(Elem *lista,char broj[]);
void ispis_jednog(Elem *niz);
void dupli(Elem *lista);

main()
{
 int odg=0;
 Elem *lista=NULL,*sortiran=NULL;
 char broj[12];

 while (odg!=5)
 {
     
     printf("\n\n\t\t\t**********Telefonski Imenik************\n\n\n");
     printf("\t\t\t 1.Unos Novog Imenika\n");
     printf("\t\t\t 2.Ispis Celog Sortiranog Imenika\n");
     printf("\t\t\t 3.Ispisuje podatke za uneti br. tel\n ");
     printf("\t\t\t 4.Ispisuje duple zapise br. tel\n ");
     printf("\t\t\t 5.Izlaz iz programa\n\n ");
     printf("\t\t\t Izaberi :  ");

     scanf("%d",&odg);
     while (getchar()!='\n');

     switch (odg)
     {
     case 1: {lista=unos();sortiran=sorti(lista);printf("\nPovratak u glavni meni\n"); getchar(); break;}
     case 2: {ispis(sortiran); break;}
     case 3: {printf("\nUnesi Broj : ");gets(broj);uneti_broj(sortiran,broj);break;}
     case 4: {dupli(sortiran);break;}
     }
 }

    return 0;
}

Elem *unos(void)
{
   Elem *tekuci=NULL, *niz=NULL, *novi;
   char ime[15],prezime[20],broj[12];
   int odg=0;
   
   while (odg!='N' && odg!='n')
   {
     printf("Unesi ime:\t ");
     gets(ime);
     printf("Unesi prezime:\t ");
     gets(prezime);
     printf("Unesi broj telefona:\t ");
     gets(broj);

     novi=(Elem *) malloc(sizeof(Elem));
     strcpy(novi->ime,ime);
     strcpy(novi->prezime,prezime);
     strcpy(novi->broj,broj);
     novi->sledeci=NULL;

     if (tekuci)
         tekuci->sledeci=novi;
     else
         niz=novi;
     tekuci=novi;
     do{
     printf("\n Zelite li dalje da unosite korisnike? D/N : ");
     scanf("%c",&odg);
     }while (odg!='n' && odg!='N' && odg!='D' && odg!='d');
     
     while (getchar()!='\n');
     
   }
   return(niz);
}

void ispis(Elem *niz)
{
        while (niz)
        {
        puts(niz->ime);
        puts(niz->prezime);
        puts(niz->broj);
        printf("\n\n");
        niz=niz->sledeci;
        }
printf("Pripusi nesto...\n\n");
getchar();
}

Elem *sorti(Elem *lista)
{
    Elem *prvi, *drugi;
    
    prvi=lista;

    while(prvi)
    {
        drugi=prvi->sledeci;

        while(drugi)
        {
            if  (strcmp(prvi->prezime,drugi->prezime) > 0)
                razmeni(prvi,drugi);
            else if (strcmp(prvi->prezime,drugi->prezime) == 0)
            {
                if  (strcmp(prvi->ime,drugi->ime) > 0)
                razmeni(prvi,drugi);
            }

            drugi=drugi->sledeci;
        }

       prvi=prvi->sledeci;
    }

    
printf("Pripusi nesto...\n\n");
getchar();

    return(lista);
    

}

void razmeni(Elem *prvi,Elem *drugi)
{
    Elem *pom;

    pom=(Elem *) malloc(sizeof(Elem));
    strcpy(pom->ime,prvi->ime);
    strcpy(pom->prezime,prvi->prezime);
    strcpy(pom->broj,prvi->broj);

    strcpy(prvi->ime,drugi->ime);
    strcpy(prvi->prezime,drugi->prezime);
    strcpy(prvi->broj,drugi->broj);

    strcpy(drugi->ime,pom->ime);
    strcpy(drugi->prezime,pom->prezime);
    strcpy(drugi->broj,pom->broj);

}
  
void uneti_broj(Elem *lista,char broj[])
{
  Elem *prvi;
    prvi=lista;

    while(prvi)
    {
      if (strcmp(broj,prvi->broj)==0)
      {
         ispis_jednog(prvi);
      }
      prvi=prvi->sledeci;
    
    }


printf("Pripusi nesto...\n\n");
getchar();

}

void dupli(Elem *lista)
{
    Elem *prvi, *drugi;
    
    prvi=lista;

    printf("\n****Ispis duplih****\n\n");

    while(prvi)
    {
        drugi=prvi->sledeci;

        while(drugi)
        {
            if  ((strcmp(prvi->prezime,drugi->prezime) == 0) &&
                (strcmp(prvi->ime,drugi->ime) ==0) &&
                (strcmp(prvi->broj,drugi->broj)==0))
                        ispis_jednog(prvi);
    
            drugi=drugi->sledeci;
        }

       prvi=prvi->sledeci;
    }
    

printf("Pripusi nesto...\n\n");
getchar();    
}

void ispis_jednog(Elem *niz)
{
    Elem *prvi=niz;

      puts(prvi->ime);
      puts(prvi->prezime);
      puts(prvi->broj);
}



Mislim, šta reći !
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
78.90.101.*

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: search funkcija u programu27.09.2007. u 22:27 - pre 201 meseci
Da li bi mogli veliki sourcevi da se kače kao attachment (dugme "upload uz poruku" nakon postavljanja iste)? Daje mnogo veću preglednost. Hvala.
Ipak se ++uje.
 
Odgovor na temu

[es] :: C/C++ programiranje :: search funkcija u programu

[ Pregleda: 3434 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.