Avaleht
uus teema   See teema on lukus, sa ei saa siin muuta postitusi või vastata teemale! Tarkvara »  Programmeerimine »  programm Cs, kus failist sisestatakse kirjed märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 01.03.2014 19:13:03 programm Cs, kus failist sisestatakse kirjed vasta tsitaadiga

.

viimati muutis vottak 02.03.2014 21:41:08, muudetud 1 kord
tagasi üles
vaata kasutaja infot saada privaatsõnum
kalvis
Kreisi kasutaja

liitunud: 20.10.2009




sõnum 02.03.2014 10:07:06 vasta tsitaadiga

Ebaotstarbekusi (vigu) on.
firma ja t88koht on char, oled mõelnud vist teha neist stringid aga siis peab olema definitsioonis tärn ees ja peab olema mäluvõtt (malloc jne.) või kui staatiliselt siis massiiv (soovitan seda char t88koht[20], firma [20]icon_wink.gif.
tsitaat:

if(tookohad[n].asutus == t88koht) //kas vastab filtri tingimustele

Siin võrdled char märki struktuuri stringi aadressiga mitte sisu? Kui t88koht on string siis tuleb strcmp funktsiooniga kontrollida vastavust
tagasi üles
vaata kasutaja infot saada privaatsõnum
vottak
HV vaatleja

liitunud: 25.10.2013




sõnum 02.03.2014 13:45:46 vasta tsitaadiga

kalvis kirjutas:
Ebaotstarbekusi (vigu) on.
firma ja t88koht on char, oled mõelnud vist teha neist stringid aga siis peab olema definitsioonis tärn ees ja peab olema mäluvõtt (malloc jne.) või kui staatiliselt siis massiiv (soovitan seda char t88koht[20], firma [20]icon_wink.gif.
tsitaat:

if(tookohad[n].asutus == t88koht) //kas vastab filtri tingimustele

Siin võrdled char märki struktuuri stringi aadressiga mitte sisu? Kui t88koht on string siis tuleb strcmp funktsiooniga kontrollida vastavust


Aga kuidas ma peaksin kirjutama tookohad[n].asutus strcmp'i? Millega peaksin selle asendama, sest kui nii kirjutan, siis näitab errorit.
tagasi üles
vaata kasutaja infot saada privaatsõnum
Redikate
HV veteran
Redikate

liitunud: 30.12.2005




sõnum 02.03.2014 14:01:38 vasta tsitaadiga

Aga ära errorit jumala eest siia pane, et me ikka arvama peaks.
_________________
http://nodejs.org/
"I'm also a person. Programming is just one thing I do."
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum
napoleon
Unknown virus
napoleon

liitunud: 08.12.2008



Autoriseeritud ID-kaardiga

sõnum 02.03.2014 17:17:21 vasta tsitaadiga

Soovitan sul näiteks selle raamatu läbi lugeda. Kui inglise keel probleemiks pole, siis leiad muidugi ka netist igasuguseid tutoriale.
Selle ülesande võid tõenäoliselt siit saadud soovitustega lõpuks kuidagi valmis käkerdada, aga siin ei hakka sulle keegi põhjalikku ülevaadet C-st tegema ehk suurema pildi nägemiseks peaksid siiski pisut oma algteadmisi täiendama.
Kommentaarid: 76 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 59
tagasi üles
vaata kasutaja infot saada privaatsõnum
kalvis
Kreisi kasutaja

liitunud: 20.10.2009




sõnum 03.03.2014 12:50:15 vasta tsitaadiga

Ma olen endale kokku kirjutanud pea õpikulaadse asja, selle sadakond lehte hakkavad just sealt pihta ku "programmeerimine C keeles" lõpeb ja sulle on kasulik lugeda sealt ehk struktuuride kohta lõik:
Struktuurid ja viidad

Struktuuri viit. Sulud on olulised, sest . tehe on kõrgemal prioriteedil kui aadressilt väärtuse leidmine (?vist läheb aadressi teisendus tehe alamale ja saame suure jama).
(*viitstruktuur).alam=tavastruktuur.alam;
Samaväärne on teisendus
(*viitstruktuur).alam=viitstruktuur->alam;
Keeruliseks läheb juhtum, kui alam on viit. C annab vea kui üritame ligipääsu struktuur.(*alamviit)=sisu; või viitstruktuur->*alamviit. Saame kindlalt veateate. Selle asemel tuleb viidata:
*(viitstruktuur->alamviit)=sisu; või antud juhul kui struktuur ei ole viit siis *struktuur->alamviit; (* tehe on on väiksema prioriteedegi, enne tehakse struktuuri teisendustehe ja * ette jõuab ilusasti struktuuri alamviida aadress).
Väidetavalt ei saagi C-s kasutada struktuuridel viitamist kaugemale, st puudub tehe kolme ja enama viidaga juhtumitele. Saab vaid niimoodi viidata, kuid justkui see ongi viitkett:
Pointer3->Part11->Part12-Part13=(*(*(*Pointer3).Part11).Part12).Part13
Struktuuridel saab kasutada offset funktsiooni, vanematel kompilaatoritel on ta makro ja uuematel juba kompilaatori käsuna.

Ja massiivide kohta:
Massiive käsitletakse kui tavamuutujat, kuid c lubab neile pöörduda ka viitadega. Massiivi ja viida peamine erinevus on muutuja deklareerimises. Massiivile antakse mälu kohe deklaratsiooni käigus, seega on vaja teada indeksite arv ja või elementide sisu (eriti stringidel). Viidaga massiivil saab kõik teha alles programmi töö käigus. Massiivil ja viidal kehtib keset programmi järgmised seosed.
Massiivinimi=&Massiivinimi[]=&Massiivinimi[0];
Siin on massiivinimi ilma lisamärkideta nagu tavaline viit, kantsulgudega aga on esimese elemendi sisu.
Järgnev on kõige huvitavam viida ja massiivi võrduses:
*(massiivinimi+indeks)=massiivinimi[indeks];
massiivinimi[indeks]=*(massiivinimi+indeks);
Ja võime teha ka vastupidi:
tavamuutuja=viit[indeks];

Neist kahest lõigust peaks avalduma tõeline võimaluste maailm, st. massiivi saad kasutada struktuuris viidana ja vastupidi.
Kui asi hakkab üle mõistuse minema, olen teinud ajutise viida, antud juhtumil char *ajutineviit; Nüüd struktuuri stringil teed kas ajutineviit=strukt_muutuja.asutus ja samaväärsuse funktsioonis kasutad strcmp(ajutineviit,...);
tagasi üles
vaata kasutaja infot saada privaatsõnum
ReinAa
HV kasutaja
ReinAa

liitunud: 21.08.2013




sõnum 05.03.2014 17:08:26 vasta tsitaadiga

Tellisin Apollost selle raamatu ära, täna sain kätte thumbs_up.gif
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 33
tagasi üles
vaata kasutaja infot saada privaatsõnum
DoS
HV veteran
DoS

liitunud: 19.08.2002




sõnum 15.03.2014 02:21:09 vasta tsitaadiga

Ajaloo huvides google cachest esimene postitus, mille teema autor miskipärast tühjaks tegi:

tsitaat:
Nimelt on antud ülesanne kirjutada programm Cs, kus failist sisestatakse kirjed struktuuriga: nimi; TK (töökoht) kirje struktuuriga: AS (asutus) – string & Tel – kas täisarvuline või string. Klaviatuurilt sisestatakse string Asutus ning teise faili väljastatakse kõikide antud asutuse töötajate nimed ja telefonid nimede tähestikulises järjekorras.
Just mõtlengi, et kuidas sellele läheneda. Pole just kõige teravam veel selles, aga midagi olen kirjutanud ka. Selle olen kokku pannud näidete põhjal, aga ei ole suutnud veel
parandada.
Iga abi, soovitused-õpetused on teretulnud

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct tookoht
{
   char asutus[20];
   char eesnimi[20];
   char perenimi[20];
   int telefon;
};
#define MAX 10
int vordle(const void *aa, const void *bb)
{
   struct tookoht *a = (struct tookoht*)aa; //muudame tüübita viida aa viidaks struct tudeng kirjele
   struct tookoht *b = (struct tookoht*)bb;
   return strcmp(a->eesnimi, b->eesnimi); // . asemel -> kuna tegemist on viidaga  //sordib perenime järgi
}
int main()
{
   int i, n;
   char firma, t88koht;
   struct tookoht tookohad[MAX];
   FILE *f = fopen("F1.txt", "r");
   if(f == NULL)
   {
      printf("Faili ei saanud avada.\n");
      return -1;
   }
   n=0; //esialgu pole veel midagi lugenud
   printf("\nSisesta firma nimi:");
   scanf("%s", &firma);
   firma = t88koht;
   while(!feof(f))
   {
      if(fscanf(f, "%s %s %d %s", tookohad[n].eesnimi, tookohad[n].perenimi, &tookohad[n].telefon, tookohad[n].asutus) == 4)
      {
         if(tookohad[n].asutus == t88koht) //kas vastab filtri tingimustele
         n++; //õnnestus lugeda
         else
            break;
      }
   }
   fclose(f);
   int j;
   qsort(tookohad, n, sizeof(struct tookoht), vordle);
   
   f = fopen("F2.txt", "w");
      for(j=0; j<tookohad[i].asutus; j++)
      {
         fprintf(f, "%s %s %d\n", tookohad[i].eesnimi, tookohad[i].perenimi, &tookohad[i].telefon);
      }
   fclose(f);
   return 0;
}
Kommentaarid: 50 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 47
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   See teema on lukus, sa ei saa siin muuta postitusi või vastata teemale! Tarkvara »  Programmeerimine »  programm Cs, kus failist sisestatakse kirjed
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.