Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.21.233.41] |
|
Сообщ.
#1
,
|
|
|
просто понятия не имею как эти программы писать
1.Известна информация о багаже (количество вещей и общий вес багажа) 24-х пассажиров. Выяснить, имеется ли хоть один пассажир, багаж которого состоит из од-ной вещи весом менее 25 кг. 2.Удалить из массива:все элементы, начиная с n1-го по n2-й (n1<=n2). 3.Изменить знак у максимального по модулю элемента массива. Минимальный элемент массива при этом не определять. |
Сообщ.
#2
,
|
|
|
Ты хочешь научиться, или хочешь просто готовые программы?
|
Сообщ.
#3
,
|
|
|
1, 2 и 3 связаны между собой или нет?
Если нет, то 2 так, скажем: #include <stdio.h> typedef int T; /* вид данных массива: int - целое число, char - 1-байтное 'число', long-большое число, и т.д. */ T massiv[10]={3,14,15,92,6,53,58,97,9,-1}; /* массив из 10 элементов */ void Delete( int n1, int n2) { memmove( &massiv[n1], &massiv[n2+1], (10-1-n2)*sizeof(T)); /* если n2=9, то всё до хвоста удалили и ничего не надо двигать */ } int main() { int i; for( i=0; i<10; i++) printf("%d\t", massiv[i]); /* пишем до удаления */ Delete( 3, 7); for( i=0; i<10; i++) printf("%d\t", massiv[i]); /* пишем опосля удаления */ } |
Сообщ.
#4
,
|
|
|
Цитата JoeUser @ Ты хочешь научиться, или хочешь просто готовые программы? мне их надо написать 45 штук. они блоками похоже. я смотрю как сделать и примерно похожие на это делаю. я так учусь Добавлено Цитата Славян @ 1, 2 и 3 связаны между собой или нет? Если нет, то 2 так, скажем: #include <stdio.h> typedef int T; /* вид данных массива: int - целое число, char - 1-байтное 'число', long-большое число, и т.д. */ T massiv[10]={3,14,15,92,6,53,58,97,9,-1}; /* массив из 10 элементов */ void Delete( int n1, int n2) { memmove( &massiv[n1], &massiv[n2+1], (10-1-n2)*sizeof(T)); /* если n2=9, то всё до хвоста удалили и ничего не надо двигать */ } int main() { int i; for( i=0; i<10; i++) printf("%d\t", massiv[i]); /* пишем до удаления */ Delete( 3, 7); for( i=0; i<10; i++) printf("%d\t", massiv[i]); /* пишем опосля удаления */ } не связаны. три разных блока это |
Сообщ.
#5
,
|
|
|
3-я так, скажем:
#include <math.h> float massiv[10]={3,0.14,-0.15,92,-6, 53.58,-97.9,32.38,46.264,3}; int main() { float alexMax=fabs(massiv[0]); int i, obmen=0; for( i=0; i<10; i++) printf("%f\t", massiv[i]); /* пишем до изменения */ for( i=1; i<10; i++) if( fabs(massiv[i])>alexMax ) alexMax=fabs(massiv[i]), obmen=i; massiv[obmen] = -massiv[obmen]; for( i=0; i<10; i++) printf("%f\t", massiv[i]); /* пишем опосля изменения */ return(0); } |
Сообщ.
#6
,
|
|
|
Цитата Славян @ 3-я так, скажем: #include <math.h> float massiv[10]={3,0.14,-0.15,92,-6, 53.58,-97.9,32.38,46.264,3}; int main() { float alexMax=fabs(massiv[0]); int i, obmen=0; for( i=0; i<10; i++) printf("%f\t", massiv[i]); /* пишем до изменения */ for( i=1; i<10; i++) if( fabs(massiv[i])>alexMax ) alexMax=fabs(massiv[i]), obmen=i; massiv[obmen] = -massiv[obmen]; for( i=0; i<10; i++) printf("%f\t", massiv[i]); /* пишем опосля изменения */ return(0); } так просто? |
Сообщ.
#7
,
|
|
|
Да нисколько не просто - гляньте сколько строк то вышло!
В каком-то языке наверняка такое возможно: massiv.getMax().changeSign(); |
Сообщ.
#8
,
|
|
|
Цитата Славян @ Да нисколько не просто - гляньте сколько строк то вышло! В каком-то языке наверняка такое возможно: massiv.getMax().changeSign(); ну впр сам код то не сильно заморочееный |
Сообщ.
#9
,
|
|
|
1-я:
#include <stdio.h> typedef struct { int kol; float ves; } BAGAJ; BAGAJ b[24]={{11,1},{2,2},{1,4},...}; int main() { int i; for( i=0; i<24; i++) if( b[i].kol==1 ) /* О! всего одна вещь! */ if( b[i].ves<25 ) /* ого, лёгкая! */ printf("Багаж №%d нужный!\n",i); return(0); } |
Сообщ.
#10
,
|
|
|
Цитата Славян @ 1-я: #include <stdio.h> typedef struct { int kol; float ves; } BAGAJ; BAGAJ b[24]={{11,1},{2,2},{1,4},...}; int main() { int i; for( i=0; i<24; i++) if( b[i].kol==1 ) /* О! всего одна вещь! */ if( b[i].ves<25 ) /* ого, лёгкая! */ printf("Багаж №%d нужный!\n",i); return(0); } славян вообще красавец. вот что ты не хочешь за это деньги брать? |
Сообщ.
#11
,
|
|
|
Лучше не уходить болтовнёй в сторону, а то Джо серчать буде!
|
Сообщ.
#12
,
|
|
|
Цитата Славян @ славян я вот думаю ее можно же сделать так не? int main() { int n=24; int b[n]; int i; srand(time(NULL)); for (i=1;i<n;i++) { b[i]=rand() % 10+24; printf("%d kg\n", b[i]); } i=1; while (i<n) { if (b[i]<25) { printf("est' bagazh massoy menee 25 kg"); break; } else i++; } return 0; } Добавлено Цитата Славян @ а вот эта неверная. она же не удаляет н |
Сообщ.
#13
,
|
|
|
Цитата alex____666 @ Ну в принципе, можно. Но есть недостаток: индексы идут с 0, а у вас с 1, так что b[0] не проверится, а это всё же близко к ошибке. я вот думаю ее можно же сделать так не? |
Сообщ.
#14
,
|
|
|
M Используем тег [code] для добавления текста программы в пост! Устное предупреждение! Читаем правила! |
Сообщ.
#15
,
|
|
|
Цитата alex____666 @ Из массива в Си, насколько я знаю, ничего не удаляется. Так что там у меня просто в ненужные места записываются оставшиеся элементы с хвоста. В каком-то смысле сие похоже на удаление.а вот эта неверная. она же не удаляет В противном случае, надо объяснить, что означает "удалить из массива". |
Сообщ.
#16
,
|
|
|
Цитата Славян @ а что нужно еще добавить нужно чтобы при нуле проверяло? там же ещё нежно добавить else, но если его добавить то он будет писать что нет багажа. и мне его просто пришлось убрать. вотч то тут сделать можно? |
Сообщ.
#17
,
|
|
|
Как-то так:
int main() { int n=24; int b[n]; int i; srand(time(NULL)); for( i=0; i<n; i++) /* тут изменение */ { b[i] = rand() % 10 + 24; printf("%d kg\n", b[i]); } i = 0; /* и тут изменение */ while (i<n) { if (b[i]<25) { printf("est' bagazh massoy menee 25 kg"); break; }else i++; } if( i>=24 ) printf("net takogo bagazha"); /* ну и тут чутка */ return 0; } |
Сообщ.
#18
,
|
|
|
Цитата alex____666 @ 2.Удалить из массива:все элементы, начиная с n1-го по n2-й (n1<=n2). До тех пор, пока не будут понятны ограничения реализовывать нельзя! Ограничения: 1. тип данных элемента массива 2. статический или динамический массив 3. если динамический, то кол-во элементов вводится с клавиатуры или из файла. Какое ограничение на ввод. Нужна ли обработка некорректного ввода 4. способ ввода входных значений + проверка их корректности 5. в зависимости от типа массива под удалением можно понимать различную обработку 6. n1, n2 - значения или индексы. корректность их ввода + доп.ограничения, допустим, использовать спец.функцию для обработки или например, только с использованием цикла do-while и т.д. еще можно добавить что-нибудь при необходимости... |
Сообщ.
#19
,
|
|
|
Цитата Славян @ А это зависит от радиуса кривизны рук программиста (программёра етс...).alex____666, твой собеседник ИНОГДА даёт ценные советы, даже мне пару раз помог (я тут с 2008 года, если что))), но... Из массива в Си, насколько я знаю, ничего не удаляется M LMM, на личности не переходим! |
Сообщ.
#20
,
|
|
|
Цитата Славян @ memmove( &massiv[n1], &massiv[n2+1], (10-1-n2)*sizeof(T)); слава обьясни что в этой строчке находится? memmove( &massiv[n1], &massiv[n2+1], (10-1-n2)*sizeof(T)); |
Сообщ.
#21
,
|
|
|
Хвост переносится в центр. Т.е. с места n2+1 (отсюда идёт "хвост") копируется весь остаток (10-1-n2 штук), в место, начиная с того начального места (n1).
|