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

[Zadatak] Printeri

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Printeri

[ Pregleda: 1491 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

duksi1993
Dušan Stanimirović
PHP Developer
TeleTrader
Beograd

Član broj: 163562
Poruke: 226
*.dynamic.sbb.rs.

Jabber: duksi1993


+2 Profil

icon [Zadatak] Printeri11.06.2011. u 21:28 - pre 156 meseci
Pozdrav,
zadatak koji pokusavam rešiti ima nekoliko delova:

1 deo -> U datoteci 'Printeri.dat' upisuju se strukture sledeće sadržine: proizvođač, naziv, vrsta, mesec proizvodnje (mp), godina proizvodnje (gp), cena i broj komada. Upis u datoteku i prikaz podataka realizovati funkcijama, a u glavnom programu realizovati meni sa opcijama: Unos podataka, Prikaz svih podataka i Kraj rada.

- urađeno... (kod ispod)

2. deo -> Napisati funkciju koja prikazuje sve slogove iz datoteke čije su cene u zadatom opsegu.

3. deo -> Napisati funkciju kojom se prikazuju elementi tražene strukture broj k iz datoteke 'Printeri.dat'. U programu proveriti da li je k u dozvoljenom opsegu vrednosti, a u meniju glavnog programa dodati ovu opciju.

4. deo -> Iz datoteke prikazati sve štampače zadatog proizvođača. Predvideti da korisnik može da unese početni deo naziva proizvođača (koristiti funkciju strstr() za stringove).

Unapred HVALA na bilo kakvoj pomoci, bila ona resenje ili ideja... :)

Kod za 1. deo:

Code:
#include <stdio.h>
#include <stdlib.h>
      
struct stampaci {
       char naziv[50];
       char vrsta[50];
       char mp[20];
       char gp[10];
       char cena[20];
       char broj_komada[50];
       };
       
int main()
{
    int a,b,s;
    struct stampaci data;
    FILE* p;
  s: printf(" S T A M P A C I\n");
  printf("Opcije programa:\n");
  printf("1.Unos podataka\n");
  printf("2.Prikaz svih podataka\n");
  printf("3.Kraj rada\n");
  printf("Vas izbor: ");
  scanf("%d",&a);
  
  switch(a){
            case 1:
                 p=fopen("Printeri.dat","ab");
                 if (p==NULL) printf("Greska pri otvaranju datoteke");
                 printf("Unesite naziv stampaca: ");
                 scanf("%s",&data.naziv);
                 fwrite(&data.naziv,sizeof data.naziv,1,p);
                 printf("Unesite vrstu stampaca:\n");
                 scanf("%s",&data.vrsta);
                 fwrite(&data.vrsta,sizeof data.vrsta,1,p);
                 printf("Unesite mesec proizvodnje stampaca:\n");
                 scanf("%s",&data.mp);
                 fwrite(&data.mp,sizeof data.mp,1,p);
                 printf("Unesite godinu proizvodnje stampaca:\n");
                 scanf("%s",&data.gp);
                 fwrite(&data.gp,sizeof data.gp,1,p);
                 printf("Unesite cenu stampaca:\n");
                 scanf("%s",&data.cena);
                 fwrite(&data.cena,sizeof data.cena,1,p);
                 printf("Unesite broj komada stampaca:\n");
                 scanf("%s",&data.broj_komada);
                 fwrite(&data.broj_komada,sizeof data.broj_komada,1,p);
                 printf("Pritisnite 1 za povratak u glavni meni ili bilo koje dugme za izlaz iz programa: ");
                 scanf("%d",&b);
                 if (b==1){
                           system("cls");
                            goto s;
                            }
                 if (b!=1) return 0;
                 else printf("Pogresan unos\n");
                 break;
            case 2:
                 p=fopen("Printeri.dat","rb");
                 if (p==NULL) printf("Greska pri otvaranju datoteke");
                 while (fread(&data, sizeof data, 1, p) == 1){
                       printf("Naziv stampaca: %s\nVrsta stampaca:%s\nMesec proizvodnje stampaca:%s\nGodina proizvodnje stampaca:%s\nCena stampaca:%s\nBroj komada stampaca:%s\n\n", data.naziv, data.vrsta,data.mp,data.gp,data.cena,data.broj_komada);
                       }
                       printf("Pritisnite 1 za povratak u glavni meni ili bilo koje dugme za izlaz iz programa: ");
                 scanf("%d",&b);
                 if (b==1){
                           system("cls");
                            goto s;
                            }
                 if (b!=1) return 0;
                 else printf("Pogresan unos\n");
                       fclose(p);
                        break;
            case 3: return 0; break;
            default: system("cls"); goto s; break;
            }
  system("PAUSE");    
  return 0;
}

01000100011101010111001101100001011011100010000001010011011101000110000
1
01101110011010010110110101101001011100100110111101110110011010010110001
1
 
Odgovor na temu

GORSHTAK
Ivan Matić

Član broj: 136182
Poruke: 285
*.adsl.verat.net.



+5 Profil

icon Re: [Zadatak] Printeri12.06.2011. u 10:40 - pre 156 meseci
Mislim da ti je najjednostavnije da celu datoteku učitas u niz strukture, a sam sadržaj datoteke da ti bude sa nekim delimiterom, kao npr ";" nešto što nećeš koristiti u nazivu ili proizvođaču, + jedan savet, tamo gde je rezultat broj, neka element u strukturi bude int ili double
Code:
struct stampaci {
        char naziv[50];
        char vrsta[50];
        int mp;
        int gp;
        double cena;
        int broj_komada;
        };


Koristi sprintf da bi mogao da formiraš liniju datoteke
Code:
sprintf(linija, "%s;%s;%d;%d\n", st.naziv, st.vrsta, st.mp, st.gp)


2) učitavanje fajla u memoriju (tj, strukturu) mozeš da uradiš kombinacijom funkcija strchr, strncpy i atoi kako bi ceo string koji izvučeš mogao da izdeliš na elemente strukture, pa protrčiš kroz elemente niza sa if pitalicom za cenu, ako koristiš strncpy, obavezno zatvori string sa \0
3) nisam ovo najbolje razumeo ali valjda misli na indeks niza strukture koju sam spomenuo na početku
Code:
st[k].naziv

4) slično kao pod 2, a da bi izbegao muke zbog velikih/malih slova konvertuj prvo sve da budu velika slova pomoću toupper


Nadam se da te nisam zbunio :)
 
Odgovor na temu

duksi1993
Dušan Stanimirović
PHP Developer
TeleTrader
Beograd

Član broj: 163562
Poruke: 226
*.dynamic.sbb.rs.

Jabber: duksi1993


+2 Profil

icon Re: [Zadatak] Printeri19.06.2011. u 02:19 - pre 156 meseci
Hvala, snasao sam se :)
01000100011101010111001101100001011011100010000001010011011101000110000
1
01101110011010010110110101101001011100100110111101110110011010010110001
1
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Printeri

[ Pregleda: 1491 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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