Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Уважаемые помгите пожалуйста отредактировать код чтобы выдавал нужный результат

16K
30 ноября 2013 года
Guy
33 / / 27.11.2007
Код:
#include <conio.h>
#include <stdio.h>
int main() // ПОДРОБНЫЙ ВАРИАНТ ЗАПИСИ ПРОГРАММЫ
{
int i,j; /* Счетчики */
char c='A'; /* Переменная для хранения значения первого символа
в строке */

// Цикл по строкам
for (i=1; i<=5; i++)
{ /* Начало действий внутри цикла по строкам */
/**** I) Печать строки символов */
for (j=1; j<=5; j++)
{ /* Начало тела цикла печати строки */
if (c>'I') c='A'; /*** 1) Проверка значения символа */
printf ("%2c",c); /*** 2) Вывод символа на экран */
c++; /*** 3) Новое значение символа */
} /* Конец тела цикла печати строки */
/**** II) Переход на следующую строку */
printf ("n");
/**** III) Подготовка первого символа следующей строки */
c--;
} /* Конец действий внутри цикла по строкам */
getch();
return 0;
}
Нужно чтобы резутат был такого вида
A B C D E
E A C D E
E D A D E
E D C A E
E D C B A
16K
30 ноября 2013 года
Guy
33 / / 27.11.2007
N N-1 5-N
1 0 4
2 1 3
3 2 2
4 3 2
5 4 0
N+'A'+j-1
1+'A'='B'
Вот задумка может кто поможет реализовать
446
30 ноября 2013 года
Meander
487 / / 04.09.2011
Код:
#include <iostream>
#include <stdlib.h>
int main(int argc, char** argv) {
  const int N = 5;
  int k = 0;
  char arr[N] = {'A','B','C','D','E'};
 
  for(int i=0;i<N;i++){
    for(int j=0;j<N;j++){
      if(j <  i) k = (j == 0) ? N - 1 : N - 1 - j;
      else
      if(j >  i) k = j;
      else
      if(j == i) k = 0;
      std::cout << arr[k];
    }
    std::cout << std::endl;
  }
  system("pause");
    return 0;
}
446
30 ноября 2013 года
Meander
487 / / 04.09.2011
Код:
#include <iostream>
#include <stdlib.h>
int main(int argc, char** argv) {
  int N = 5;
  char a = 'A';
  for(int i=0;i<N;i++){
    for(int j=0;j<N;j++){
      if(j < i)
        a = (j == 0) ? 'A' + N - 1 : 'A' + N - 1 - j;
      else
      if(j > i) a = 'A' + j;
      else
      if(j == i) a = 'A';
      std::cout << a;
    }
    std::cout << std::endl;
  }
  system("pause");
    return 0;
}
446
30 ноября 2013 года
Meander
487 / / 04.09.2011
Код:
#include <iostream>
#include <stdlib.h>
int main(int argc, char** argv) {
  int  N = 5;
  for(int i=0;i<N;i++){
    for(int j=0;j<N;j++){
      char a = (j == i) ? 'A' :
               (j >  i) ? 'A' + j :
               (j <  i &&
                j == 0) ? 'A' + N - 1 :
                          'A' + N - 1 - j;
      std::cout << a;
    }
    std::cout << std::endl;
  }
  system("pause");
    return 0;
}
446
30 ноября 2013 года
Meander
487 / / 04.09.2011
Код:
#include <iostream>
#include <stdlib.h>
int main(int argc, char** argv) {
  int  N = 5;
  char b = 'A';  
  for(int i=0;i<N;i++){
    for(int j=0;j<N;j++){
      char a = b;
      a += (j == i) ? 0 :
           (j >  i) ? j :
           (j == 0) ? N - 1 :
                      N - 1 - j;
      std::cout << a;
    }
    std::cout << std::endl;
  }
  system("pause");
    return 0;
}
20K
01 декабря 2013 года
sem2711
124 / / 23.09.2009
Идея задачи показалась мне интересной и, несмотря на обилие ответов, я написал свой вариант решения:

