Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
De ce vor atația politicieni...

ERR_ADDRESS_UNREACHABLE

Legea 18/1968 Se mai aplica?

Digi conectare 2 routere prin fir
 Succesiune notar versus instanta ...

Montaj aer conditionat in balcon ...

Cont curent mulți valuta far...

Sugestii plan casa
 Experiente cu firme care cumpara ...

joc idem Half Life gratis

PC game stream catre Nvidia Shiel...

Pompa de apa HEPU ?!
 Vreau o masina electrica de tocat...

Cum ajunge remorca de tir inapoi ...

Alt "Utilizator nou" pe T...

ULBS INFORMATICA
 

Contre

- - - - -
  • Please log in to reply
48 replies to this topic

#1
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View Postexydos, on 25 iunie 2019 - 06:18, said:

a merge logica asta  : sa numar in care linie in fisier gasesc numele pe care il caut , apoi cu o alta functie printez linia din fisier corespunzatoare numarului ?
Ti-am facut programelul desfasurat care face ce vrei tu.
Vreu sa fii atent la modul cum am abodrat scrierea unui structuri in fisier si cititrea ei.
Am incercat pe cat se poata sa evit alocarea dinamica ca sa nu te bag mai mult in ceata.
Fugitiv, am observat ca ai niste buguri la scanf in codul tau.Uita-te la mine sa vezi cum le-am evitat.
Spor.
Codul:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct persoana {
char nume[32];
char prenume[32];
int varsta;
};
int main() {
setbuf(stdout, NULL); //workaround pt eclipse CDT, MinGW toolchain
FILE *file;
//scriere-------------------------------------------
file = fopen("persoane.txt", "w");
if (file == NULL) {
	 fprintf(stderr, "\nEroare la deschidere fisier pt scriere\n");
	 exit(1);
}
printf("dati n=");
int n = 0;
scanf("%d", &n);
char nume[32];
char prenume[32];
int varsta = 0;
printf("Introduceti datele pt persoane in urmatorul format:nume prenume varsta\n");
for(int i=0; i<n;i++){
	 scanf("%s %s %d", &nume, &prenume, &varsta);
	 struct persoana p;
	 memcpy(p.nume, nume, sizeof(nume));
	 memcpy(p.prenume, prenume, sizeof(prenume));
	 p.varsta = varsta;
	 fwrite(&p, sizeof(struct persoana), 1, file);
}
fclose(file);
//cautare in fisier---------------------------------------
struct persoana p;
file = fopen("persoane.txt", "r");
if (file == NULL) {
	 fprintf(stderr, "\nEroare la deschidere fisier pt citire\n");
	 exit(1);
}
printf("dati numele de cautat:");
scanf("%s", &nume);
while (fread(&p, sizeof(struct persoana), 1, file)) {
	 if(strcmp(p.nume, nume) == 0) {
		 printf("gasit persoana cu datele: %s %s %d\n", p.nume, p.prenume, p.varsta);
	 }
}
fclose(file);
return 0;
}

si rezultatul:
dati n=7
Introduceti datele pt persoane in urmatorul format:nume prenume varsta
popescu silviu 34
antonescu maria 23
vasilescu cristi 45
antonescu irina 12
dorobantu daniel 67
antonescu mihai 89
marina teodor 54
dati numele de cautat:antonescu
gasit persoana cu datele: antonescu maria 23
gasit persoana cu datele: antonescu irina 12
gasit persoana cu datele: antonescu mihai 89


ce poti sa faci ca exercitiu:
1.spargerea sectiunilor delimitate de commenturi de mine in metode dedicate
2.rescrierea metodelor insa folosind alocarea dinamica a memoriei.(in acest caz implica si o a treia metoda numita  "curatenie" care va sterge datele din memoria alocata dinamica si va elibera referintele catre zonele de memorie dereferentiate de aceastea.)

Edited by Iulius-Foyas, 26 June 2019 - 00:58.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,233
  • Înscris: 24.02.2007
De ce citesti intr-o parte ca apoi sa copiezi in alta?
De ce format binar cand initiatorul folosea format text?

#3
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
Pentru ca am vrut sa limitez numarul de pointeri si sa pastrez pe cat se poate array-urile de chars ca sa nu-l bag in ceata pe user.
si array assignment in C este limitat dar in clipa declararii acestuia, nu suporta reassgiment fara a folosi pointeri.

formatul binar ? pt ca am ales sa stochez streamuri de bytes si apoi sa le citesc in secvente de sizeof(struct persoana).

de asemenea am ales intentionat sa evit separarea in metode, tot ca sa evit pointerii, lasand userului aceasta initiativa si privelegiu.

Edited by Iulius-Foyas, 26 June 2019 - 17:39.


#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003

View PostIulius-Foyas, on 26 iunie 2019 - 17:34, said:

Pentru ca am vrut sa limitez numarul de pointeri si sa pastrez pe cat se poate array-urile de chars ca sa nu-l bag in ceata pe user.
si array assignment in C este limitat dar in clipa declararii acestuia, nu suporta reassgiment fara a folosi pointeri.
N-are haz, puteai pe codul initial sa citesti direct in structura.

#5
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
Vino si tu varianta ta.Deci sa vedem varianta ta de program.Astept cu interes.(este ora 18:42 acum)

#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003
Du-te bre la Java ca la C n-ai nici o treaba.

#7
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
unde este varianta ta? da-mi varianta ta de program daca vrei sa te mai bag in seama.
tu si cu OriginalCopy, intotdeauna credeti ca ajutati dar niciodata nu veniti cu varianta de program care face ceea ce spuneti altora sa faca.
de la vorbarie la lucrul facut mare drum.

Edited by Iulius-Foyas, 26 June 2019 - 18:04.


#8
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003
Nici n-ai inteles despre ce a fost vorba:

View PostIulius-Foyas, on 26 iunie 2019 - 00:53, said:

for(int i=0; i<n;i++){
scanf("%s %s %d", &nume, &prenume, &varsta);
struct persoana p;
memcpy(p.nume, nume, sizeof(nume));
memcpy(p.prenume, prenume, sizeof(prenume));
p.varsta = varsta;
fwrite(&p, sizeof(struct persoana), 1, file);
}

Cu ce difera de:
struct persoana p;
for(int i=0; i<n;i++){
	 scanf("%s %s %d", &p.nume, &p.prenume, &p.varsta);
	 fwrite(&p, sizeof(struct persoana), 1, file);
}



#9
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View PostOriginalCopy, on 25 iunie 2019 - 20:13, said:

Imagineaza-ti ca..
Ce spui tu aici nimic nu-l ajuta, ci doar wishfull thinking si fengshui, Un fel de yoga in programare.Nimic concret ci doar vorbe, in rest absolut nimic.

View Postneagu_laurentiu, on 26 iunie 2019 - 18:05, said:

Nici n-ai inteles despre ce a fost vorba:


Cu ce difera de:
struct persoana p;
for(int i=0; i<n;i++){
	 scanf("%s %s %d", &p.nume, &p.prenume, &p.varsta);
	 fwrite(&p, sizeof(struct persoana), 1, file);
}

ia ruleaza codul asa si vezi daca iti mai ruleaza si celalalte parti de cod. DOOH !

#10
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostIulius-Foyas, on 26 iunie 2019 - 00:53, said:

//scriere-------------------------------------------

//cautare in fisier---------------------------------------

Oribil cod. Programezi in C de ieri? Ca nu cred ca si in java scrii cod asa cu picioarele.

#11
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
Unde este codul tau ? Sa vedem codul tau.Atat timp cat nu poti redacta o varianta proprie in limbajul X, nu ai efectiv nici un drept sa critici pe altii.
tu pana acum doar ai  vorbit si atata  tot.Dar nimic concret.Doar vorbarie.

Edited by Iulius-Foyas, 26 June 2019 - 18:14.


