Помощ за C (програмиране)

17 отговора 1136 прегледа
#1

Помощ за C (програмиране)

Моля ако някой му се занимава и и има желание да помогне с направата на една програмка за криптиране. Значи условието е:

Да се напише програма на "С", която криптира и декриптира
текстов файл.Криптират се само символите в думите без да се
криптират разделителите между тях.При криптирането да се
използва следната формула:КС=(С+Р+d)%255,където КС е кода
на криптирания символ;С-кода на оригиналния;Р-кода на
едносимволна парола;d-броя думи от началото на файла до
думата съдържаща кодирания символ.

Ако все пак някой може да го направи, да напише отговор тук, на бележка или е-майл. Borislaw_Manow@yahoo.com
10x

"Нищо не променя тъй детето, както космосът и пубертетът."
"На всяка звезда, живот има." - Гьоте
Отговор
в отговор на KlD #2

Re: Помощ за C (програмиране)

Абе пич! Това е програмка за няма 5 минути. Защо не се хванеш и не я напишеш. Нали затова ходиш на училище - да учиш.

Отговор
в отговор на fir4o #3

Re: Помощ за C (програмиране)

Грешка, не е е за мен и не ходя на у-ще... Знам че е за 5 мин само че когато човек не е пипал С... малко ще му е трудно... а трябва да се направи до няколко дни. ако можеш направи го... или и на теб няма да ти стигнат 5 мин? :)))

"Нищо не променя тъй детето, както космосът и пубертетът."
"На всяка звезда, живот има." - Гьоте
Отговор
в отговор на KlD #4

Re: Помощ за C (програмиране)

ми мога да я направя...ама чакай малко....става въпрос за работа под ДОС нали? но това няма много голямо значение....

Отговор
в отговор на animania #5

Re: Помощ за C (програмиране)

//c/c++ code...not tested...only inmind checked
// only cripting

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
FILE *fp,*fd;
char textfile[15],destination[15];
int c,kc,p,d;
printf("Vuvedete ime na fail");
fflush(stdin);
gets(textfile);
printf("Vuvedete ednosimvolna parola");
fflush(stdin);
scanf("%d",&p);
//ako ne stane taka probvai
//char pp;
//scanf("%c",&pp);
//p=(int)(pp);
//........towa e sy6toto

printf("Vuvedete ime na kriptiraniq fail");
fflush(stdin);
gets(destination);
fd=fopen(destination,"W");
fp=fopen(textfile,"R");
c=getc(fp);
while(!feof(fp))
{
if(c==' ')d++;
kc=(c+p+d)%255;
putc(kc,fd);
c=getc(fp);
};
fcloseall();
}///.....end main...

/*Да се напише програма на "С", която криптира и декриптира
текстов файл.Криптират се само символите в думите без да се
криптират разделителите между тях.При криптирането да се
използва следната формула:КС=(С+Р+d)%255,където КС е кода
на криптирания символ;С-кода на оригиналния;Р-кода на
едносимволна парола;d-броя думи от началото на файла до
думата съдържаща кодирания символ.
*/

Отговор
в отговор на amimania #6

Re: Помощ за C (програмиране)

az priemam che razdeliteli sa ' ', '\t', '\n' ... za "\r\n" iska malko powehe pisane.

#include <stdio.h>

void main(int argc, char *argv[]) {
if(argc != 4) {
printf("Usage: crypt <file> <output> <key>\n");
return;
}
FILE *in = fopen(argv[1], "r");
if(in == NULL) {
printf("error openning file: %s\n", argv[1]);
return;
}
FILE *out = fopen(argv[2], "w");
if(out == NULL) {
printf("error openning file: %s\n", argv[2]);
return;
}
char key = argv[3][0];
char c;
char new;
int len = 0;
while( (c = fgetc(in)) != EOF ) {
if( c == ' ' || c == '\t' || c == '\n') {
len++;
new = c;
} else {
new = (c + key + len)%255;
}
fputc(new, out);
}
printf("len == %d", len);
fclose(in);
fclose(out);
}

Отговор
в отговор на mitkohr #7

Re: Помощ за C (програмиране)

A niama li da e po prosto ako se izpolzva
funkciata isalpha() i isdigit() za teksta,
a vsichko ostanalo da se smiata za razdelitel - `;' `,' `.' ` ' `\t' ...

Отговор
в отговор на fir4o #8

Re: Помощ за C (програмиране)

ave tozi ... dolkoto znam tozi forum e za pomosht na nujdaeshtite i nachinaeshtite .... mnoo shibano kato pitash neshto tyka i ima takiva hora kato tebe da se karat na tezi koito neznayat ... ti da ne si gospod ( ako si gospod ili nai dobriya na C ti e prosteno )



" Every Morning is The Dawn of a New Error "
d_adams@programmer.net

Отговор
в отговор на onzi #9

Re: Помощ за C (програмиране)

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

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

Пламен
Отговор
в отговор на Плaмeн #10

I sustain :)