Код:
#include <iostream>

#pragma warning(disable : 4996)

void PrintUsage(char* appName)
{
    std::cout << "Usage: " << appName << " [characters]n";
    system("pause");
}

int main(int argc, char** argv) {
    char* src; // The source array.
    int len; // The length of the source.
    bool bCancel = false;

    // Parsing input arguments.
    switch (argc)
    {
    case 2:
        len = (int)strlen(argv[1]);
        src = new char[len + 1];
        strcpy(src, argv[1]);
        break;
    default:
        std::cout << "Incorrect arguments!n";
        PrintUsage(argv[0]);
        return 0;
    }

    int frame_step = 1; // The frame border speed (also uses to define a direction).
    int frame_border_pos = 0; // The position of the frame border.
   
    int pos_after; // The position in source array which goes right after the frame.
    int pos_before; // The current position in source from which the next frame starts.
    int border1 = 0; // The first element of the current frame
    int border2 = len - 1; // The last element of the current frame
   
    while (!bCancel)
    {
        // The character of the current frame border.
        char frame_char = src[frame_border_pos];

        while ((frame_border_pos * frame_step) <= border2)
        {
            pos_before = border2;
            pos_after = frame_border_pos + frame_step;
            for (int i = border1; i != frame_border_pos; i += frame_step)
            {
                std::cout << src[pos_before];
                pos_before -= frame_step;
            }

            std::cout << frame_char;

            for (int j = frame_border_pos; j != border2; j += frame_step)
            {
                std::cout << src[pos_after];
                pos_after += frame_step;
            }
            std::cout << std::endl;
            frame_border_pos += frame_step;
        }
        // Run the opposite direction and swap borders of the frame.
        frame_step *= -1;
        frame_border_pos += frame_step;
        std::swap<int>(border1, border2);

        // Interactive part.
        std::cout << "Continue? <y/n> ";
        char answer = std::cin.get();
        std::cin.ignore();
        if (answer != 'y' && answer != 'Y')
        {
            bCancel = true;
        }
    }
    delete[] src;
    system("pause");
    return 0;
}
Преимуществом моего варианта является то, что входная строка может содержать любое количество любых символов, а также то, что повторив эту процедуру ещё раз (по желанию пользователя), мы получаем исходную строку. Входная последовательность задаётся через аргументы командной строки (если пользуетесь Visual Studio, то удобно задавать параметры командной строки через свойства проекта Configuration Properties -> Debugging -> Command Arguments).
16K
03 декабря 2013 года
Guy
33 / / 27.11.2007
Огромное спасибо за предложенные варианты, но мне нужно сделать при помощи оператора цикла for (без применения массивов и прямой адресации курсора).
16K
03 декабря 2013 года
Guy
33 / / 27.11.2007
Вторая программа рисует ту же таблицу, но используется цикл while и другой алгоритм:

Код:
#include <stdio.h>
#include <conio.h>
char First; /* Первый символ в строке */
char C;     /* Текущий символ в строке */
int main()
  {
    First='K'; /* Первый символ в первой строке */
    while (First>='C')
      {
       /* Печать первой части строки символов */
       C=First;
       while (C<='I')
     {
       printf("%2c",C); // Печать очередного символа
       C+=2;               // Вычисление следующего значения
     }
       /* Печать второй части строки символов */
       C='A';
       while (C<First)
     {
       printf("%2c",C); // Печать символа
       C+=2; // Вычисление следующего значения
     }
       /* Переход на другую строку */
       printf("n");
       /* Вычисление значения первого символа */
       First-=2;
      }
    getch();
    return 0;
  }
16K
05 декабря 2013 года
Guy
33 / / 27.11.2007
Цитата: Guy
Огромное спасибо за предложенные варианты, но мне нужно сделать при помощи оператора цикла for (без применения массивов и прямой адресации курсора).

Извините что сразу не уточнил...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог