Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
pasha-1-08
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 27
#1

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

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

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

примечание использовать функций для работы со строками из
библиотек 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2011, 01:36
Ответы с готовыми решениями:

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

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

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

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

Дана строка. Найти символ в строке, встречающийся наибольшее число раз
Дана строка. Найти символ в строке, встречающийся наибольшее число раз. Заранее...

5
igorrr37
1867 / 1483 / 751
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
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
pasha-1-08
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 27
23.02.2011, 12:13  [ТС] #3
Это на языке С??? надо проверить !! просто у меня компилятор Pellic C

Добавлено через 3 минуты
нифига не работает !
0
igorrr37
1867 / 1483 / 751
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
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
pasha-1-08
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 27
23.02.2011, 20:50  [ТС] #5
Игорь так надо к восьмеричной системе а у тебя переводит написано к 16 ричной!!!

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

Добавлено через 7 минут
igorrr37, Задана строка, содержащая целые числа (максимум 15 чисел). Упорядочить
целые числа в строке по убыванию.
0
igorrr37
1867 / 1483 / 751
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.02.2011, 21:46

Дана строка и число n. Верно ли, что в ней есть по крайней мере n подряд идущих букв a
Дана строка и число n. Верно ли, что в ней есть по крайней мере n подряд идущих...

Дана строка предложение и слово. Определить число вхождений заданного слова в предложение
Дана строка предложение и слово. Определить число вхождений заданного слова в...

Дана матрица размерностью nxn, содержащая вещественные числа
Дана матрица размерностью nxn, содержащая вещественные числа. Отсортировать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru