Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
#1

Переставить первую и последнюю цифры числа - C++

22.01.2014, 20:54. Просмотров 2034. Ответов 48
Метки нет (Все метки)

Условие задачи: Дано натуральное число n. Переставить первую и последнюю цифры числа n.
Не могу понять что за ошибку выдает, и как её исправить.

Код
Ошибка	3	error LNK1120: 1 неразрешенных внешних элементов	c:\users\денис\documents\visual studio 2010\Projects\onen\Debug\onen.exe	1
Ошибка	2	error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup	c:\Users\Денис\documents\visual studio 2010\Projects\onen\onen\MSVCRTD.lib(crtexe.obj)
Помогите пожалуйтса!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <math.h>
using namespace std;
 
void locmax(int **pm, int n, int *indi, int *indj)
{
int max, i, j;
 
max = pm [0][0];
*indi = 0;
*indj = 0;
 
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
if (pm[i][j] > max)
{
max = pm[i][j];
*indi = i;
*indj = j;
}
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2014, 20:54     Переставить первую и последнюю цифры числа
Посмотрите здесь:
Переставить первую и последнюю цифры числа C++
C++ Переставить первую и последнюю цифры натурального числа
Переставить местами первую и последнюю цифры заданного числа C++
C++ Переставить местами первую и последнюю цифры заданного натурального числа
Дано натуральное число n. Переставить первую и последнюю цифры числа C++
Переставить первую и последнюю цифры числа натурального числа n C++
Дано натуральное число n. Переставить местами первую и последнюю цифры числа n C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
Заблокирован
23.01.2014, 00:46     Переставить первую и последнюю цифры числа #31
Цитата Сообщение от Бедел Посмотреть сообщение
но не понимает, что этот алгоритм не делает ничего схожего с перестановкой цифр числа.
А что схожесть есть :
В main() разбили число на массив чисел. Двумерность объясним тем, что в представлении всего одна строка.
(вместо последнего возьмем максимальный для усложнения) в функции ищем максимальный элемент, и находим его индексы
остаеться только поменять местами

Цитата Сообщение от Бедел Посмотреть сообщение
Просто сказать, что делает каждая строка алгоритма, не такая сложная задача, как понимать, что в целом реализовывает алгоритм.
соглашусь

Добавлено через 1 минуту
R1987, вот если бы алгоритм был расширен на длину строки равную n
Бедел
233 / 29 / 4
Регистрация: 04.06.2010
Сообщений: 286
23.01.2014, 00:50     Переставить первую и последнюю цифры числа #32
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
В main() разбили число на массив чисел. Двумерность объясним тем, что в представлении всего одна строка.
(вместо последнего возьмем максимальный для усложнения) в функции ищем максимальный элемент, и находим его индексы
остаеться только поменять местами
Не рискуйте так, сейчас ТС ещё больше запутается)))))

По-моему, на этом уже стоило заканчивать: Переставить первую и последнюю цифры числа
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
23.01.2014, 01:06     Переставить первую и последнюю цифры числа #33
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
R1987, вот если бы алгоритм был расширен на длину строки равную n
Например так:
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
# include "stdafx.h"
#include <iostream>
 
using namespace std;
int func_kol(int num);
 
int main()
{
int x,w,u,res=0,i,j;
cout<<"Vvedute 4uslo"<<endl;
cin>>x;
w=func_kol(x);
int *mas=new int[w];
for(int i=0;i<w;i++)
{
    u=x%10;
    x /= 10;
    mas[i]=u;
}
 
for(j=0,i=w-1;j<w;j++,i--)
{
    if(j==0 || i==0) res=res+mas[i]*pow(10,j);
    else res=res+mas[i]*pow(10,i);
}
cout<<res<<endl;
cin.get();
cin.get();
 
return 0;
}
 