kato molish triabwa da si po uchtiw i da izkazwash
predwaritelno uwajenieto si, osobeno kogato molish
nepoznati da otdeliat ot wremeto si...
w kraia na kraishtata, pari niama da poluchat, pone
triabwa da podhraniat egoto si :)
kakto kazwashe niakoi
"niama takowa neshto kato bezplaten obiad"

Отговор
в отговор на aquarin #11

Re: Помощ за C (програмиране)

mdaaa .. i towa e nachin ... prosto ne beshe definirano kakwo e razdelitel .. :))
twoq wariant mi se struwa po pulen .. :)

Отговор
в отговор на KlD #12

Re: Мерси

и на двамата които ми дадохте примерите. Сега имам още няколко въпроса...
amimania - явно нямам библиотеките които исползваш... Или версията на С която имам не е пълна или това са твои собственни библиотеки или не е на С. Кое от трите? Можеш ли да ми пратиш библиотеките на майл (имам го в профила)? Друго, доколкото виждам си го направил само за криптиране... а обратният вариант можеш ли да го направиш, щото трябва да може и да декриптира?
mitkohr - По твоя вариант нещо не ми е явно много... първо има един символ, който незнам какъв е и кое копче е на клавиатурата

if( c == ' ' || c == '\t' || c == '\n') - каква е тази права черта?
А и като че ли самата програма не е довършена или се вмъква някъде в горната?

Сега един общ въпрос... след един размисъл по условието се достига до един проблем. При криптиране на разните символи, в последователност може да се стигне до такъв момент, че даден символ да му се върне код равен на кода на интервал (разделител). До тук добре, но при декриптирането какво става?! Стига до интервал и го пропуска, защото не се криптира и декриптира и си еб**а майката... с други думи условието е доста непълно или невярно. Не че не може да се поработи по въпроса, но... май не е толкова просто?!? Май ще има две развития на нещата :
1 - някъде да се помнят колко са думите и/или интервалите/разделителите и да се записват, но така ще се получава по голям файла.
2 - да се измисли начин, такъв че да се пропускат самите интервали, като код за криптиране, но пък това ще доведе и до други проблеми, няма да е 255, а ще трябва малко голям да стане кода...
3 - а бе имаше и още варианти, ама... съм се бъгирал нещо и не мога да мисля...

4 - Чакам решения, ако ви е удобно де... И мислите че ще можем да се справим с проблема...

"Нищо не променя тъй детето, както космосът и пубертетът."
"На всяка звезда, живот има." - Гьоте
Отговор
в отговор на KlD #13

Re: Мерси

Zahto ne vzemesh niakoi dobre izvesten (i dobre obmislen ot specialisti) algoritam i saotvetno realizaciata mu. Shtoto moje da si
mislish che mnogo dobre si kriptiral dannite
ama da se okaje che algoritama ti e slabichak
i se razbiva za 2-3 min.

Отговор
в отговор на aquarin #14

Re: Мерси

ами виж, няма никво значение за колко време се разбива. И цялата работа е такава, че некъв тъп даскал иска просто това да може да работи. И дори и с този си дефект в условието, даже може да се представи, защото бъгът ще се появи само ако текста е доста дълъг... Плюс това, ми трябва точно по това условие задачата... А бтв втората задача си е завършена била напълно... аз просто не съм обърнал внимание на някои неща...

"Нищо не променя тъй детето, както космосът и пубертетът."
"На всяка звезда, живот има." - Гьоте
Отговор
в отговор на KlD #15

Re: Мерси

ami KID po ptincip pri men e nad '\' ... "||" - towa sa dwa simwolia :) i e logichesko "ili" w C ... '|' e pobitowo "ili". Programata si e e napulno zawurshena i testwana. Kakato sam si se dosetil ne sam pisal dekriptirashta programa. Ot bibliotekite na drugata programa moje da ostawish samo stdio.h zashtot mai e pisana pod linux.
az ti kazah che uslowieto e nepulno .. :).

Редактирано от mitkohr на

Отговор
в отговор на KlD #16

Re: Мерси

Ми това са стандартни заглавни файлове на С/С++ библиьотеки.....по въпроса за "||" това е логическо или за С/С++....другите символи ги знаеш нали?!?
сега като си видях сорса дето ти го дадох и аз забелязах, че имам грешки ама явно тогава не съм прочел условието, както трябва...та става въпрос за разделителите...но както казах в отговора с сорса това е само предварителна версия и не е тествана на компилатор...само в главата мис малки модификации може да се поправи, а за бъга относно кода на интервала...ми съмнявам се да се получи такова нещо, но за да се подсигурим мойе да добавим условие, че не може да има два интервала един до друг

Отговор
в отговор на animania #17

Re: Мерси

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

"Нищо не променя тъй детето, както космосът и пубертетът."
"На всяка звезда, живот има." - Гьоте
Отговор
в отговор на KlD #18

Re: Мерси

Ми аз изришно пък съм споменал, че това са библйотеки на С и С++ ...т.е те са си още от времето на първото С......а и за нова програма ...много съм зает понеже сега е края на срока и....ситуацията е напечена доста

Отговор