Jump to content

Courage

Moderators
  • Posts

    5,961
  • Joined

  • Last visited

  • Days Won

    290

Everything posted by Courage

  1. Totuşi de ce le-aş citi? Hai, Baltagul să zicem că e OK, ai ce învăţa de acolo, dar în rest nu prea văd chestii importante. Şi la şcoală, înafară de Moromeţii I, Mara şi Sadoveanu, ne-au băgat cărţi faine, gen Shakespeare, Jane Eyre, Mândrie şi Prejudecată, Tolstoi, Dostoievski, William Golding, etc. Adică cărţi faine, nu d'alea româneşti şi vechi. Ce am citit românesc şi chiar mi-a plăcut a fost Elevul Dima dintr-a şaptea. Dar NUMAI atât. Poate doar Cărtărescu, dar nici el nu mi se pare cine ştie ce.
  2. Serios, citesc alea doar dacă ne obligă la şcoală, dar în rest, la foc cu ele. Mara sau alte cărţi vechi (pe Sadoveanu nici să nu-l văd) folosesc limbaj d'ăla vechi, cu arhaisme şi fraze care multe din ele nici nu le înţelegi ... deci nu-mi plac. Acţiunea e aproape neinteresantă, etc.
  3. Poţi spune chiar Deloc.
  4. Dacă nu te uiţi la "rest", oare îţi dai seama că e bitch pliz
  5. Care au fost cele mai bune cărţi citite de voi? Încep eu: 1. Boccaccio - Decameronul (deşi am terminat abia prima zi din 10, e foarte OK, poveşti scurtuţe, de maxim 4-5 pagini) 2. Dan Brown - Codul lui Da Vinci 3. Agatha Christie - Zece negri mitiei 4. Chalres Dickens - Marile speranţe
  6. A ... încă ceva: dacă te uiţi numai la faţă zici că-i hermafrodit.
  7. Unde găseşti nou Nokia 3310? adică
  8. Măi, încurci Voltajul cu mAh-ul. P.S. Există service şi la baterie?
  9. Nu . Oferă acelaşi voltaj, altfel telefonul nu ar porni.
  10. Incurci oalele.
  11. E de la IPB. N-ai ce face. ON, am rezolvat. Pentru ca "Admin" să apară aşa: "Grup: Admin", daţi click pe tema curentă, Global Templates, userInfoPane: <li class='group_title'> {$author['_group_formatted']} Şi schibaţi în: <li class='group_title'> Grup: {$author['_group_formatted']}
  12. Am încercat şi îmi place cum arată într-un topic, dar pe pagina principală, la useri online, apare aşa: "Group: Courage", în loc de "Courage"
  13. Într-un mesaj sau topic, apare aşa la mine: Cum pot pune member title-ul sub poză? Şi, cum pot pune în loc de "Admin", "Group: Admin"
  14. Dacă am ce face, pot sta şi o lună (poate chiar mai mult) fără internet.
  15. Telefonul e SH? Cred că ar trebui o altă baterie.
  16. gaby ... cand ai facut update la IPB in 2006, ai refacut forumul de la 0? Nu de altceva, dar nu am gasit niciun topic din 2004 - 2005.
  17. Sa se scrie un program in C care, folosind un meniu, sa citeasca de la tastatura 2 matrici patratice cu numere intregi, de dimensiune specificata de utilizator si a se afiseze suma celor 2 matrice. Rezolvare: #include<stdio.h> int main() { int a[100][100],b[100][100],n,j,i; printf("Ce dimensiune au matricile?\n"); scanf("%d",&n); printf("Introduceti prima matrice:\n"); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); printf("Introduceti a doua matrice:\n"); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&b[i][j]); printf("Matricea rezultata in urma sumei:"); for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n;j++) printf("%d ",a[i][j]+b[i][j]); } printf("\n"); } sursa: tutorialehd.info
  18. Sa se scrie un program in C care gestioneaza cartile unei biblioteci.Se va realiza un meniu prin care: -Se vor introduce date despre carti: titlul, numele si prenumele autorului, domeniul (tehnic/literar la cererea utilizatorului); pentru cartile din domeniul literar se va preciza pretul, iar pentru cele din domeniul tehnic daca au mai fost editate sau nu. -Se vor lista datele despre carti, in ordinea alfabetica descrescatoare a numelui si prenumelui autorului. -Se vor lista cartile din domeniul tehnic in ordinea crescatoare a pretului. -Se vor lista in ordinea alfabetica a numelui si prenumelui autorului cartile din domeniu literar care au mai fost editate. -Se va afisa numarul cartilor cu un pret mai mic decat o suma indicata de utilizator. Functia de ordonare alfabetica va fi aceeasi pentru cele doua cerinte. Functia de citire a datelor va returna catre functia apelata cel putin 3 entitati (prin valoarea sa si prin parametri). Pentru rezolvarea problemei se vor folosi functii cu transfer de parametri, citirea/scrierea se face de la tastatura si intr-un fisier;se cere validarea datelor care necesita acest lucru. Rezolvare: # include <stdio.h> # include <string.h> # include <conio.h> typedef struct { char titlu[50]; char autor[50]; char dom[50]; char pret[50]; char editare[50]; } bib; void citire (bib x[50],int *n) { printf("Titlul cartii: "); fflush(stdin); gets(x[*n].titlu); printf("Autorul cartii: "); fflush(stdin); gets(x[*n].autor); printf("Domeniul cartii: "); fflush(stdin); gets(x[*n].dom); printf("Pretul cartii: "); fflush(stdin); gets(x[*n].pret); printf("Editarea cartii: "); fflush(stdin); gets(x[*n].editare); (*n)++;} void afisare(bib x[50],int n) { int i; FILE *f; f=fopen("exam1.txt","wb"); for (i=0;i<n;i++) { printf("\n"); printf("Titlul cartii este %s\n",x[i].titlu); printf("Autorul cartii este %s\n",x[i].autor); printf("Domeniul cartii este %s\n",x[i].dom); printf("Pretul cartii este %s\n",x[i].pret); printf("Editarea cartii %s\n",x[i].editare); if (f==NULL) printf("Fisierul nu poate fi deschis"); else fwrite(&x[i],sizeof(bib),1,f); } fclose(f); } void ord1 (bib x[50],int n,int b) { int i,ok; bib temp; do {ok=0; for (i=0;i<n-1;i++) if (strcmp(x[i+1].autor,x[i].autor)>0) { temp=x[i]; x[i]=x[i+1]; x[i+1]=temp; ok=1;} } while (ok!=0); } void ord2 (bib x[50], int n,bib z[50]) {int i,ok,j; bib temp; char dm[50]; strcpy(dm,"tehnic"); j=0; for (i=0;i<n;i++) if (strcmp(x[i].dom,dm)==0) { z[j]=x[i]; j++;} do {ok=0; for (i=0;i<j-1;i++) if (strcmp(z[i].pret,z[i+1].pret)>0) { temp=z[i]; z[i]=z[i+1]; z[i+1]=temp; ok=1;} } while (ok!=0); afisare (z,j); } void ord3 (bib x[50], int n,int b, bib y[50]) {int i,ok,j; bib temp; char dm[50],ed[50]; if (b==0) do {ok=0; for (i=0;i<n-1;i++) if (strcmp(x[i+1].autor,x[i].autor)>0) { temp=x[i]; x[i]=x[i+1]; x[i+1]=temp; ok=1;} } while (ok!=0); else { strcpy(dm,"literar"); strcpy(ed,"da"); j=0; for (i=0;i<n;i++) if ((strcmp(x[i].dom,dm)==0) && (strcmp(x[i].editare,ed)==0)) {y[j]=x[i]; j++;} do {ok=0; for (i=0;i<j-1;i++) if (strcmp(y[i].autor,y[i+1].autor)>0) { temp=y[i]; y[i]=y[i+1]; y[i+1]=temp; ok=1;} } while (ok!=0); afisare (y,j); } } void pretmic(bib x[50],int n) { char pret[50]; int i,c; c=0; printf("Pretul introdus: "); fflush(stdin); gets(pret); for (i=0;i<n;i++) if (strcmp(x[i].pret,pret)<0) c++; printf("\n"); printf("Sunt %d carti",c); } int main() { int op,n,b; bib x[50],z[50],y[50]; n=0; do { printf("\n1.Introducere carti\n"); printf("2.Afisare\n"); printf("3.Listare ord alfabetica descrescatoare\n"); printf("4.Listare in ordine crescatoare a pretului\n"); printf("5.Ord alfabetica dupa autori\n"); printf("6.Pret mic\n"); printf("0.Exit\n"); printf("Introduceti optiunea voastra "); scanf("%d",&op); switch(op) { case 1: citire(x,&n); break; case 2: afisare(x,n); break; case 3: b=0;ord3(x,n,b,y); afisare(x,n); break; case 4: ord2(x,n,z); break; case 5: b=1;ord3(x,n,b,y); break; case 6: pretmic(x,n); break; case 0: break;} } while (op!=0); return 0; } sursa: tutorialehd.info
  19. Se da un fisier text.Sa se determine numarul de linii din fisier. Sa se creeze un alt fisier, cu liniile din primul aparand în ordine inversa. Rezolvare: #include <stdio.h> #include <conio.h> #include <string.h> int eroare(int x) { switch (x) { case 1: printf("Fisierul sursa nu exista sau nu poate fi accesat!"); break; case 2: printf("Fisierul destinatie nu poate fi creat!"); break; case 3: printf("Fisierul temporar nu poate fi creat!"); break; default: printf("Eroare generica!"); } getch(); return 0; } int main() { FILE * fis1, * fis2, * fis3; char filnm[2][256], linie[1024], aux[1024]; unsigned cnt, br; clrscr(); printf("Introduceti numele fisierului sursa: "); gets(filnm[0]); printf("Introduceti numele fisierului destinatie: "); gets(filnm[1]); fis1=fopen(filnm[0], "r"); if (!fis1) return eroare(1); fis2=fopen(filnm[1], "w"); if (!fis2) return eroare(2); fclose(fis2); cnt=0; while (fgets(linie, 1024, fis1)) { fis3=fopen("temp.$$$", "w"); if (!fis3) return eroare(3); fwrite(linie, sizeof(char), strlen(linie), fis3); fis2=fopen(filnm[1], "r"); if (!fis2) return eroare(2); do { br=fread(aux, sizeof(char), 1024, fis2); aux[br]='\0'; fwrite(aux, sizeof(char), br, fis3); } while (br); cnt++; fclose(fis2); fclose(fis3); remove(filnm[1]); rename("temp.$$$", filnm[1]); } printf("Fisierul are %u linii", cnt); getch(); return 0; } sursa: tutorialehd.info
  20. Multimea A este formata din numere naturale cuprinse intre 0 si 1000. Elementele multimii A sunt stocate in fisierul multA.txt. Multimea B este si ea formata din numere naturale cuprinse intre 0 si 1000, iar elementele ei sunt stocate in fisierul multB.txt. Sa se dezvolte un program care realizeaza urmatoarele: a)incarca elementele multimii A în program astfel încat aceasta sa ocupe cat mai putina memorie b) afiseaza elementele multimii A c) incarca elementele multimii B in program astfel incat aceasta sa ocupe cat mai putina memorie d) afiseaza elementele multimii B e) creeaza multimea R = reuniunea celor doua multimi. Scrie elementele acestei multimi pe ecran si in fisierul multR.txt. f) creeaza multimea I = intersectia celor doua multimi Scrie elementele acestei multimi pe ecran si în fisierul multI.txt. g) creeaza multimea D = diferenta celor doua multimi. Scrie elementele acestei multimi pe ecran si in fisierul multD.txt. Rezolvare: #include<string.h> #include<conio.h> #include<stdlib.h> #include<stdio.h> int main(void) { FILE *f,*g; int a,i,mask=1,j; char mult1[125],mult2[125]; f=fopen("multA.txt","rt"); for(i=0;i<125;i++) mult1[i]=0; while(!feof(f)) { mask=1; fscanf(f,"%d", &a); mult1[a/8]=mult1[a/8] | mask<< a%8; //printf("\n%d",mult1[a/8]); //getch(); } for(i=0;i<125;i++) { for(j=0;j<=7;j++) { if( (1<<j) & mult1[i] ) printf("%d ,", i*8+j); } } printf("\n"); g=fopen("multB.txt","rt"); for(i=0;i<125;i++) mult2[i]=0; while(!feof(g)) { mask=1; fscanf(g,"%d", &a); mult2[a/8]=mult2[a/8] | mask<< a%8; //printf("\n%d",mult1[a/8]); //getch(); } for(i=0;i<125;i++) { for(j=0;j<=7;j++) { if( (1<<j) & mult2[i] ) printf("%d ,", i*8+j); } } //reuniunea printf("\n reuniunea: "); for(i=0;i<125;i++) { for(j=0;j<=7;j++) { if( ((1<<j) & mult2[i]) || ((1<<j) & mult1[i]) ) printf("%d ,", i*8+j); } } //intersectia printf("\n intersectia: "); for(i=0;i<125;i++) { for(j=0;j<=7;j++) { if( ((1<<j) & mult2[i]) && ((1<<j) & mult1[i]) ) printf("%d ,", i*8+j); } } //diferenta printf("\n diferenta A-B: "); for(i=0;i<125;i++) { for(j=0;j<=7;j++) { if( !((1<<j) & mult2[i]) && ((1<<j) & mult1[i]) ) printf("%d ,", i*8+j); } } getch(); } Fisierul multA.txt va contine: 12 15 100 501 999 Fisierul multB.txt va contine: 112 12 15 51 88 sursa: tutorialehd.info
  21. O vânzatoare trebuie sa dea un rest de 5 lei unui client. Pentru simplitate se considera ca poate da acest rest utilizând oricâte bancnote de 1, 2 sau 3 lei. Sa se genereze toate modalitatile de a platii suma de 5 lei cu bancnote 1, 2 sau 3 lei . Indicatii de rezolvare: Problemele de mai sus se vor rezolva utilizând tehnica backtracking, varianta iterativa. Modelul de baza pentru aceasta tehnica este reprezentat de functia de mai jos. void back() { int areSuccesor; int niv; niv=1; init(niv); while(niv>0) { do { areSuccesor=succesor(niv); }while(areSuccesor!=0 && valid(niv)==0); if (areSuccesor!=0){ if (solutie(niv)) afiseaza(niv); else{ niv=niv+1; init(niv); } } else niv=niv-1; } } [/C] Pentru rezolvarea unei probleme se utilizeaza o stiva în care vor fi generate solutiile. Stiva a fost declarata ca un vector de întregi si notata cu sol. Pe fiecare nivel (pozitie) în stiva se afla un element din multimea solutiilor. De asemenea au fost utilizate functiile, de mai jos a caror implementare depinde de problema de rezolvat. • functia init(niv) - la urcarea în stiva, pe nivelul la care s-a ajuns se pune o valoare care nu se afla în multimea considerata, dar de la care, la pasul urmator, se ajunge la primul element din acea multime (de regula valorile 0 sau -1); • functia succesor(niv) - pe un anumit nivel, gaseste elementului urmator celui considerat, element netestat; functia returneaza 1, daca exista succesor acesta fiind pus în stiva si 0 în caz contrar; • functia valid(niv) - verifica daca elementul ales îndeplineste sau nu conditiile de continuitate ale problemei si returneaza 1 daca le îndeplineste si 0 în caz contrar; • functia solutie(niv) - testeaza daca s-a ajuns sau nu la solutia finala, returnând 1, respectiv 0; • functia afiseaza (niv) - tipareste solutia, de la 1 si pâna la nivel. Rezolvare: [C]#include <stdio.h> #include <stdlib.h> #include <conio.h> int i,k,n,v[100],sol=0,banc[4]={0,5,7,10}; char isS,isV=0; void Init(int k){ v[k]=0; } int Succesor(int k){ if (v[k]<n){ v[k]++; return 1; } else return 0; } int Valid(int k){ int s=0; for (i=1;i<=k;i++) s=s+banc[v[i]]; if (s>50) return 0; return 1; } int Solution(int k){ int s=0; for (i=0;i<=k;i++) s=s+banc[v[i]]; if (s==50) return 1; return 0; } void Print(int k){ printf("%d : ",++sol); for (i=1;i<=k;i++) printf("%d ",banc[v[i]]); printf("\n"); } void Back(){ k=1; Init(k); while (k>0){ isS=0;isV=0; do{ isS=Succesor(k); // cauta succesor if (isS) isV=Valid(k); } while (isS && !isV); if (isS && isV) //este succesor si este valid if (Solution(k)) Print(k); else { k++; Init(k); } else //nu am succesor -> cobor o pozitie in stiva k--; } } int main() { n=3; Back(); getch(); return 0; } sursa: tutorialehd.info
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.