int func_kol(int num)
{
    int kol=0;
    while (num != 0) {
        
        num /= 10;
        kol++;
    }
    return kol;
}
Бедел
233 / 29 / 4
Регистрация: 04.06.2010
Сообщений: 286
23.01.2014, 01:32     Переставить первую и последнюю цифры числа #34
S_el, всё намного проще

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int n=256, a, k=0;
    char x[n];
    cout << "Введите число: ";
    gets(x);
    for (int i=0; x[i]!='\0'; i++)
        k++;
    a=x[k-1];
    x[k-1]=x[0];
    x[0]=a;
    cout << x;
    return 0;
}
Ev_Hyper
Заблокирован
23.01.2014, 01:35     Переставить первую и последнюю цифры числа #35
Бедел, можно стринг использовать, тогда еще проще будет
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
23.01.2014, 01:36     Переставить первую и последнюю цифры числа #36
Цитата Сообщение от Бедел Посмотреть сообщение
S_el, всё намного проще

Не по теме:

Что-то я сегодня тривиальных решений не замечаю

Бедел
233 / 29 / 4
Регистрация: 04.06.2010
Сообщений: 286
23.01.2014, 01:50     Переставить первую и последнюю цифры числа #37
Ev_Hyper, string уже использовал господин Bend3r в посте #3, я не хотел повторяться Сложность заключалась лишь в определении конца строки, решил эту проблему поиском '\0' и использованием счётчика)

Добавлено через 4 минуты
Цитата Сообщение от S_el Посмотреть сообщение
Что-то я сегодня тривиальных решений не замечаю

Не по теме:

Как говорится в бородатом анекдоте: Только программисты могут мериться, у кого короче)))) Правда, короче не всегда означает эффективнее)



Добавлено через 7 минут
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
if (pm[i][j] > max)
{
max = pm[i][j];
indi = i;
indj = j;
}
cout<<max<<" "<<indi<<" "<<indj<<" ";
Кстати, если элемент [0][0] будет максимальным(max = pm [0][0]; ), то indi = i; и indj = j; не выполнится, в итоге индексы мы не сможем получить Я эту проблему решил проверкой элемента [0][0] с самим собой, пришлось ставить в условии знак >=.

Добавлено через 1 минуту
А, нет, глупость сказал, мы indi и indj изначально присвоили нули)
Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
23.01.2014, 13:56  [ТС]     Переставить первую и последнюю цифры числа #38
Кароче
Задача не правильна.
Ошибка 1 error C2057: требуется константное выражение c:\users\денис\documents\visual studio 2010\projects\onen\onen\oner.cpp 8
Ошибка 3 error C2133: x: неизвестный размер c:\users\денис\documents\visual studio 2010\projects\onen\onen\oner.cpp 8
Ошибка 2 error C2466: невозможно выделить память для массива постоянного нулевого размера c:\users\денис\documents\visual studio 2010\projects\onen\onen\oner.cpp 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int n=256, a, k=0;
    char x[n];
    cout << "Введите число: ";
    gets(x);
    for (int i=0; x[i]!='\0'; i++)
        k++;
    a=x[k-1];
    x[k-1]=x[0];
    x[0]=a;
    cout << x;
    return 0;
}
Условие задачи: Дано натуральное число n. Переставить первую и последнюю цифры числа n.
Уже не прошу помочь разобраться, решите кто небудь её
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
23.01.2014, 14:02     Переставить первую и последнюю цифры числа #39
Цитата Сообщение от Anwer Посмотреть сообщение
Уже не прошу помочь разобраться, решите кто небудь её
Чем вам не понравилась моя реализация в посте Переставить первую и последнюю цифры числа
Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
23.01.2014, 14:08  [ТС]     Переставить первую и последнюю цифры числа #40
Ошибка 1 error C2668: pow: неоднозначный вызов перегруженной функции c:\users\денис\documents\visual studio 2010\projects\onen\onen\oner.cpp 22
Ошибка 2 error C2668: pow: неоднозначный вызов перегруженной функции c:\users\денис\documents\visual studio 2010\projects\onen\onen\oner.cpp 23
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
23.01.2014, 14:14     Переставить первую и последнюю цифры числа #41
библиотеку <math.h> или <cmath> подключите.
Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
23.01.2014, 14:19  [ТС]     Переставить первую и последнюю цифры числа #42
Переставить первую и последнюю цифры числа
Может быть я что-то не так сделал, но всеравно идет подчеркивание.
Ev_Hyper
Заблокирован
23.01.2014, 14:32     Переставить первую и последнюю цифры числа #43
Anwer, пробуйте:
в коде S_el заменить
C++
1
2
3
4
5
for(j=0,i=w-1;j<w;j++,i--)
{
    if(j==0 || i==0) res=res+mas[i]*pow(10.0,j);
    else res=res+mas[i]*pow(10.0,i);
}
код Бедел:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int  a, k=0;
    char x[256];
    cout << "Введите число: ";
    gets(x);
    for (int i=0; x[i]!='\0'; i++)
        k++;
    a=x[k-1];
    x[k-1]=x[0];
    x[0]=a;
    cout << x;
    return 0;
}
Anwer
0 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 49
23.01.2014, 14:48  [ТС]     Переставить первую и последнюю цифры числа #44
Ураааа получилось!!!! Всем большое спасибо!

