Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / нужна ваша помощь / 7 сообщений из 7, страница 1 из 1
09.12.2006, 16:04
    #34187897
Stasy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна ваша помощь
нужно решить 2 задачи.
1.
Создать два текстовых файла, все числа, содержащиеся в обоих файлах од-новременно, удалить из первого файла. Дополнительных массивов и файлов не использовать.
2. Разработать программу перевода числа (например, 124,341) из десятичной системы счисления в систему счисления с основанием меньше либо равно 20.
заранее спасибо
...
Рейтинг: 0 / 0
09.12.2006, 19:19
    #34188025
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна ваша помощь
Для начала представьте ваши варианты (пусть даже неработающие - поправим) или огласите ваши материальные возможности в плане оплаты решения этого задания.
...
Рейтинг: 0 / 0
10.12.2006, 12:08
    #34188358
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна ваша помощь
действительно.
что именно у вас не получается.

делать бесплатно за вас никто не будет, только укажут ошибку.


аффтопитезь
...
Рейтинг: 0 / 0
16.12.2006, 00:06
    #34204629
Stasy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна ваша помощь
в первой задаче я не знаю как перевести десятичную часть в 16 ричную систему счисления.
я знаю системы счисления от 2ной до 10 и 16, но зачем в условиии дано <=20 не могу понять :(
вот код первой проги
// программа работы с переводом десятичного числа в любую другую систему счисления

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>

// декларация процедур
void preobrazovanie ( double a, int b)
{ int celoe, r,k;
double test;
double drob;
double dtest, d, p;
test=a;
celoe=int(test); // урезаем дробную часть
drob=test-celoe; // то, что находится после запятой
k=0;
r=1;
while (celoe>0)
{ k=k+(celoe-(celoe/b)*b)*r;
r=r*10;
celoe=(celoe/b);
}
int m=10;
double r1;
r1=0.1;
d=0;
while (m>0)
{ m--;
dtest=drob*b;
d=d+int(dtest)*r1;
r1=r1/10;
drob=drob*b-int(dtest);
}
p=k+d;
printf (" chislo budet viglyadet v vvide %lf \n",p);
}
void perevod ( double x)
{ int celoe, r,k,ml;
double test,dt;
double drob;
char cel,plus[20];
test=x;
celoe=int(test); // урезаем дробную часть
drob=test-celoe; // то, что находится после запятой
k=0;
r=1;
ml=0;
printf(" chaslo imeet vid ");
while (celoe>0)
{ k=int(double(celoe)/16);
dt=k;
k=celoe-dt*16;
celoe=dt;
if (k==0) cel='0';
else if (k==1) cel='1';
else if (k==2) cel='2';
else if (k==3) cel='3';
else if (k==4) cel='4';
else if (k==5) cel='5';
else if (k==6) cel='6';
else if (k==7) cel='7';
else if (k==8) cel='8';
else if (k==9) cel='9';
else if (k==10) cel='A';
else if (k==11) cel='B';
else if (k==12) cel='C';
else if (k==13) cel='D';
else if (k==14) cel='E';
else cel='F';
plus[ml]=cel;

ml++;
}
while (ml>0)
{
printf (" %c",plus[ml-1]);
ml--;
}
}

void main (void)

{ double x;
int n;

// x- заданное число, n - система счисления
printf (" vvedite chislo v desyati4noj sisteme s4isleniya \n");
scanf("%lf",&x);
printf(" vvedite sistemu schisleniya? v kotoruyu perevodite \n");
scanf ("%d",&n);
// проверка на то, является ли система перевода 16ричной, 10тичной или менее( 2я,8я и прочее)
if (x>=0)
if (n==10)
printf (" chislo budet viglyadet v vvide %lf \n",x);
else if ((n<10)&(n>1))
{
// если система счисления меньше 10, то выполняем преобразование вызовам функции
preobrazovanie(x,n);
// printf (" chislo budet viglyadet v vvide %lf \n",x);
}
else if (n==16)
{
perevod(x);
// printf (" chislo budet viglyadet v vvide %lf \n",xm);
}
else
{ printf(" ERROR!!!!!!!!!!!!!! \n");
printf (" proramma ne mozhet perevesti v vashu sistemu schisleniya \n");
printf (" ona ne podderzhivaet dannij format ili vashi dannie ne verni\n \a \a \a");
}
else
{
printf(" ERROR !!! Nelzha rabotat s takim shislom \a \a \a \n");
printf(" Proverte pravilnost vvedennih dannih \n");
}
getch();
// ждем до нажатия любой клавиши, если нажата, то мы сразу выйдем из программы
}


а во второй задаче я знаю алгоритм, но плохо знаю работу с файлами
...
Рейтинг: 0 / 0
16.12.2006, 14:07
    #34204872
Stasy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна ваша помощь
со второй уже разобралась (наконец таки мою любиную книжечку мне вернули)
#include <stdio.h>
#include <conio.h>

int main ()
{
FILE *f1;
FILE *f2;
char ch1, ch2;
f1=fopen("1.txt","r");
f2=fopen("2.txt","r+");
bool bul;
fseek(f2, 0L, SEEK_END);
putc(' ', f2);
ch1 = getc(f1);
while (ch1!=EOF) {
bul = true;
fseek(f2, 0L, SEEK_SET);
ch2 = getc(f2);
while (ch2!=' ') {
if (ch1==ch2) {
bul = false;
}
ch2 = getc(f2);
}
if (bul) {
fseek(f2, 0L, SEEK_END);
putc(ch1, f2);
}
ch1 = getc(f1);
}
fclose(f1);
f1=fopen("1.txt","w");
fseek(f2, 0L, SEEK_SET);
ch2 = getc(f2);
while (ch2!=' ') {
ch2 = getc(f2);
}
ch2 = getc(f2);
while (ch2!=EOF) {
putc(ch2, f1);
ch2 = getc(f2);
}
fclose(f1);
fclose(f2);
printf("Ha}|{MuTe K/|aBuLL|y\n");
getch();
}
машина-это не роскошь, роскошь это средство на ее передвижение...
...
Рейтинг: 0 / 0
16.12.2006, 16:15
    #34204980
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна ваша помощь
От вас скорее всего требовалось запрограммировать алгоритм перевода в любую систему счисления - а у пользователя спрашивать в какую именно. В общем виде алгоритм перевода выглядит следующим образом:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	
             // система счисления
	int n =  16 ;
	// переводимое число
	int d =  40 ;
	// целая часть от деления
	int c;
	// остаток от деления
	int r;
	// вспомогательный буфер
	char result[ 128 ] = { 0 };
	// головка записи
	char* head = result; 
	do {
		c = d / n;
		r = d % n;
		d = c;
		*head++ = "0123456789ABCDEFGHKL"[r];
	} while( d );
	// вывод результата
	while( head-- != result)
		std::cout << *head;
...
Рейтинг: 0 / 0
16.12.2006, 17:10
    #34205021
Stasy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нужна ваша помощь
Анатолий ШироковОт вас скорее всего требовалось запрограммировать алгоритм перевода в любую систему счисления - а у пользователя спрашивать в какую именно. В общем виде алгоритм перевода выглядит следующим образом:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	
             // система счисления
	int n =  16 ;
	// переводимое число
	int d =  40 ;
	// целая часть от деления
	int c;
	// остаток от деления
	int r;
	// вспомогательный буфер
	char result[ 128 ] = { 0 };
	// головка записи
	char* head = result; 
	do {
		c = d / n;
		r = d % n;
		d = c;
		*head++ = "0123456789ABCDEFGHKL"[r];
	} while( d );
	// вывод результата
	while( head-- != result)
		std::cout << *head;



спасибки большое. сейчас реализую :)
особенно спасибо за
c = d / n;
r = d % n;
теперь я буду знать как в си ДИВ и МОД (вот что значит не зная языка пытаться на нем написать)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / нужна ваша помощь / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]