Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Lucruri ciudate  (Citit de 1708 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« : Noiembrie 23, 2008, 09:34:18 »

De-a lungul "carierei"  Very Happy mele de programator,am intalnit tot felul de chestii ciudate,fara sa gasesc vreo explicatie.
Una dintre ele,cea mai naspa,a fost la OJI 2007.Pur si simplu nu vroia sa imi citeasca din fisierul de intrare.Si aici sunt cat se poate de sigur pe mine.Poate nu rezolvam problemele propuse,dar sunt sigur ca macar de atata sunt si eu in stare(sa citesc din niste amarate de fisiere).Ma rog.Ajung acasa,si implementez fix acelasi cod,si merge din prima.(plus ca la olimpiada am incercat ambele variante,si cu fin ,si cu fscanf).
Alta am intalnit-o ieri.Am intr-un program o variabila int n.Dupa ce apelez niste functii,valoare lui n i se schimba la 0,fara sa am in functia aia vreo atribuire(ceva de genu n=x).Daca vreti o sa postez si codul.
Cam atat.Daca a mai patit cineva asa ceva,sau stiti de ce mi s-a intamplat asta,va rog sa imi spuneti ce am gresit.De asemenea,experientele voastre de acest gen sunt binevenite. Smile
[EDIT]:Prima situatie a avut loc in borland,a doua in djgpp
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #1 : Noiembrie 23, 2008, 09:44:36 »

astfel de lucruri bizare nu prea se intampla in informatica. La prima problema, cea de la oji, esti sigur ca fisierele erau in directoru curent?? Cat despre a doua, vezi ca e posibil sa accesezi niste indici in afara unui vector. Acest lucru nu inseamna intotdeauna segmentation fault (mai ales pe windows), de exemplu daca incerci sa accesezi a[100] si el are elemente de la 0 la 99 atunci el o sa incerce sa acceseze segmentul de memorie a + 100 (a pozitia de inceput a vectorului), segment care nu face parte din vector, acolo fiind reprezentata de fapt variabila n. Ma rog probabil ca mai exista si alte posibilitati, astea au fost primele care mi-au venit mie in minte.
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #2 : Noiembrie 23, 2008, 14:52:10 »

1)Sunt suta la suta sigur ca fisierele erau in directorul curent.(Am incercat pe langa asta,nu stiu cate alte variante,ca deh,ce am facut in 3 ore).
2)M-am gandit si la chestia asta cu vectorul,dar nu cred sa ies din limitele unui vector.Sunt 90% sigur.
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #3 : Noiembrie 23, 2008, 15:10:11 »

Sunt de acord cu Tibi. Lucruri bizare nu prea se intampla in informatica. Programele nu ar trebui sa-si faca de cap daca esti un programator bun.

Despre 2, te sfatuiesc sa cauti greseala in tot programul. Eventual poti sa postezi cod ca sa stim si noi despre ce vorbim. Smile
Memorat

Am zis Mr. Green
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #4 : Noiembrie 23, 2008, 15:44:16 »

Asa ,ca o corectare:nu am intalnit chiar atat de multe lucruri bizare,doar prima(aia cu fisierele),mi s-a intamplat doar odata,si apoi nu am mai dat de ea niciodata.Faza cu variabila n,trebuie sa ma uit mai atent,pana la urma o sa gasesc unde am gresit(avand in vedere ca am scris-o aseara pe la 12 noaptea  Smile )
[EDIT]:Uite ca mi-am amintit ceva.Faceti ca mine,pas cu pas:
1)In directorul djgpp(in folderul bin),creati un fisier cu numele fisier.in(si introduceti un numar ,1 de exemplu).
2)Dublu click pe rhide
3)Dati new
4)Introduceti codul:
Cod:
#include<stdio.h>
#include<conio.h>

int main()
{clrscr();
int n;
FILE *pin=fopen("fisier.in","r");
fscanf(pin,"%d",&n);
printf("%d",n);getch();
fclose(pin);
return 0;
}
5)Compilati-l si rulati-l.Buun.Merge!
6)Acum fara sa inchideti fereastra,intrati in meniul File,apoi dati save as.Si creati un nou fisier cu numele program2.cpp.Compilati-l iar.O sa vedeti ca da o eroare...
« Ultima modificare: Noiembrie 23, 2008, 15:51:32 de către Iacob Eduard » Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #5 : Noiembrie 23, 2008, 16:18:56 »

asta e o problema a rhideului. El considera ca acele programe de fapt constituie un proiect si vede ca ai de 2 ori functia main, si nu stie exact ce sa faca, si de aceea da eroare. Inchide fereastra veche si o sa mearga.
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #6 : Noiembrie 23, 2008, 16:48:29 »

Treaba asta am observat-o si eu,dar vezi tu,atunci cand dai save as ... ,prima fereastra mi se inchide automat,deci eroarea nu e din cauza asta.
[EDIT]:Pana la urma,nu a mai venit nimeni cu nici o explicatie...cum ramane treaba ,cu faptul ca nu se intampla astfel de treburi in info...Bine,acum bat pariu ca o sa imi ziceti ca ii vina editorului/compilatorului etc.In definitiv programele tot de oameni is facute,deci pot gresi ei...
[PS]:De ce primesc atatia minus la karma.Nu am injurat pe nimeni ,ce am facut rau? Very Happy
« Ultima modificare: Noiembrie 25, 2008, 10:14:31 de către Iacob Eduard » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines