На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела
1. Не создавайте несколько одинаковых тем, ибо модератор может расценить их, как спам и удалить все.
2. Для решения задач по GPSS есть отдельная тема. Все задачи по GPSS опубликовывать в этой теме! Перед опубликовыванием вашей задачи просмотрите всю тему, возможно вы сразу найдете решение.
3. Давайте вашим темам ОСМЫСЛЕННЫЕ названия, а также указывайте язык программирования. Пример: [Pascal]:Работа с файлами и записями.
4. Использования тега CODE обязательно при публикации текста программы.

Темы, оформленные с явным игнорированием правил и отсутствием смысла, будут закрыты/удалены!
Вам помогли? Напишите об этом здесь (в портфолио фрилансера)

Фрилансерам:
5. Демпинг цен запрещен (даже если Вы готовы работать бесплатно). Цены обсуждаются в приватном общении. Если вы готовы рещить задачу бесплатно, просто решите ее быстрее, чем возникнет предложение сделать это за деньги.
6. Пользователям, входящим в группу Newbie, запрещается предлагать свои услуги (завуалированно в т.ч.)
7. В посте с предложением выполнить работу, обязательно указывать ссылку на свое портфолио в Отзывы, Благодарности, Портфолио Это правило работает и в том случае, если вы выполняете работу бесплатно.
8. Реклама (даже завуалированная) своих фриланских сайтов запрещена

Нарушение данных пунктов влечет до RO или БАНА (при неоднократом)
Модераторы: ttiger, mikefreelance, Rust
Страницы: (3) 1 2 [3]  все  ( Перейти к последнему сообщению )  
    > помогите пожалуйста написать программы на языке си.
      Цитата VisualProg @
      Вот вам ещё пара примеров, от которых препод будет в восторге:

      Со строковым буфером, как у Славяна:
      ExpandedWrap disabled
        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include <math.h>
         
        typedef struct max {
            char max1;
            char max2;
            char pos1;
            char pos2;
        } Max;
         
        int main() {
         
            long n = 360521;     /* число (надо бы вводить?) */
            
            char i;
         
            int   len   = floor(log10(abs(n)))+1;    /* вычисляем число цифр */
            char* bufer = (char*)malloc(len*sizeof(char)); /* буфер для числа */
            Max*  max   = (Max*)malloc(sizeof(Max));      /* буфер для результата */
            memset(max,0,sizeof(Max));
            
            snprintf(bufer,len,"%d",n); /* переводим число в строку, 10-ичная система счисления) */
            
            for(i=0;i<len;i++){
                if((char)(*(bufer+i)-'0') > max->max1) {
                    max->max1 = (char)(*(bufer+i)-'0');
                    max->pos1 = i;
                }
            }
            for(i=len-1;i>=0;i--){
                if((char)(*(bufer+i)-'0') > max->max2 && (char)(*(bufer+i)-'0')!=max->max1) {
                    max->max2 = (char)(*(bufer+i)-'0');
                    max->pos2 = i;
                }
            }
            
            printf("\npos1=%d", max->pos1); /* пишем положение старшей цифры */
            printf("\npos2=%d", max->pos2); /* пишем положение почти старшей цифры */
            printf("\nmax1=%d", max->max1); /* пишем максимальную цифру */
            printf("\nmax2=%d", max->max2); /* пишем максимальную цифру */
            
            free(bufer);
            free(max);
            
            return(0);
        }



      Без строк, чистая математика:
      ExpandedWrap disabled
            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>
            #include <math.h>
            
            typedef struct max {
                char max1;
                char max2;
                char pos1;
                char pos2;
            } Max;
            
            char get_digit(long n, int i) {
                long pos;
                pos = n % (long)pow(10, i+1);
                if (i > 0) {
                  pos /= (long)pow(10, i);
                }
                return (char)pos;
            }
            
            int main() {
            
                long n = 360521; /* число (надо бы вводить?) */
         
                char i;    
         
                int   len = (int)floor(log10(abs(n)))+1; /* вычисляем число цифр */
                Max*  max = (Max*)malloc(sizeof(Max)); /* буфер для результата */
                memset(max,0,sizeof(Max));
            
                for(i=0;i<len;i++){
                  if(get_digit(n,i)>max->max1 ) {
                      max->pos1 = i;
                      max->max1 = get_digit(n,max->pos1);
                  }
                }
                for(i=len-1;i>=0;i--){
                    if(get_digit(n,i)>max->max2 && get_digit(n,i)!=max->max1) {
                      max->pos2 = i;
                      max->max2 = get_digit(n,max->pos2);
                  }
                }
            
                printf("\npos1=%d", max->pos1); /* пишем положение старшей цифры */
                printf("\npos2=%d", max->pos2); /* пишем положение почти старшей цифры */
                printf("\nmax1=%d", max->max1); /* пишем максимальную цифру */
                printf("\nmax2=%d", max->max2); /* пишем максимальную цифру */
            
                free(max);
            
                return(0);
            }


      Лень всё перепроверять, но, должно всё работать. Шестёрка в журнале вам обеспечена...

      спасибо большое. мне просто принцип работы понять нужно было))
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:
      Страницы: (3) 1 2 [3]  все


      Рейтинг@Mail.ru
      [ Script execution time: 0,0202 ]   [ 15 queries used ]   [ Generated: 28.03.24, 15:26 GMT ]