Добавлено через 1 минуту
и последнее если можно, может кто-то обьяснить(оставить коментарии к действиям) как реализовалась задача.
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
#include <iostream>
#include <math.h>
#include <cmath>
using namespace std;
int func_kol(int num);
 
int main()
{
int x,w,u,res=0,i,j;
cout<<"Vvedute 4uslo"<<endl;
cin>>x;
w=func_kol(x);
int *mas=new int[w];
for(int i=0;i<w;i++)
{
    u=x%10;
    x /= 10;
    mas[i]=u;
}
 
for(j=0,i=w-1;j<w;j++,i--)
{
    if(j==0 || i==0) res=res+mas[i]*pow(10.0,j);
    else res=res+mas[i]*pow(10.0,i);
}
cout<<res<<endl;
cin.get();
cin.get();
 
return 0;
}
 
int func_kol(int num)
{
    int kol=0;
    while (num != 0) {
        
        num /= 10;
        kol++;
    }
    return kol;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 15:22     Переставить первую и последнюю цифры числа
Еще ссылки по теме:
Дано натуральное число n. Переставить местами первую и последнюю цифры этого числа C++
C++ Дано натуральное число л. Переставить местами первую и последнюю цифры этого числа
C++ Для целого числа N, вводимого с клавиатуры, переставить первую и последнюю цифры и выдать его на печать.
Переставить местами первую и последнюю цифры C++
Дано число n, переставить первую и последнюю цифры местами C++

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

Или воспользуйтесь поиском по форуму:
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
23.01.2014, 15:22     Переставить первую и последнюю цифры числа #45
Прокомментировал ключевые строки.
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
#include <iostream>
#include <math.h> //лишнее
#include <cmath> //
using namespace std;
int func_kol(int num);//прототип функции
 
int main()
{
int x,w,u,res=0,i,j;
cout<<"Vvedute 4uslo"<<endl;
cin>>x;
w=func_kol(x);//определяем количество цифр
int *mas=new int[w];
for(int i=0;i<w;i++)
{
    u=x%10; 
    x /= 10;
    mas[i]=u;//заполняем массив цифрами числа
}
 
for(j=0,i=w-1;j<w;j++,i--)
{
//"собираем" число по цифрам
//"меняем" крайние цифры при выполнении условия
    if(j==0 || i==0) res=res+mas[i]*pow(10.0,j);
//оставляем цифры без изменений
    else res=res+mas[i]*pow(10.0,i);
}
cout<<res<<endl;
cin.get();
cin.get();
 
return 0;
}
 //функция для определения количества цифр в числе
int func_kol(int num)
{
    int kol=0;
    while (num != 0) {
        
        num /= 10;
        kol++;
    }
    return kol;
}
Yandex
Объявления
23.01.2014, 15:22     Переставить первую и последнюю цифры числа
Ответ Создать тему
Опции темы

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