#12
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostIulius-Foyas, on 26 iunie 2019 - 18:12, said:

Unde este codul tau ? Sa vedem codul tau.
Eu lucrez cu @OP, daca si @OP vrea sa lucreze cu mine. Codul "meu" il vei vedea daca si cum @OP reactioneaza la sfaturile mele. Codul "meu" va fi scris de @OP in mare parte, nu de mine.

Aia inseamna ajutor pe bune. Nu dat cod cuiva pe care nici nu-l cunosti, care (dupa cum vezi) nu participa pe topicul pe care il creeaza, s.a.m.d.

Edited by OriginalCopy, 26 June 2019 - 18:16.


#13
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
Te rog eu frumos, termina cu acest...yoga/fenghshui in programare si fii om serios.Unde este codul tau ? Nu poti sa vorbesti de codul altora cat timp tu nu demonstrezi ca te poti ridica la nivelul celor pe care-i critici.
Acelasi lucru l-ai facut si in postul cu "histograma lui peste prajit".Doar vorbe, nimic concret.Nimic livrat.
Critici codul altuia, OK. Pune si codul tau, altfel nu faci o critica constructiva ci o critica distructiva, de caer nimeni nu are nevoie.
Critici un cod in imbajul X doar daca la randul tau poti dovedi ca poti scrie un program asemanator in acelasi limbaj X.Pana atunci, liber, n-ai nici un drept de critica.

Tu faci politica, tu nu ajuti pe nimeni.

Edited by Iulius-Foyas, 26 June 2019 - 18:23.


#14
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003

View PostIulius-Foyas, on 26 iunie 2019 - 18:06, said:

ia ruleaza codul asa si vezi daca iti mai ruleaza si celalalte parti de cod. DOOH !
Nu vad nici un motiv sa nu ruleze.

#15
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,600
  • Înscris: 30.07.2003

View PostIulius-Foyas, on 26 iunie 2019 - 17:59, said:

intotdeauna credeti ca ajutati dar niciodata nu veniti cu varianta de program care face ceea ce spuneti altora sa faca
Oare chiar era nevoie sa postez linia mai jos daca am spus ce si cum? https://forum.softpe.../#entry24870711

while(fscanf(file, "%s", nume) != EOF) {
vs
while(fscanf(file, "%s\t%s\t %d\n", persoana.nume, persoana.prenume, &persoana.varsta) != EOF) {

#16
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,428
  • Înscris: 10.08.2005

View PostOriginalCopy, on 26 iunie 2019 - 18:08, said:


Oribil cod. Programezi in C de ieri? Ca nu cred ca si in java scrii cod asa cu picioarele.
Din cate tin minte el iti este dator cu un cod java referitor la stream-uri.



#17
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View Postneagu_laurentiu, on 26 iunie 2019 - 18:27, said:

Nu vad nici un motiv sa nu ruleze.
ia testeaza si nu mai prezuma.

View PostMarianG, on 26 iunie 2019 - 19:01, said:

Din cate tin minte el iti este dator cu un cod java referitor la stream-uri.
eu nu sunt dator nimanui cu nimic . eu fac, cand vreau eu si  cum vreau eu.
poate este invers.El imi este mie dator ca l-am bagat prea mult in seama :lol:

Edited by Iulius-Foyas, 26 June 2019 - 19:09.


#18
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,428
  • Înscris: 10.08.2005

Iulius-Foyas, on 26 iunie 2019 - 18:17, said:

Tu faci politica, tu nu ajuti pe nimeni.
Hristos era tamplar si a invatat discipolii sa pescuiasca.
Nu le-a trantit peste pe masa.

Prinsul pestelui si pescuitul sunt doua lucruri distincte.
Una este munca iar alta profesie. Intradevar, profesia se obtine prin mumca. Dar este o munca facuta ca la carte.

Noi vrem ca OP sa munceasca pentru a deveni profesionist.
Tu muncesti in locul lui iar asta nu ajuta pe nimeni, nici macar pe tine.

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate