Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2020, 15:17   #1
AERATION
Новичок
Джуниор
 
Регистрация: 30.11.2020
Сообщений: 1
По умолчанию Создать таблицу сложения и умножения для n - ричной системы счисления на C

Помогите пожалуйста разобраться с прогой
Нужно создать таблицы сложения и умножения для n - ричной системы счисления (n = 3...9). При умножении выводить значения промежуточных результатов.
Есть код на паскале:
Код:
uses crt;
 
const
  zn: string[16] = '0123456789';
 
function FromDec(n, p: byte): string;
var
  s: string;
begin
  s := '';
  while n > 0 do
  begin
    s := zn[n mod p + 1] + s;
    n := n div p;
  end;
  FromDec := s;
end;
 
var
  p, i, j: byte;
 
begin
  repeat
    write('Введите основание системы от 3 до 9 p=');
    readln(p);
  until p in [3..9];
  writeln('Таблица умножения:');
  write(' ':3);
  for i := 1 to p - 1 do
    write(i:3);
  writeln;
  writeln;
  for i := 1 to p - 1 do
  begin
    write(i:2, ' ');
    for j := 1 to p - 1 do
      write(FromDec(i * j, p):3);
    writeln;
  end;
  writeln;
  writeln('Таблица сложения:');
  write(' ':3);
  for i := 1 to p - 1 do
    write(i:3);
  writeln;
  writeln;
  for i := 1 to p - 1 do
  begin
    write(i:2, ' ');
    for j := 1 to p - 1 do
      write(FromDec(i + j, p):3);
    writeln;
  end;
end.
Попробовал написать на C, но выводит не то что надо
Код:
const char zn[16] = "0123456789";  

char FromDec(int n, int p) {
	char s = ' '; 
	while (n > 0) {
		s = zn[n % p + 1] + s;
		n = n / p;
	}
	//FromDec == s;
	return s;
}

int main () {
	setlocale(LC_ALL, "Russian");
	int p, i, j;
	printf("Введите основание системы от 3 до 9 p=: ");
	scanf("%d", &p);
	printf("Таблица умножения:");
	printf(" ");
	for (i = 1; i < p-1; i++) {
		printf("%d",i);
	}
	printf("\n\n");
	for (i = 1; i < p-1; i++) {
		printf("%d", i, " ");
		for (j = 1; j < p-1; j++) {
			printf("%d", FromDec(i*j, p));
		} 
	}
	printf("\n");
	printf("\nТаблица сложения:");
	printf("   ");
	for (i = 1; i <p-1;i++) {
		printf("%d", i);
	}
	printf("\n\n");
	for (i = 1; i < p-1; i++) {
		printf("%d", FromDec(i + j, p));
	}
	printf("\n");
}
AERATION вне форума Ответить с цитированием
Старый 30.11.2020, 15:39   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Вникать - лень, но мож прикол в том, что в Паскале элементы строки нумеруются с 1, а в Си - с 0?
digitalis вне форума Ответить с цитированием
Старый 30.11.2020, 16:44   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Строку в си нельзя получить, прибавляя char к char. Все циклы на одну итерацию короче получились (в паскале вторая граница включительно).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу, которая печатает таблицу умножения и сложения натуральных чисел в шестнадцатеричной системе счисления ss1112 Помощь студентам 2 18.12.2016 11:37
Написать программу для Паскаль 9 класс: составить программу которая печатает таблицу умножения и сложения натуральных чисел goodula Помощь студентам 0 23.01.2014 17:39
Написать программу для перевода из 16-ричной системы счисления в 10-тичную, использовать процедурую(написать Delphi) BLADIMIR Помощь студентам 3 07.09.2011 16:35
Bводим основания и получаем таблицу умножения данной системы счисления!!!С++ Wi1D Общие вопросы C/C++ 2 05.01.2010 19:56
вводим основания и получаем таблицу умножения данной системы счисления!!!С++ Wi1D Помощь студентам 0 03.01.2010 00:24