0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 27
1

Дана строка, содержащая число в десятичной

23.02.2011, 01:36. Показов 3252. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка, содержащая число в десятичной системе исчисления.
Преобразовать число в строке к восьмеричной системе.

примечание использовать функций для работы со строками из
библиотек stdlib.h и string.h запрещено.
есть привер :::Дана строка (максимум 15 символов), содержащая целое незнаковое число в троичной системе исчисления. Перевести число в семеричную систему исчисления. Полученный результат вывести на экран.
Программа для задачи
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>  //Библиотека ввода и вывода
int main(int argc, char *argv[])
{
  char str[16];             //Объявление строки
  printf("Введите число: ");//Приглашение к вводу строки
  gets(str);                //Ввод строки
  //Переменная для хранения числа и индексная переменная
  unsigned num = 0, i;
  /* ----------------------------------------------------
  В цикле осуществляется преобразование строки в число по
  основанию три
  ---------------------------------------------------- */
  //Цикл с первого до последнего символа строки
  for(i=0;str[i]!=0;i++){
    //Суммирование с числом текущей цифры строки
    num += str[i] - 48;
    //Умножение на основание системы исчисления
    if(str[i+1] != 0) num *= 3;
  }
  /* ----------------------------------------------------
  В цикле осуществляется преобразование в числа в строку
  по основанию семь
  ---------------------------------------------------- */
  //Цикл пока число больше ноля
  for(i=0;num>0;i++){
    //Запись в строку разряда числа
    str[i] = num%7 + 48;
    //Деление числа на основание системы исчисления
    num /= 7;
  }
  //Запись завершающего нуля в строку, в переменной i
  //содержится длина строки
  str[i] = 0;
  /* ----------------------------------------------------
  В цикле осуществляется обращение строки, так как при
  преобразовании числа в строку была получена обратная
  строка
  ---------------------------------------------------- */
  //Цикл от начала строки до ее середины
  for(int j=0;j<i/2;j++){
    char ch = str[j];     //Обратное отражение строки через
    str[j] = str[i-j-1];  //дополнительную переменную
    str[i-j-1] = ch;
  }
  printf(“Результат:);
  puts(str);          //Вывод результата на экран
  return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2011, 01:36
Ответы с готовыми решениями:

Дана строка, содержащая пробелы. Найдите, сколько в ней слов
Дана строка, содержащая пробелы. Найдите, сколько в ней слов (слово – это последовательность...

Дана строка, содержащая некоторый текст (включая пробелы и знаки препинания)
УСЛОВИЕ : Дана строка, содержащая некоторый текст (включая пробелы и знаки препинания). Под словом...

Дана строка, содержащая полное имя файла. Выделить из этой строки название первого каталога
Дана строка, содержащая полное имя файла. Выделить из этой строки название первого каталога (без...

Дана строка, содержащая число в десятичной системе исчисления. Преобразовать число в строке к восьмеричной системе.
Разработать программу согласно варианту задания. Максимальная длина строк не менее 50 символов....

5
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
23.02.2011, 12:06 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// переводит натуральное число из BASEFROM в BASETO систему счисления
 
#include<iostream>
#include<cmath>
#define BASEFROM 10
#define BASETO 8
 
int main(){
    int i=0, x=0;
    char a[20]{'\0'}, b[20], *p=a;
    std::cout<<"Input number in "<<BASEFROM<<" notation:\n";
    std::cin>>a;
    while(*(p+1)) ++p;
    for(; p>=a; --p, ++i){
        if(*p>'9'){
            *p=toupper(*p);
            *p-=7;
        }
        x+=int(*p-48)*pow(BASEFROM, i);
    }
    std::cout<<"number in 10 notation:\n"<<x<<"\n";
    i=0;
    while (x){
        b[i]=x%BASETO;
        x/=BASETO;
        ++i;
    }
    std::cout<<"number in "<<BASETO<<" notation:\n";
    while(--i>=0){
        b[i]>9? std::cout<<char(b[i]+55): std::cout<<int(b[i]);
    };
}
0
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 27
23.02.2011, 12:13  [ТС] 3
Это на языке С??? надо проверить !! просто у меня компилятор Pellic C

Добавлено через 3 минуты
нифига не работает !
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
23.02.2011, 12:25 4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* переводит натуральное число из BASEFROM в BASETO систему счисления
*/
#include<stdio.h>
#include<ctype.h>
#include<math.h>
#define BASEFROM 10
#define BASETO 16
 
int main(){
    int i=0, x=0;
    char a[20]={'\0'}, b[20], *p=a;
    printf("Input number in %d notation:\n", BASEFROM);
    gets(a);
    while(*(p+1)) ++p;
    for(; p>=a; --p, ++i){
        if(*p>'9'){
            *p=toupper(*p);
            *p-=7;
        }
        x+=(*p-48)*pow(BASEFROM, i);
    }
    printf("number in 10 notation:\n%d\n", x);
    i=0;
    while (x){
        b[i]=x%BASETO;
        x/=BASETO;
        ++i;
    }
    printf("number in %d notation:\n", BASETO);
    while(--i>=0){
        b[i]>9? printf("%c", b[i]+55): printf("%d", b[i]);
    };
}
1
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 27
23.02.2011, 20:50  [ТС] 5
Игорь так надо к восьмеричной системе а у тебя переводит написано к 16 ричной!!!

Добавлено через 2 минуты
ААА всё всё всё Игорёк всё ок !! работает спасибо!!! ещё сможешь одну сделать задачку?

Добавлено через 7 минут
igorrr37, Задана строка, содержащая целые числа (максимум 15 чисел). Упорядочить
целые числа в строке по убыванию.
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
23.02.2011, 21:46 6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<stdlib.h>
 
int main(){
    char str[BUFSIZ], *p;
    gets(str);
    int nums[15], i, j, k, tmp;
    for(p=strtok(str, " "), i=0; p; p=strtok(NULL, " "), ++i){
        nums[i]=atoi(p);
    }
    for(j=1; j<i; ++j){
        tmp=nums[j];
        for(k=j-1; k>=0&&nums[k]<tmp; --k){
            nums[k+1]=nums[k];
        }
        nums[k+1]=tmp;
    }
    for(j=0; j<i; j++){
        printf("%d ", nums[j]);
    }
}
 
/*  534 12 87 756 13 5 5 6
*/
0
23.02.2011, 21:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2011, 21:46
Помогаю со студенческими работами здесь

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

Дана строка, содержащая вещественное число. Вывести на экран его дробную часть
Помогите пожалуйста!

Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно, то вывести число
Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно, то...

Дана строка из слов и пробелов, и дана вторая строка это число. нужно вставить это число после 4 слова
дана строка из слов и пробелов, и дана вторая строка это число. нужно вставить это число после 4...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru