1. Този форум използва бисквитки. С посещаването му, Вие се съгласявате с метода ни на тяхното използване. Научете повече.

Трябва ми C програмист

Дискусия в 'Общи приказки' започната от PYM, 24 май 2011.

  1. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    За изработка на курсова задача, за УТРЕ :D (навреме се сещам май)
    Заплащането е по договаряне, но по-скоро символично 20-30$ .
    Самата задача е лесна, но съм изпуснал доста от теорията и нямам време да я наваксам + изготвя курсовата до утре.
    Ако имате познати, занимаващи се със C свързвайте ги :D
     
  2. ahtung

    ahtung
    Expand Collapse
    Moderator

    Съобщения:
    1,544
    Трофейни точки:
    53
    Оценки:
    +7 / 0 / -0
    Покер ръце:
    за кое време утре, че излизам след 10 мин. и не знам кога ще съм в съзнание след това
     
  3. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    За утре сутрин
     
  4. ahtung

    ahtung
    Expand Collapse
    Moderator

    Съобщения:
    1,544
    Трофейни точки:
    53
    Оценки:
    +7 / 0 / -0
    Покер ръце:
    фолдвам тогава :/
     
  5. ShLiM

    ShLiM
    Expand Collapse
    Well-Known Member

    Съобщения:
    1,883
    Трофейни точки:
    38
    Оценки:
    +1 / 0 / -0
    Покер ръце:
    nalazvai byrje nqkvi forumi za programisti i predlagai pari u starsa :D
    4e nqma vreme :D
     
  6. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    сетих се за bgdev.org ама там трафика е ... :X
     
  7. ceno83

    ceno83
    Expand Collapse
    Well-Known Member

    Съобщения:
    2,001
    Трофейни точки:
    78
    Оценки:
    +113 / 2 / -3
    Покер ръце:
    Напиши задачата
     
  8. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    Да се разработи програма тип „меню” за поддържане на информацията за видеотека със следните изисквания:
    1. Информацията за филмите във видеотеката се съхраняват в двоични файлове със следните данни:
    • Номенклатурен номер - уникално 12 цифрено число;
    • Име на филма - до 50 символен низ;
    • Режисьор - до 50 символен низ;
    • Продължителност - реално число;
    • Година - цяло число;
    2. Да се извършват следните обработки:
    а) Добавяне на нов филм във видеотеката;
    б) Изтриване на филмите на даден режисьор;
    в) Извеждане на информация за всички филми, подредени в намаляващ ред на годината;
    г) Намиране на най-продължителният филм.
    3. Данните да се поддържат в динамична структура - едносвързан списък в оперативната памет на ПК.
     
  9. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    Имам изготвена програма, която е малко идентична ако някой иска да се заеме да пише да му я пратя може да му помогне.
    На мен не ми помогна много много ;/
     
  10. xdgvekv

    xdgvekv
    Expand Collapse
    Well-Known Member

    Съобщения:
    742
    Трофейни точки:
    33
    Оценки:
    +9 / 0 / -4
    Покер ръце:
    Съвета ми е да напуснеш университета.
     
  11. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    :D too lateeee
     
  12. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    Така... от викане на неволята седнах сам да я пиша, ама съм в доста непознати води.
    Ще оповестя резултата си рано сутринта или по сред нощта когато вдигна белия флаг.
     
  13. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    Ще повърна, текна ми кръв от носа от напъване.Главата ме боли.Продължавам!
     
  14. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    Готов съм!Взимам един душ, отивам да закуся някъде и после на защита на курсовата.Стискайте палци.
    За който му е интересно, отдолу пущам сорса.
    main.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "functions.h"
    #define IDSIZE 12
    #define NAMESIZE 50

    struct mov{
    char id[IDSIZE+1], name[NAMESIZE+1], director[NAMESIZE+1];
    float duration;
    int year;
    struct mov *n;
    };

    const int SIZE = sizeof(struct mov);

    struct mov *create_node(void){
    struct mov *ptr;
    if((ptr = malloc(SIZE))==NULL)
    printf("Error\n");
    ptr->n = NULL;
    return ptr;
    }
    struct mov *append_node(struct mov *parent){
    parent->n = create_node();
    return parent->n;
    }
    void freelist(struct mov *parent){
    if(parent->n != NULL)
    freelist(parent->n);
    free(parent);
    }
    struct mov *get_last(struct mov *parent){
    struct mov *tmp;
    tmp = parent;
    while(tmp->n!=NULL)
    tmp=tmp->n;
    return tmp;
    }
    short id_valid(struct mov *root,char *str){
    struct mov *tmp;
    tmp = root;
    if (id_correct(str)) return 1;
    while(tmp!=NULL){

    if(!strcmp(tmp->id,str)) return 1;
    tmp = tmp->n;
    }
    return 0;
    }
    void add_movie(struct mov *p,short m){
    struct mov *med , *tmp;
    char str[13],garbage[31];
    int lenght , i;
    if(m){
    med = p;
    printf("Pone edin film trqbva da ima vuv videotekata\n");
    }
    else
    med = append_node(get_last(p));
    printf("Vuvedete nomenklaturen nomer na filma: ");
    scanf("%s",str);
    while(id_valid(p,str)){
    printf("Error! nomenklaturniq nomer trqbva da se sustoi ot 12 cifri\nPlease enter id:");
    scanf("%s",str);
    }
    strcpy(med->id,str);
    printf("Uspeshno vuveden nomenklaturen nomer %s\nMolq vuvedete ime na filma(do 50 simvola): ",med->id);
    fgets(garbage,300,stdin);
    lenght = strlen(fgets(med->name,NAMESIZE,stdin));
    if(lenght==NAMESIZE)
    fgets(garbage,300,stdin);
    med->name[lenght-1] = '\0';
    printf("Uspeshno vuveden ime na filma %s\nMolq vuvedete rejisior (do 50 simvola): ",med->name);
    lenght = strlen(fgets(med->director,NAMESIZE,stdin));
    if(lenght==NAMESIZE)
    fgets(garbage,300,stdin);
    med->director[lenght-1] = '\0';
    while(str_valid(med->director)){
    printf("Greshka v avtora, vuvedi otnovo: ");
    lenght = strlen(fgets(med->director,NAMESIZE,stdin));
    if(lenght==NAMESIZE)
    fgets(garbage,300,stdin);
    med->director[lenght-1] = '\0';
    }
    printf("Uspeshno vuveden rejisior %s\nMolq vuvedete godina na suzdavane na filma: ",med->director);
    scanf("%d",&med->year);
    printf("Uspeshno zadadena godina %d\nMolq vuvedete produljitelnost na filma v chasove: ",med->year);
    scanf("%f",&(med->duration));
    while((med->duration)<=0){
    printf("Produljitelnosta na filma ne moje da e otricatelna :).\nVuvedi nova stoinost: ");
    scanf("%f",&(med->duration));
    }
    printf("Uspeshno zadadena produljitelnost na filma ot %2.2f 4asa\n",med->duration);
    return;
    }
    void delete(struct mov **parent,struct mov *del){
    struct mov *tmp;
    if(del == *parent){
    if((*parent)->n!=NULL){
    tmp = (*parent)->n;
    free(*parent);
    *parent = tmp;
    return;
    }
    else{
    add_movie(*parent,1);
    return;
    }
    }
    else{
    tmp = *parent;
    while(tmp->n->n!=NULL){
    if(del==tmp->n){
    tmp->n=del->n;
    break;
    }
    tmp=tmp->n;
    }
    }
    if(del==tmp->n)
    tmp->n=del->n;
    free(del);
    }
    int cmp(const void *a,const void *b){
    struct mov *one , *two;
    one = (struct mov *)a;
    two = (struct mov *)b;
    if((two->year)>(one->year))
    return 1;
    else
    return 0;
    }
    short print_by_year(struct mov *root){
    struct mov *tmp,*array;
    int i=0, count = 0 , lenght;
    char str[NAMESIZE+1],garbage[300];
    tmp = root;
    while(tmp!=NULL){
    if(count == 0) array = (struct mov *)malloc((sizeof(struct mov)*(++count)));
    else array = (struct mov *)realloc(array,(sizeof(struct mov)*(++count)));
    strcpy((array[count-1].id),tmp->id);
    strcpy((array[count-1].name),tmp->name);
    strcpy((array[count-1].director),tmp->director);
    array[count-1].duration = tmp->duration;
    array[count-1].year = tmp->year;

    tmp=tmp->n;
    }
    if(count>0){
    printf("---------- List of Movies ----------\n");
    qsort(array,count,(int)sizeof(struct mov),cmp);
    for(i=0;i<(count);i++){
    printf("Movie number : %s\n",array.id);
    printf("Movie name : %s\n",array.name);
    printf("Movie director: %s\n",array.director);
    printf("Movie year: %d\n",array.year);
    printf("Movie duration: %2.2f hours\n",array.duration);
    printf("-------------------------------------------\n");
    }
    free(array);
    }
    return 0;
    }
    short delete_movie(struct mov **root){
    struct mov *tmp;
    int lenght;
    char c , garbage[300], str[NAMESIZE+1];
    printf("Na koi rejisior da iztriq filmite?: ");
    scanf("%s",str);
    fgets(garbage,300,stdin);
    tmp = *root;
    while(tmp!=NULL){
    if(!strcmp(tmp->director,str)){
    delete(root,tmp);
    return 0;
    }
    tmp=tmp->n;
    }
    return -2;
    }
    short produljitelen_film(struct mov **root){
    struct mov *tmp,*array;
    int i=0, count = 0 , lenght;
    float hidurnum = 0;
    char str[NAMESIZE+1],garbage[300], hidur[50] = " ";
    fgets(garbage,300,stdin);
    tmp = *root;
    while(tmp!=NULL){
    if(count == 0) array = (struct mov *)malloc((sizeof(struct mov)*(++count)));
    else array = (struct mov *)realloc(array,(sizeof(struct mov)*(++count)));
    strcpy((array[count-1].name),tmp->name);
    array[count-1].duration = tmp->duration;
    tmp=tmp->n;
    }
    if(count>0){
    for(i=0;i<(count);i++){
    if(array.duration > hidurnum) { hidurnum = array.duration; strcpy(hidur, array.name); }
    }
    printf("Nai-produljitelniqt film e %s kolko e dulug %2.2f chasa\n",hidur, hidurnum);
    printf("-------------------------------------------\n");
    free(array);
    }
    return 0;
    }
    struct mov *readlist(){
    struct mov *root , *tmp;
    FILE *f_list;
    int fileLen,n,end;
    if((f_list=fopen("movie.bin","rb"))==NULL){
    return NULL;
    }
    fseek(f_list, 0, SEEK_END);
    fileLen=ftell(f_list);
    fseek(f_list, 0, SEEK_SET);
    root = create_node();
    if(1!=fread(root,SIZE,1,f_list)) printf("Error Allocating First Element\n");
    if(fileLen!=SIZE){
    tmp = append_node(root);
    if(1!=fread(tmp,SIZE,1,f_list)) printf("Error Allocating Second Element\n");
    }
    end = fileLen/SIZE;
    for(n=2;n<end;n++){
    tmp = append_node(tmp);
    if(1!=fread(tmp,SIZE,1,f_list)) printf("Error Aloceting middle elements\n");
    }
    if(ferror(f_list)){
    printf("Error reading List\n");
    return NULL;
    }
    fclose(f_list);
    return root;
    }

    void savelist(struct mov *parent){
    struct mov *tmp;
    FILE *f_list;
    tmp = parent;
    if((f_list=fopen("picture.bin","wb"))==NULL){
    printf("Error Opening Item file\n");
    return;
    }
    while(tmp->n != NULL){
    fwrite(tmp, SIZE ,1,f_list);
    tmp = tmp->n;
    }
    fwrite(tmp,SIZE,1,f_list);
    fclose(f_list);
    freelist(parent);
    return;
    }
    int main(){
    short a , result;
    struct mov *med;
    if((med = readlist())!=NULL) printf("Succesfully read list\n");
    else{
    med = create_node();
    add_movie(med,1);
    }

    do{
    a = mainmenu();
    switch(a){
    case 1:
    add_movie(med,0);
    break;
    case 2:
    result = delete_movie(&med);
    if(result==-2)
    printf("no movies from this director\n");
    else if(result==0)
    printf("movie deleted\n");
    break;
    case 3:
    if(print_by_year(med))
    printf("Nqma filmi\n");
    break;
    case 4:
    if(produljitelen_film(&med))
    printf("Nqma filmi\n");
    break;
    }
    }while(a!=5);
    savelist(med);
    }

    function.c
    #include <string.h>
    #include <stdio.h>
    #include "functions.h"
    #define IDSIZE 12
    #define NAMESIZE 256

    short mainmenu(){
    int a = 0;
    do{
    printf("----------------Menu----------------\n");
    printf("||1: Dobavi nov film\n");
    printf("||2: Iztrivane na film po zadaden rejisior \n");
    printf("||3: Sortirane na filmite po godina, namalqvasht red\n");
    printf("||4: Izkarvane na nai-produljitelniq film\n");
    printf("||5: Exit\n");
    printf("Please enter the code of the desired operation : ");
    scanf("%d",&a);
    }while (!((a>= 1)&&(a<=5)));
    return a;
    }
    short id_correct(char *str){ //proverqva dali e vavedeniq string e 12 cifri
    short i, lenght;
    int c;
    lenght = strlen(str);
    c = 1;
    if (lenght != IDSIZE) return 1;
    for(i=0;i<lenght;i++){
    if(!(str>='0')&&(str<='9')) { return 1;
    c = 0; }
    }
    if(c) return 0;
    return 1;
    }

    short str_valid(char *str){
    short i, lenght , c;
    lenght = strlen(str);
    for(i=0;i<lenght;i++){
    if(!((str>='A'&&str<='Z')||(str>='a'&&str<='z')||str==' ')) return 1;
    }
    return 0;
    }
     
  15. Jorga

    Jorga
    Expand Collapse
    Well-Known Member

    Съобщения:
    308
    Трофейни точки:
    18
    Оценки:
    +4 / 0 / -0
    Покер ръце:
    tova si e dosta sick ....
     
  16. EasyGame

    EasyGame
    Expand Collapse
    Well-Known Member Resource Gardener

    Съобщения:
    4,196
    Трофейни точки:
    78
    Оценки:
    +219 / 6 / -22
    Покер ръце:
    Кво стана с изпита (или квото е там)?
     
  17. PYM

    PYM
    Expand Collapse
    Well-Known Member

    Съобщения:
    904
    Трофейни точки:
    28
    Оценки:
    +74 / 3 / -6
    Покер ръце:
    Е защитих я успешно, изпита е отделно, но по-нататък :)
     

Сподели страницата