
29.04.2008, 19:51
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами:
10139366
Репутация:
1502
|
|
Сообщение от BaleHoK
выручайте...Имеется непустая последовательность произвольных натуральных чисел (чисел не более 50), за которой следует нуль. Не используя массивов, вывести в строку поряд¬ковые номера максимальных чисел последовательности. Выполнить проверку пра¬вильности ввода информации...
Язык С или С++...только не Vc
Что-то, по-моему, без массивиов это невозможно... Хотя бы потому, что нам надо где-то хранить саму нашу последовательность...
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|

30.04.2008, 09:22
|
|
Участник форума
Регистрация: 30.09.2007
Сообщений: 116
С нами:
9796453
Репутация:
14
|
|
Сообщение от desTiny
Что-то, по-моему, без массивиов это невозможно... Хотя бы потому, что нам надо где-то хранить саму нашу последовательность...
Можно было и с массивами,преподу на ето пох)))))
Delimiter а тебе +++++ от меня)))))))
ещё подкину задачку Нужна прога по переводу чисел из 2,8,10,16 систем счисления и обратно...что то типа этого http://rapidshare.com/files/111430028/perev.exe.html
Так же на С или С++ ))))))))))))
Последний раз редактировалось BaleHoK; 30.04.2008 в 09:24..
|
|
|

29.04.2008, 20:19
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами:
11099536
Репутация:
518
|
|
хмммм.... максимальных чисел??? Это как??? Их много чтоль...
и в чем фишка???
Код:
char str[100]; // если контроль ввода то масив под
//строку символов должен существовать АКСИОМА!
char rez[100]; //строка для вывода результата
char smb;
int schetchik=0;
int index=0;
int max=0;
ex=0;
while(ex==0)
{
-->ввод символа в smb метод ввода твой на выбор
switch(smb)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
str[index]=smb;
index++
break;
// case ' ': можно разремировать эти строки но тогда
// case ',': нужно увеличивать размер под буфер ввода str
// но позволит использовать пробел и запятую
// как разделители между числами
case 0x0d:
str[index]=0;
if(strlen(str)>0)
{
if(atoi(str)==max)
{
strcat(rez,itoa(schetchik,rez+80,10));
strcat(rez," ");
}
else
if(atoi(str)>max)
{
max=atoi(str);
strcpy(rez,itoa(schetchik,rez+80,10));
strcat(rez," ");
}
schetchik++;
if(atoi(str)==0)
ex=1;
}
index=0;
}
}
printf("%s",rez);
ЧИСЛО СЧИТАЕТСЯ ВВЕДЕННЫМ ЕСЛИ НАЖАТ ЭНТЕР!
(или так же запятая и пробел если разремируешь и
хотя бы сделаешь str[1000]
Последний раз редактировалось Delimiter; 29.04.2008 в 20:38..
|
|
|

30.04.2008, 13:49
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами:
10021597
Репутация:
905
|
|
Код на языке C, преобразующий число из одной системы счисления в другую (а не только 2, 8, 10, 16). Принимает в качестве аргументов число (целое положительное), его систему счисления и систему счисления, в которую надо преобразовать. Сорри, лень оптимизить =)
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAXSIZE 255
char *ReverseStr (char *s)
{
int i = 0, j, len;
char s2 [MAXSIZE];
len = strlen (s);
j = len - 1;
bzero (s2, len + 1);
while (j >= 0)
{
s2 [i++] = s [j--];
//i++;
//j--;
}
return s2;
}
int convertToDec (char *in, int in_ss)
{
int len = strlen (in), i, j = 0;
int N = 0;
i = len - 1;
printf ("i = %d\n", i);
while (i >= 0)
{
if ((in [i] >= '0') && (in [i] <= '9'))
in [i] -= 0x30;
if ((in [i] >= 'a') && (in [i] <= 'f'))
in [i] -= 0x57;
N += in [i] * (int) (pow (in_ss, j));
i--;
j++;
}
//printf ("%d\n", N);
return N;
}
char *convert (int number, int out_ss)
{
int ost = 1, i = 0;
char out_num [MAXSIZE];
memset (out_num, '\0', MAXSIZE);
while (number >= out_ss)
{
ost = number % out_ss;
number = (int) (number / out_ss);
if ((ost >= 0) && (ost <= 9))
out_num [i] = ost + 0x30;
else if ((ost >= 10) && (ost <= 15))
out_num [i] = ost + 0x57;
if (number < out_ss)
{
i++;
if ((number >= 0) && (number <= 9))
out_num [i] = number + 0x30;
if ((number >= 10) && (number <= 15))
out_num [i] = number + 0x57;
//out_num [i] = number + 0x30;
}
//printf ("Number: %d\tOst: %d\n", number, ost);
i++;
}
//printf ("Out: %s\n", ReverseStr (out_num));
return ReverseStr (out_num);
}
int main (int argc, char** argv)
{
char *in_number, *out_number;
int in_system, out_system, dec_number;
if (argc != 4)
{
printf ("Usage: %s [number input_system output_system]\n", argv [0]);
return 0;
}
in_number = argv [1];
in_system = atoi (argv [2]);
out_system = atoi (argv [3]);
if (in_system == 10)
dec_number = atoi (in_number);
else
dec_number = convertToDec (in_number, in_system);
//printf ("DEC: %d\n", dec_number);
printf ("Input number: %s\n", in_number);
printf ("Input system: %d\n", in_system);
printf ("Output system: %d\n", out_system);
printf ("Output number: ");
if (out_system != 10)
{
out_number = convert (dec_number, out_system);
printf ("%s\n", out_number);
}
else
printf ("%d\n", dec_number);
return 0;
}
ЗЫ. Давно хотел этот код написать, да руки все не доходили.
|
|
|

30.04.2008, 13:58
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами:
11099536
Репутация:
518
|
|
2 krypt3r
.... а вдрух ему было достаточно
unsigned long l=strtoul(str,0,base1);
ultoa(l,str,base2);
???  Я БАЮСЬ ТАКИФ ЗАДАЧ!
|
|
|

30.04.2008, 14:26
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
С нами:
10021597
Репутация:
905
|
|
Я с этими функциями раньше не работал, так что писал то, что в голове было. За подсказку сенкс.
/me ушел читать маны
|
|
|

02.05.2008, 11:37
|
|
Познающий
Регистрация: 05.03.2007
Сообщений: 99
С нами:
10097277
Репутация:
44
|
|
Pascal
Помогите исправить программу, есть такое задание: Поменять местами первый и последний, второй и предпоследний и т.д. столбцы исходной матрицы. (матрица вида 6*6)
Вот что у меня получилось, но мне нужно чтобы она автоматически меняла местами столбцы (первый - последний, второй-предпоседний, ...), а она просит ввода с клавиатуры номеров столбцов, хотя я этого вроде не задавал.
Код:
program pr7;
uses crt;
const n=6; m=6;
a:array[1..n,1..m] of real=((0,2,1,2,5,6),
(4,5,7,8,1,8),
(0,6,2,3,3,4),
(5,6,1,9,7,1),
(1,2,3,4,5,6),
(6,5,4,3,2,1));
var i,j,k:integer;
u:real;
begin
clrscr;
read(i,j);
clrscr;
for k:=1 to n do
begin u:=a[k,j]; a[k,j]:=a[k,i];a[k,i]:=u;
end;
for j:=1 to n do
begin for i:=1 to m do write(a[j,i]:3:0);
writeln;
end;
readkey;
end.
|
|
|

02.05.2008, 11:54
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
С нами:
9746420
Репутация:
119
|
|
Сообщение от Mosvit
Pascal
а она просит ввода с клавиатуры номеров столбцов, хотя я этого вроде не задавал.
Просит потому, что:
|
|
|

02.05.2008, 12:25
|
|
Познающий
Регистрация: 05.03.2007
Сообщений: 99
С нами:
10097277
Репутация:
44
|
|
а как изменить её чтобы автоматически меняла столбцы?
И ещё вопрос, как упорядочить побочную диагональ у этой матрицы по возрастанию? Я написал:
Код:
for i:=1 to n do
begin
pd:=a[i,n-i+1];
writeln(pd:3:0);
end
А как переставить её значения по-возрастанию не понимаю. 
|
|
|

02.05.2008, 13:11
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами:
9655526
Репутация:
1821
|
|
Торопился код может быть корявым!
Important: Код писался именно для этого случая!
Код:
program pr7;
uses crt;
const n=6; m=6;
a:array[1..n,1..m] of integer=((0,2,1,2,5,6),
(4,5,7,8,1,8),
(0,6,2,3,3,4),
(5,6,1,9,7,1),
(1,2,3,4,5,6),
(6,5,4,3,2,1));
var
i,j,k:integer;
Begin
For i:=1 to n Do
Begin
For j:=1 to m DO write(a[i,j],' ');
writeln;
end;
For i:=1 to n Do
Begin
For j:=0 to m-1 Do
Begin
If j<3 then Begin
k:=a[i,j+1];
a[i,j+1]:=a[i,n-j];
a[i,m-j]:=k;
end;
end;
end;
writeln;
writeln;
For i:=1 to n Do
Begin
For j:=1 to m DO write(a[i,j],' ');
writeln;
end;
readln;
end.
"Автоматически" меняет местами столбцы!
=============
Как упорядочить думаю догодаешься!
Но если будут сложности, я помогу, только чуть позже!
Последний раз редактировалось De-visible; 02.05.2008 в 15:58..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|