pajautaa

Par c++

« previous entry | next entry »
Jan. 2., 2010 | 08:22 pm
posted by: atheist in pajautaa

Varbūt šeit ir kāds, kam šodien mazliet brīvs vakars un ir vēlme apskatīties vienas programmas kodu. Situācija jocīga - savā datorā testpiemēri izpildās, citā - neizpildās. Neko jaunu nevajag, tikai gribu zināt, kas pie vainas un saprast, kā to dīvainību labot.

Jaukie cilvēki, atsaucieties komentāros vai uz epastu egirl@inbox.lv. Tad nosūtīšu kodu un attiecīgos testpiemērus (tādi vispār ir 4). Kods nav garš, ātri var saprast, par ko iet runa.

Paldies jau iepriekš!

Tagad te ir kods, zem kura ir testpiemēri, jo nevarēja tos atsevišķi parādīt, augšā ir apraksts, par neskaidrībām jautājat, jo visu nevar izstāstīt (vismaz ne to, kas katram varētu likties svarīgi).

http://paste.php.lv/6a27b4277d79c35a6d812144d341c946?lang=php

# | jā, ir doma! | Add to Memories


Comments {15}

ēvele

from: [info]skazhy
date: Jan. 2., 2010 - 08:34 pm
#

iemet kodu & piemērus http://paste.php.lv/

Atbildēt | Diskusija


Atheiste

from: [info]atheist
date: Jan. 2., 2010 - 08:57 pm
#

ieliku, paldies, tikai nez vai kāds būs ieinteresēts skatīties :D

Atbildēt | Iepriekšējais | Diskusija


ēvele

from: [info]skazhy
date: Jan. 2., 2010 - 08:59 pm
#

aizmirsu pierakstīt ...un iemet linku šeit :D

Atbildēt | Iepriekšējais


starsailor

from: [info]starsailor
date: Jan. 2., 2010 - 09:31 pm
#

Jēzus Marija, kas tas ir?????????????

Atbildēt | Diskusija


Atheiste

from: [info]atheist
date: Jan. 2., 2010 - 09:48 pm
#

nav ne jēzus ne marija :D diemžēl...

Atbildēt | Iepriekšējais


Skabičevskis

from: [info]begemots
date: Jan. 2., 2010 - 10:00 pm
#

ko nozīmē - neizpildās? uzkarās, ziņo kļūdu, rezultāts nepareizs (kāds)?

Atbildēt | Diskusija


Atheiste

from: [info]atheist
date: Jan. 2., 2010 - 10:07 pm
#

neizpildās tā - izdod izejas failā ne to, kam ir jābūt izejas failā (piemēram pie piemēra, kur izejā jābūt SOS SOS SOS man izdod to, ko vajag, bet citā datorā izdod SOS SOS SOS? - ar jautājuma zīmi beigās)

Atbildēt | Iepriekšējais | Diskusija


Skabičevskis

from: [info]begemots
date: Jan. 2., 2010 - 10:26 pm
#

izskatās, ka problēma varētu būt tajā, ka šur tur kodā ir '\n' un citur "\n" - pēdiņās.

C++ neatceros īpaši labi, bet man šķiet tur visur bija jābūt pēdiņām nevis apostrofiem, apostrofos lika vienu karakteru, nevis to kombināciju ("\n" = CR+LF).

tas var teorētiski nograut visu buferī kārtošanu, pie tam, \n ir cita nozīme uz Maca (CR), cita uz Win (CR+LF) un cita uz Linux (LF).

Atbildēt | Iepriekšējais | Diskusija


jumts

from: [info]jumts
date: Jan. 2., 2010 - 10:58 pm
#

getline (kur lieto '\n') prasa argumentu kaa char un nemaz nenjem pretii string

Atbildēt | Iepriekšējais | Diskusija


Skabičevskis

from: [info]begemots
date: Jan. 2., 2010 - 11:12 pm
#

jā, taisnība. pēc C++ \n ir tikai LF tomēr.
nu, jautājums paliek aktuāls anyway, vai nav problēmu ar dažādiem O/S.

man, starp citu, konkrētais piemērs ar SOS strādā.

bet arī jautājums vai ievades fails uz abiem datoriem ir tas pats, vai arī varbūt pie pārrakstīšanas ir kāda kļūda.

Atbildēt | Iepriekšējais | Diskusija


Atheiste

from: [info]atheist
date: Jan. 2., 2010 - 11:17 pm
#

no malas izskanēja viedoklis par pārāk lielu atmiņas resursu izmantošanu - tas varot radīt problēmas

Atbildēt | Iepriekšējais | Diskusija


from: [info]ad_nocendum
date: Jan. 3., 2010 - 01:48 am
#

a) LF vai CR+LF ir atkarīgs no sistēms (lasi - kompilatora). enīvei, tas šeit problēmas nevarētu radīt. Katrā ziņā, kamēr ieejas fails ir veidots iekš OS A noklusētā redaktora un pati programma ir arī veidota iekš OS A, tad tā nu noteikti nav problēma.
b) ja godīgi, es nespēju atcerēties tik vecu arhitektūru (lasi - fizisko izpildījumu), lai RAMa pietrūktu. vismaz arī uz 8086 ar 4-8 KB RAM šitam jāiet griezdamies (vismaz kamēr nav ūbergari stringi). varbūt šis kods ir jādarina uz kādu embedded device, ja tas ir aktuāli?

ja problēma vēl būs aktuāla, varu rītvakar apskatīties, kad pālītis mazāks.

Atbildēt | Iepriekšējais | Diskusija


Atheiste

from: [info]atheist
date: Jan. 3., 2010 - 12:50 pm
#

problēma ir aktuāla. un man pateica, ka problēma varētu būt, ka otram datoram ir linux un tur beigu simboli ir savādāki un tāpēc windows var rādīt pareizi, bet linuxā atrod nepazīstamus beigu simbolus

Atbildēt | Iepriekšējais | Diskusija


Skabičevskis

from: [info]begemots
date: Jan. 4., 2010 - 01:48 pm
#

"nepazīstamie" kāreiz ir tie CR+LF un LF vietā, ja tiešām mēģini gan uz Windows gan uz Linux palaist programmu :P

Atbildēt | Iepriekšējais


from: [info]spicausis
date: Jan. 3., 2010 - 01:43 am
#

Tev "tiiriit" funkcija ir pagalam nekorekta: nelaba ievada gadījumā, pēc n_kods.erase(i, 1): a) n_kods garums samazināsies, kā rezultātā cikls, kas strādā 0..gar kļūs pārāk garš; b) pēc i-pozīcijas izdzēšanas šai pozīcijā būs (i+1) simbols, kuru tu ciklā vairs nepārbaudīsi. Labāk veido jaunu stringu no atļautajiem simboliem, nevis dzēs veco.

Ja tev kaut kur metas negaidīti "?" tekstu beigās, tad izmaini kodu tā, lai tu varētu atšķirt, kurā vietā tas tieši veidojas — vai "dekodeet" neatrod simbolu, vai jokainā bufera apstrāde pie atkodēšanas aizrijas, vai kas.

Atbildēt