Премини към съдържанието

cecko0

Потребител
  • Публикации

    193
  • Регистрация

  • Последно онлайн

Харесвания

0 Неутрална репутация

Всичко за cecko0

  • Титла
    Почетен потребител
  • Рожден ден 20.04.1991

Информация

  • Пол
    Мъж
  • Град
    Варна
  • Интереси
    Music is the answer!

Контакти

  • Twitter
    cecko01003
  • ICQ
    0
  • Интернет сайт
    http://cecko0-scriptv3.hit.bg
  1. Нямаш нужда от двумерен масив, прочиташ файла и записваш оценките в едномерен масив, след като вече имаш оценките, изчисляваш средната оценка (делиш сбора на броя им) и след това сръвняваш
  2. Измислих следния алгоритъм: записвам двете дървета, след това ги подреждам в прав ред (inorder) и записвам подредените стовйности в два динамични масива и сръвнявам дали вторият масив се съдържа в първия. НО ;] имам проблем при записването в масивите (програмата забива) и не мога да разбера къде бъркам!!?? помощ #include <iostream.h> struct elem { int key; elem *left, *right; }*root1=NULL, *root2=NULL; void add(int n, elem *&t); void check(); int i=0, y=0; int *a1= new int[i]; int *a2= new int[y]; void main() { int c; cout<<endl<<"Vavedete simvoli za dobavqne v TR1(i '0' zakraj): "<<endl; do{ cin>>c; if(c!=0) add(c,root1); }while(c!=0); cout<<endl<<"Vavedete simvoli za dobavqne v TR2(i '0' zakraj): "<<endl; do{ cin>>c; if(c!=0) add(c,root2); }while(c!=0); check(); } void add(int n, elem *&t) { if(t==NULL){ t=new elem; t->key=n; t->left=NULL; t->right=NULL; }else if(t->key<n) add(n,t->right); else add(n,t->left); } void inorder1(elem *t) { if(t){ inorder1(t->left); a1[i++]=t->key; inorder1(t->right); } } void inorder2(elem *t) { if(t){ inorder2(t->left); a2[y++]=t->key; inorder2(t->right); } } void check() { inorder1(root1); inorder2(root2); int flag=0; for(int x=0; x<i; x++){ if(a1[x]==a2[0]){ for(int q=1; q<y; q++){ if(a1[++x]!=a2[q]){ flag=0;break;} else flag=1; } } if(flag==1) break; } if(flag==1) cout<<endl<<"TR2 e v TR1"; else cout<<endl<<"TR2 ne e v TR1"; }
  3. Здравейте. Трябва да напиша функция, която проверява дали едно двоично дърво се съдържа в друго двоично дърво, т.е. всички елементи от едното дърво се съдържат в другото. Благодаря.
  4. cecko0

    Помощ за алгоритъм!

    Ето и кодът: #include <iostream.h> struct elem { int key; elem *next; }*start=NULL; void list() { if(start){ cout<<"\nSpisykyt e:"; elem *p=start; while(p){ cout<<p->key<<"\t"; p=p->next; } }else cout<<"\nSpisykyt e prazen!"; } void add_b(int n) { elem *p=start; start=new elem; start->key=n; start->next=p; } void search() { int g=0, x=0, br1=0, br2=0; if(start){ elem *q=start; while(q){ g=q->key; elem *p=start; while(p){ if(g==p->key) br1++; p=p->next; } if(br1>br2) x=g; br2=br1; br1=0; q=q->next; } cout<<endl<<"Nai 4esto sre6taniqt element e "<<x<<endl; }else cout<<"\nSpisykyt e prazen!"; } void main() { int n, k; do{ cout<<endl<<"Vavedete n:"; cin>>n; if(n!=0){ add_b(n); } }while(n!=0); cout<<endl<<endl; list(); search(); }
  5. cecko0

    Помощ за алгоритъм!

    Благодаря, утре ще се захвана да я напиша
  6. cecko0

    Помощ за алгоритъм!

    Благодаря и на двамата А ако усложня задачата- най- често повтарящият се елемент в едносвързан списък?
  7. Здравйте! Искам да попитам за алгоритъм за намиране на най- често срещно число в масив.. благодаря
  8. Имам следната задача: програма, на базата на стек, прочита въведена от клв. дума и определя дали тя е полиндром (пр: "капак", "abba"). Стигнах до: имам 2 стека, 1ят записва думата и когато се чете думата от него се появява втория- обратен на първия. Трябва някакси да сръвнявам буквите м/у двата стека (а може би само във втория).... #include <iostream.h> struct elem { int key; elem *next; }*P=NULL, *F=NULL; void push(char n, elem *&start) { elem *p=start; start=new elem; start->key=n; start->next=p; } int pop(char &n, elem *&start) { if(start){ elem *p=start; n=start->key; start=start->next; delete p; return 1; } else return 0; } void main() { char n, g; do{ cout<<endl<<"Vavedete n (n>0): "; cin>>n; if(n!='0') push(n,P); }while(n!='0'); }
  9. cecko0

    Помощ за алгоритъм на c++

    Благодаря, подкарах я
  10. cecko0

    Помощ за алгоритъм на c++

    Преди да прочета твоето мнение написах един код с подобен алоритъм, но с рекурсивна функция, който обаче пак не работи!! Не мога да разбера къде е грешката. #include <iostream.h> #include <math.h> void suma(int chislo, int i); int n; int *a=new int[n]; //dinami4en masiv za otdelnite cifri na 4isloto void main() { int i=0; int sum=0; do{ cout<<endl<<"Vavedete N (N>1): "; cin>>n; }while(n<=1); int chislo=pow(10,n-1); for(int x=chislo; x<(pow(10, n)); x++){ suma(chislo, i); //vika suma(),koqto otdelq cifrite na chislo v masiva a[n] for(int j=0; j<n; j++) sum+=pow(a[j],n); //presmqta sumata na n-te stepeni na cifrite if(sum==chislo) cout<<endl<<chislo; chislo++; sum=0; i=0; } } void suma(int chislo, int i) { if(i>n) return; int buf; int buf2=pow(10,n-1-i); buf = chislo%buf2; a[i]=chislo/buf2; suma(buf, i+1); } Сега ще се опитам по твоя начин да я напиша. Ето и по твоя начин. Пак не връща нищо, но вече взех да си мисля, че няма такива числа не виждам къде може да има грешка #include <iostream.h> #include <math.h> void main() { int sum=0; int n; int *a=new int[n]; //dinami4en masiv za otdelnite cifri na 4isloto do{ cout<<endl<<"Vavedete N (N>1): "; cin>>n; }while(n<=1); int chislo=pow(10,n-1); for(int x=chislo; x<(pow(10, n)); x++){ for(int z=n-1; z>=0;z--){ a[z] = chislo % 10; chislo /= 10; } for(int j=0; j<n; j++) sum+=pow(a[j],n); //presmqta sumata na n-te stepeni na cifrite if(sum==chislo) cout<<endl<<chislo; chislo++; sum=0; } }
  11. cecko0

    Помощ за алгоритъм на c++

    Как да отделя цифрите от цяло число?? Явно аз незнам как...
  12. Здравейте, имам следната задача на С++: "Да се състави програма, която за дадено N>1, намира всички N-цифрени числа, които са равни на сумата от N-те степени на своите цифри." Алгоритъмът, който аз измисли е следния- при зададено N (примерно 3) си генерирам числото 100, което се инкрементира то 999 (преди да стане 4-цифрено), също се създава масив с 3 елемента {1, 0, 0} (в този случай с- 3- цифрени числа), за да мога да намирам сумата от отделните цифри в числото на Nта степен. Проблемът е в това, че не мога да инкрементирам правилно този масив с отделните чилса... ако може някой да ми помогне, благодаря
  13. Здравейте! Имам програма на c++, която попълва 2 масива със случайни числа(единият с [10], а другия с [15] елемента) и след това ги сортира. Трябва да напиша още една функция, която (чрез merge sort) сортира 2та масива в нов 25-елементов. Благодаря! #include <iostream> #include <ctime> using namespace std; const N=10, M=15; void syzdavane(float a[N], float b[M]); void sort(float a[N], float b[M]); void main() { float a[N], b[M]; syzdavane(a, b); sort(a, b); izvejdane(a, b); } void syzdavane(float a[N], float b[M]) { srand(time(NULL)); for(int i=0; i<N; i++){ a[i]=rand()%100+1; } for(int j=0; j<M; j++){ b[j]=rand()%100+1; } } void sort(float a[N], float b[M]) { float temp, temp1; for(int i=N; i>1; i--){ for(int j=0; j<i-1; j++){ if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(int k=M; k>1; k--){ for(int c=0; c<k-1; c++){ if(b[c]>b[c+1]){ temp1=b[c]; b[c]=b[c+1]; b[c+1]=temp1; } } } }
  14. Здравейте! Имам структора от данни и binary файл. Целта на програмата ми е да запиша данните във файл и след това да ги прочета в отделни функции. Това е кодът.. но не работи, мисля, че ne използвам правинло fp.write (или може би fp.read)?!? помощ #include <iostream.h> #include <fstream.h> const int N=2; //max potrebiteli const double TAX=0.11; struct tel { char nom[9]; char ime[20]; int razg; double suma; };; void sazdavane(); void chetene(struct tel k[]); void main() { tel k[N]; sazdavane(); chetene(k); } void sazdavane() { tel a[N]; fstream fp; fp.open("abonati.dat", ios::binary| ios::out); for(int i=0; i<N; i++){ cout<<endl<<"Vavedete dannite za abonat nomer "<<i+1<<": "; cout<<endl<<"Vavedete nomer: "; cin>>a[i].nom; cout<<endl<<"Vavedete ime: "; cin>>a[i].ime; cout<<endl<<"Vavedete razgovor: "; cin>>a[i].razg; a[i].suma=a[i].razg*TAX; fp.write((char*)a, sizeof(tel)); } fp.close(); } void chetene(tel k[]) { fstream fp; fp.open("abonati.dat", ios::binary| ios::in); fp.read((char*)k,N*sizeof(tel)); fp.close(); for(int i=0; i<N; i++){ cout<<endl<<endl<<"Abonat nomer "<<i+1<<":"; cout<<endl<<"Ime: "<<k[i].ime; cout<<endl<<"Nomer: "<<k[i].nom; cout<<endl<<"Razgovori: "<<k[i].razg; cout<<endl<<"Suma: "<<k[i].suma; } }
  15. Здравейте. Имам проблем с линкването на програма. Според мен проблемът идва от предаването на параметрите на функциите (не съм сигурен, че съм ги написал правилно)... ако може някой да ми помогне Ето целия код... функциите се викат в menu()-то. Благодаря предварително. #include <iostream.h> #include <stdio.h> #include <string.h> #include <iomanip.h> #include <cstdlib> void menu(); //prototipi na f-cii void save(); void check(char nizz[80]); void check1(char nizz[80]); void check2(char nizz[80]); void check3(char nizz[80]); void dumi(char nizz[80]); void main() { save(); menu(); } void menu(char nizz[80]) { int ch, ch1, ch2; do{ system("cls"); do{ cout<<endl<<"****************MENU****************"; cout<<endl<<"1.Broi simvoli."; cout<<endl<<"2.4-bukveni dumi."; cout<<endl<<"3.Izvejdane na masiva."; cout<<endl<<"4.Krai."; cout<<endl<<endl<<"Molq vavedete vashiq izbor: "; cin>>ch; }while(ch<1||ch>5); //prowerka za walidnost na ch switch(ch) { case 1: check(nizz); break; case 2: do{ cout<<endl<<"**********4-bukveni dumi**********"; cout<<endl<<"1.Broi 4-bukveni dumi: "; cout<<endl<<"2.Zamenete 4-bukvenite dumi s '****'."; cout<<endl<<"3.Premahnete 4-bukvenite dumi."; cout<<endl<<endl<<"Molq vavedete vashiq izbor: "; cin>>ch2; }while(ch2<1||ch2>3); switch(ch2){ case 1: check1(nizz); break; case 2: check2(nizz); break; case 3: dumi(nizz); break; default : cout<<endl<<"Greshen izbor, obitajte otnovo!"; } break; case 3: do{ cout<<endl<<"*********Izvejdane na masiva*********"; cout<<endl<<"1.Izvejdane na masiva."; cout<<endl<<"2.Izvejdane na masiva bez '$' v kraq."; cout<<endl<<endl<<"Molq vavedete vashiq izbor: "; cin>>ch1; }while(ch1<1||ch1>2); switch(ch1){ case 1: cout<<endl<<"Masiv: "<<nizz<<endl; system("pause"); menu(); break; //izvejda masiva case 2: check3(nizz); break; default : cout<<endl<<"Greshen izbor, obitajte otnovo!"; } break; case 4: cout<<endl<<"Dovijdane "<<endl; break; default : cout<<endl<<"Greshen izbor, obitajte otnovo!"; } } while(ch!=4); } void save(char nizz[80]) { char *niz; FILE *fp; niz=nizz; cout<<"Molq vavedete tekst do 80 simvola: "; cin.getline(nizz,80); if(strlen(nizz)<80) strcat(nizz," $"); //dobavq $ ako masivyt e po-maluk ot 80 simvola fp = fopen("text.txt", "a+"); //otvarq faila za dopylvane if (fp){ while (*niz != '\0'){ //zapiswa vseki simvol ot nizz, dokato ne sre6tne kraq na masiwa putc(*niz, fp); niz++; } putc('\n', fp); //dobavq nov red v kraq fclose(fp); //zatvarq faila } else printf("cannot open file"); } void check(char nizz[80]) { cout<<endl<<"Broi simvoli: "<<strlen(nizz)<<endl; //izvejda broq na simvolite v nizz system("pause"); } void check1(char nizz[80]) { int i=0, count=0, j=0, br=0; for(i;i<80;i++) //cikyl, koito minava prez masiva if(nizz[i] == 0x20 || i==strlen(nizz)){ //ako sre6tne " " ili stigne do kraq na masiva if (count == 4) br++; //ako dumata e 4-bukvena, broq4yt se inkrementira count = 0; //nulira se broq4a sled kato stigne do " " ili kraq na masiva } else count++; //inkrementira se broq na bukvite cout<<endl<<"Broi 4-bukveni dumi: "<<br<<endl; system("pause"); } void check2(char nizz[80]) { int i=0, count=0, a=0; for(i;i<80;i++) //cikyl, koito minava prez masiva if(nizz[i] == 0x20 || i==strlen(nizz)){ //ako sre6tne " " ili stigne do kraq na masiva if (count == 4) { //ako dumata e 4-bukvena for (a=i-4 ;a<i;a++) nizz[a]=0x2A; //zamenq 4-bukvenata dima s '****' } count = 0; //nulira se broq4a sled kato stigne do " " ili kraq na masiva } else count++; //inkrementira se broq na bukvite cout<<endl<<"Masiv: "<<nizz<<endl; //izvejda masiva, sled kato 4-bukvenite dumi sa zameneni s '****' system("pause"); } void check3(char nizz[80]) { cout<<endl<<"Masiv: "; for(int g=0;g<=(strlen(nizz))-2;g++) //izvejda masiva bez poslednite 2 simvola(" $") cout<<nizz[g]; cout<<endl; system("pause"); } void dumi(char nizz[80]) { char dumi[80]=""; int i=0, count=0, a, j; for(i; i<80; i++){ //cikyl, koito minava prez masiva if(nizz[i] == 0x20 || i==strlen(nizz)){ //ako sre6tne " " ili stigne do kraq na masiva if (count != 4) { //ako dumata ne e 4-bukvena for(a=i-count; a<=i; a++) //se kopira v dumi[] dumi[strlen(dumi)]=nizz[a]; } count = 0; //nulira se broq4a sled kato stigne do " " ili kraq na masiva } else count++; //inkrementira se broq na bukvite } for(j=0; j<80; j++) //masivyt bez 4-bukvenite dumi se kopira v nizz nizz[j]=dumi[j]; cout<<endl<<"Bez 4-bukvenite dumi: "<<nizz; //nizz se izvejda cout<<endl; system("pause"); } Оправих се, извинявам се за спама!
  • Разглеждащи това в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване