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

С++ портирование - C++

Восстановить пароль Регистрация
 
dsl
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 27
24.12.2009, 22:39     С++ портирование #1
Преобразовать строчные буквы (как латинские, так и русские) в прописные.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uses crt;
var 
s,q:string;
i,n:integer;
begin
clrscr;
writeln('Введите строку');
readln(s);
n:=length(s);
for i:=1 to n do
begin
if ((s[i]>='a') and (s[i]<='z')) or ((s[i]>='а') and (s[i]<='п'))  then
begin
q:=q+chr(ord(s[i])-32);
end
else
if ((s[i]>='р') and (s[i]<='я'))then
q:=q+chr(ord(s[i])-80)
else
q:=q+s[i];
end;
writeln(q);
readln;
end.
Портирую в С++
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
#include <iostream>
#include <string>
#include <conio.h>
#include <windows.h>
using namespace std;
 
string s,q;
int i,n;
int main()
 
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251); 
cout<<"Введите строку"; 
    cin>>s;
n=s.length;
for( i=1; i <= n; i ++)
{
if (((s[i]>="a") && (s[i]<="z")) || ((s[i]>="а") && (s[i]<="п")))  
{
q=q+chr(ord(s[i])-32);     ???????
}
else {
if ((s[i]>="р") && (s[i]<="я"))
{
    q=q+chr(ord(s[i])-80);  ???????
}
else
{q=q+s[i];}
}
getch();
    return 0;
}
где вопросы стоят не знаю как реализовать перевод в пропись) кто знает как лучше реализовать данное чудо)
и еще вот не понятная работа программы

массив A размера N вывести в порядке
A1, A2, AN, AN−1, A3, A4, AN−2, AN−3, …
Pascal
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
uses crt;
var
a:array[1..50] of real;
i,n: integer;
begin
clrscr;
write('N= ');
readln(n);
writeln('Введите числа ');
for i:=1 to n do
readln(a[i]);
for i := 1 to ( (n+1) div 2 ) do
if i mod 2 = 1 then
begin
write(a[i]:3:2,' ');
if (n mod 4 = 1) and (i=((n+1) div 2)) then exit ;
write(a[i+1]:3:2,' ');
if (( n mod 2 ) <> 0 ) or ( i < ((n+1) div 2) )
then
begin
write(a[n-i+1]:3:2,' ');
if (n-i<>i+1)then write(a[n-i]:3:2,' ');
end;
end;
readln;
end.
вот так делаю
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
49
50
#include <iostream.h>
#include <math.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
 
using namespace std;
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251); 
    
float array[50];
int i,n;
 
cout<<"N= ";
cin>>n;
cout<<"Введите числа "<<endl;
for( i=1; i<=n; i ++)
{
cin>>array[i];
}
for( i = 1; i <= ( (n+1) / 2 ); i ++)
{
if (i % 2 == 1) 
{
cout<<array[i]<<" ";
exit;
 
if ((n % 4 == 1) && (i==((n+1)/2)))
{
cout<<(array[i+1])<<" ";
}
if ((( n % 2 ) != 0 ) || ( i < ((n+1) / 2) ))
 
{
cout<<(array[n-i+1])<<" ";
 
if (n-i!=i+1) 
{
    cout<<(array[n-i])<<" "; }
}
}   
}
   getch();
     
   return 0;
}
выводит не так как надо что может быть не так ?)
Всем спасибо)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
24.12.2009, 22:42     С++ портирование #2
dsl, нумерация с 0, а не с 1
dsl
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 27
24.12.2009, 22:52  [ТС]     С++ портирование #3
M128K145, А по подробней в какой части кода?
spam
15 / 15 / 1
Регистрация: 19.12.2008
Сообщений: 89
24.12.2009, 23:06     С++ портирование #4
Цитата Сообщение от dsl Посмотреть сообщение
M128K145, А по подробней в какой части кода?
Везде. Т.е. в С++ нумерация массив идет с нуля, тобишь первый элемент это mas[0], второй mas[1] и т.д.
Поэтому циклы лучше строить вот так (как пример) :
Код
for( i = 0; i < n; i++)
dsl
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 27
24.12.2009, 23:16  [ТС]     С++ портирование #5
Спасибо) Но все равно что то не так(
spam
15 / 15 / 1
Регистрация: 19.12.2008
Сообщений: 89
24.12.2009, 23:24     С++ портирование #6
Ну оно то ясно что не так что то. Вот например:
В паскале вы пишите
Код
( (n+1) [COLOR="Red"]div[/COLOR] 2 )
в С++
Код
( (n+1) [COLOR="Red"]/[/COLOR] 2 )
Уже разные действия происходят, в первом случае вы находите целую часть от деления, во втором - у вас дробное число выходит. Ну и тому подобные штрихи.
dsl
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 27
24.12.2009, 23:36  [ТС]     С++ портирование #7
spam, хмм Если делимое и делитель - целые числа, то и результат - целое. Тогда "/" эквивалент "div"
так что все верно)
spam
15 / 15 / 1
Регистрация: 19.12.2008
Сообщений: 89
24.12.2009, 23:39     С++ портирование #8
Цитата Сообщение от dsl Посмотреть сообщение
spam, хмм Если делимое и делитель - целые числа, то и результат - целое. Тогда "/" эквивалент "div"
так что все верно)
А вы попробуйте поделить, например 3 на 2, ну или что то подобное.

Добавлено:
Сори, не правильно вас понял. Я рассматривал просто с точки математики. А на типы не глядел. Так что все так (токо вот с округление я там не особо уверен в какую сторону будет ити)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2009, 23:48     С++ портирование
Еще ссылки по теме:

C++ Портирование из Visual Studio 2008 в Eclipse
Портирование из Qt в С++ C++ Qt
Портирование кода C++

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

Или воспользуйтесь поиском по форуму:
dsl
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 27
24.12.2009, 23:48  [ТС]     С++ портирование #9
Да все там верно) я догнать не могу где подвох в языке)
Yandex
Объявления
24.12.2009, 23:48     С++ портирование
Ответ Создать тему
Опции темы

Текущее время: 20:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru