Miten tehdään ohjelma joka käy rivi kerrallaan läpi ja etsii tietyt numerot tiedostossa olevilta riveiltä. Numeroista esimerkki 1,3 ja 15
Kyseisessä on tiedosto: c:\numerot.txt ja rivejä jos on esimerkiksi 20 ja rivin pituus merkkeinä(numeroina) on 20.
Saisiko apua koetin tehdä jo alkua mutta tuloksettomasti... Kiitos..
Miten teen kyseisen jutun c ?
Kyseisessä on tiedosto: c:\numerot.txt ja rivejä jos on esimerkiksi 20 ja rivin pituus merkkeinä(numeroina) on 20.
Saisiko apua koetin tehdä jo alkua mutta tuloksettomasti... Kiitos..
Miten teen kyseisen jutun c ?
Vastaukset 17
Vanhimmat
>...koetin tehdä jo alkua mutta...
Sait siis kotitehtävän jonka oletetaan ratkeavan saamasi opetuksen perusteella?
Laitahan tänne mitä sait aikaiseksi niin katsotaan.
Ei mitään kummempaa. pistä sä miten ongelman ratkaisisit
"Ei mitään kummempaa", laita mitä olet tehnyt, vai oletko kirjoittanut vielä riviäkään?
taidot ruostuneet.. miten teen?
en juuri mtään saa aikaan..
Voit lukea tiedostosta ensin rivin,vaikka getline-funktiolla ja sitten
tutkit onko rivillä haetut numerot.Tsekkauksen voi suorittaa
strtok-funktiolla asettamalla siihen eroittimiksi pisteen pilkun välilyönnin
jne.Tulokset luet taulukkoon tai miten vain haluat.Etsittävät numerot voivat
olla myöskin taulukossa.
-Hakukohteena ovat nähtävästi luvut eivätkä numerot???
-Ovatko luvut kokonaislukuja?
-Onko lukujen välissä pilkku välilyönti...mikä??
-Pitääkö löydetyt luvut tulostaa rivikohtaisesti??
Voin ehkä antaa lisävinkkejä....
Luvut eli numerot ovat muodossa :
esim. 2224252627
TOimiiko toi koodi pätkä?
//Lukujen eroittimena toimii tiedostossa separ-muuttuja
//Luvut taulukossa esim. 100,-200,122.33,3.5 jne.
//Siis liukuluvutkin sallitaan
//Dynaamisen taulukon voi vaihtaa tavalliseksi jos tarpeellista
//Tässä on kaikki tarpeellinen tieto????
#include
#include
#include
using namespace std;
int main()
{
//Tästä luetaan(Täytyy olla olemassa)
ifstream source("numerot.txt");
//Tällä lasketaan rivit
ifstream rivit("numerot.txt");
int i=0,rivit_kpl=0;
string looppi;//Apustringi rivien laskentaan
//*****************************************************************
//Paljonko rivejä failissa
while(getline(rivit,looppi))
{
rivit_kpl ;//Rivejä failissa
}
rivit.close();
//*****************************************************************
//Alustetaan 2-ulotteinen dynaaminen taulukko
string **taulukko;//Osoittimen osoitin
int sarakkeet=20;//Sanoja rivillä / maksimi
int rind,sind;//Taulukko rivit sarakkeet
taulukko=new string*[rivit_kpl];
//Varataan tila kunkin rivin sarakkeille
for(rind=0;rind < rivit_kpl;rind )
{
taulukko[rind]=new string[sarakkeet];
}
//Kaikki taulukon alkiot alustetaan rivinumerolla
for(rind=0;rind < rivit_kpl;rind )
for(sind=0 ; sind < sarakkeet ; sind )
{
taulukko[rind][sind]=rind;
}
//*****************************************************************
//Luetaan faili taulukkoon
string a;//Sanastringi
char *separ=",?!:";//Vaihda/lisää tästä eroittimia
int sanat=0;
char *chr;
while(getline(source,a))
{
char *p="";
chr = strdup(a.c_str());
if(p)
{
p=strtok(chr,separ);//Luetaan ekasana
if(p)
taulukko[i][sanat]=p;
sanat ;
}
do
{
p=strtok(NULL,separ);
if(p)
{
if(p)
{
taulukko[i][sanat]=p;
}
sanat ;
}
}while(p);
delete [] chr;//Poistetaan tilanvaraus
sanat=0;
i ;//Rivilaskuri
}
source.close();//Suljetaan lukuvirta
//Tiedosto luettu taulukkoon
//*****************************************************************
char *testi2="";//Muutetaan stringi char*-muotoon
cout
Lähdekoodisi ei toimi. Kokeilin sitä kääntäjässä.
Ilmeisesti jossain vika siinä..
Uusintaa odotellessa
Tekisikö joku esimerkki ratkaisun joka toimii??
Kiitos
int main() {
bool olen_laiska, success;
olen_laiska = true;
while(olen_laiska) {
success = kysy_apua_netistä_kun_et_jaksa_itse_tehdä();
if(!success){
if( jaksan_opiskella_itse() ) {
olen_laiska = false;
} else {
save_arvioitu_valmistumisaikani(ei_ikinä);
return(hylsy_tulee_koska_olen_laiska);
}
} else {
tallenna_oppimani_asiat(NULL);
return(sluibaan_jatkossakin_koska_en_osaa_ja_olen_kusessa_tulevilla_kursseilla);
}
while(tekemäni_koodi_ei_toimi) {
success=kerro_ongelma_ja_pyydä_apua_juuri_siihen();
if(!success) {
pyydä_apua_opettajalta_tai_assarilta();
}
tee_neuvotut_korjaukset();
if(koodini_toimii) {
palauta();
palkitse_itsesi(olut);
return( onnellinen_ja_osaava_oppilas);
}}
return(olenpa_aika_sissi_kun_voitin_laiskuuteni);
}
suap tarkentaa oman tilanteen mukaiseksi
keskivertonaista?? auttamaan!!!
Älä tule kuule minulle väittämään ettei koodini toimi!!En ole koskaan
pistänyt tälle palstalle ainuttakaan koodinpätkää ellen ole
ajanut sitä ensin kysytyllä tavalla C tai C omalla koneella.
Vika on siellä sinun "päässäsi",ja vian saat löytää ihan itse!!
Naisen logiikkahan on sitä,että halutaan jotakin tapahtuvaksi,mutta
toteutustapa ja periaate ei merkitse mitään.Se suorastaan paistaa läpi
noista sinunkin kirjoituksistasi.
kukkanen ole edes C -maailmassa. (en kokeillut, mutta on siinä kyllä yhtä sun toista ryppyä)
Alkuperäinen kirjoittaja voisi opiskella hieman työntekoa. Kun ensimmäisen harjoitustyön ohjelmoinnista saa tehtyä, niin kyllä se siitä lähtee. Tärkeintä on saada ohjelmoinnin ajatusmaailmasta kiinni.
ollut tarkoituskaan mitään ruusutarhaa tehdä,
vaan toimiva ohjelma.
Tarkennus /lisäys
*******************
Olethan sinä aivan oikeassa,sillä tietyt ohjelman osat eivät oike-
astaan tee mitään.Syynä "virheisiin" ovat työkiireet ja se,että
ainakin minä joudun kaiken aikaa kaivamaan esiin ne asiat joita tar-
vitsen selvittääkseni jonkin ongelman,koska muisti ei ole enää sama
kuin nuorempana - siis noin alta kuusikymppisenä.On kuitenkin hyvä,
että joku puuttuu näihin epäloogisuuksiin,vaikka tuo keskustelun
aloittaja ei olekkaan kiinnostunut näistä asioista......??
Lisäksi en halunnut antaa aivan kaikkea valmiina,jotta opettajallakin
riittäisi ihmetyksen aiheita.