Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/140: Рейтинг темы: голосов - 140, средняя оценка - 4.55
This party getting crazy!
 Аватар для Bloodykeeper
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427

Магический квадрат

15.01.2010, 16:37. Показов 29603. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Вот во вторник экзамен по программированию, препод дала задачки разобрать пять штук, для подготоки, помогите если не сложно.

1. Написать функцию, которая выводит на экран строку, состоящую из звёздочек. Длина строки (количество звёздочек) является параметром функции. Составить программу, использующую эту функцию для рисования равностороннего треугольника.

2. Написать программу, которая проверяет, является ли введённая с клавиатуры строка целым числом.

3. Написать программу, которая проверяет является ли введенная с клавиатуры квадратная матрица "магическим квадратом". "Магический квадрат"- матрица, у которой сумма чисел в каждом горизонтальном, вертикальном ряду и по каждой из диагоналей одна и та же.

4. Дан одномерный массив, содержащий по крайней мере 2 нуля. Вывести все элементы массива между этими нулями.


ну пятая была на структуру, я их люблю, поэтому сам написал)))

Надеюсь на вашу помощь, думаю если я смогу разобрать эти задачи, то экзамен сдам отлично, так как на экзамене задачи проще, по словам преподов.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2010, 16:37
Ответы с готовыми решениями:

Магический квадрат (латинский квадрат)
Напишите в С++ программу составления магического квадрата (латинского квадрата) 200-го порядка

Магический квадрат
прошу помочь в такой схеме решения магического квадрата. #include <iostream> using namespace std; #include <Windows.h> ...

Магический квадрат
с клавы вводиться число N. нужно сделать магический квадрат с размерами

29
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
15.01.2010, 23:24
Студворк — интернет-сервис помощи студентам
Bloodykeeper:
Спать еще не охото.
Такие вопросы задаешь.

Добавлено через 1 минуту
А что в итоге получается?
Хоть что то рисуется.

Добавлено через 1 минуту
Может моё утверждение верно.
Если ты пишешь алгоритмы тебе понятна суть, если смотришь на другие(циклы) надо вникать:
такой закон "fosters".
0
This party getting crazy!
 Аватар для Bloodykeeper
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 23:25  [ТС]
да, это. Очень интересное тело цикла while...я раньше такого не встречал...а где об этом можно почитать?
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
16.01.2010, 00:42
C++
1
while (n_of_asterisk--) printf("*");
В смысле непонятное тело цикла? Одно лишь printf("*"); поэтому использование { } не нужно. т.е. код аналогичен
C++
1
2
3
4
while (n_of_asterisk--)
{
   printf("*");
}
Вы это имели ввиду? Или о том что в теле цикла выполнилось printf("*");? Ну... в цикле может выполняться что угодно. Даже в for цикле где заданы i = 0 .. x не обязательно использовать это самое i.

А про почитать - это книги. А побыстрее - например http://progs.biz/cpp/cpp/lessons/005.aspx
0
This party getting crazy!
 Аватар для Bloodykeeper
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
16.01.2010, 12:52  [ТС]
нет я про (n_of_asterisk--) что это?
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
16.01.2010, 12:59
Я вчера ошибку допустил здесь нет прохода по столбцам.

//Суммируем в столбцах
for(int t = 0;t<Weight;t++){
for(int j = 0;j<Height;j++){
sumINSTB+=matrix[t][j];


}
}
переправь на

C++
1
2
3
4
5
6
7
for(int t = 0;t<Weight;t++){
        for(int j = 0;j<Height;j++){
    sumINSTB+=matrix[j][t];
 
 
        }
}
1
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
16.01.2010, 13:09
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
нет я про (n_of_asterisk--) что это?
n_of_asterisk-- эквивалентно n_of_asterisk = n_of_asterisk - 1
Уменьшает значение на 1
1
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
16.01.2010, 18:04
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
нет я про (n_of_asterisk--) что это?
Это совсем не тело цикла, а условие продолжения работы. int автоматически будет преобразовываться к true\false как я понимаю и в конце концов когда переменная уменьшиться до 0 - 0 преобразуется к false и цикл прекратиться.
К предыдущему сообщению хочу добавить что использование var-- или var++ (тоже самое только увеличение переменной на 1) считается более быстрым по сравнению с var = var - 1 т.к. это ближе к машинному коду
0
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
17.01.2010, 07:33
Assembler
1
2
3
4
5
6
7
8
    a++;
0041147C  mov         eax,dword ptr [a] 
0041147F  add         eax,1 
00411482  mov         dword ptr [a],eax 
    b = b + 1;
00411485  mov         eax,dword ptr [b] 
00411488  add         eax,1 
0041148B  mov         dword ptr [b],eax
Не имеет значения. Крмпилятор все равно к одному приводит
И добавлю, что команды
add и inc выполняются за одинаковое время в 99% процессоров. Главное преимущество - простота записи и привычка программиста.

Добавлено через 3 минуты
C++
1
int автоматически будет преобразовываться к true\false
А он не преобразовывается. Если значение int = 0, то это false. В остальных случаях true

Добавлено через 10 часов 18 минут
Вот ещё кодик. Взят у Страуструпа. (Давно читал, что -то могу наврать.) Алгоритм копирования одной строки в другую
C++
1
while(*str2++ = *str1++);
И все. Вот пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char *str1 = new char[6];
    strcpy(str1,"12345");
 
    char *str2 = new char[6];
    strcpy(str2,"qqqqq");
 
    printf(str1);
    printf("\n");
    printf(str2);
    printf("\n");
    char* p2 = str2; //Это для сохранения предыдущего значения указателя
    char* p1 = str1; 
    while(*str2++ = *str1++);
Учти - значения str1 и str2 меняются, поэтому изпользуем переменные p1 и p2.
2
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.01.2010, 13:54
C++
1
2
3
4
5
6
7
8
9
class Str{
    char* data;
    unsigned short int _size;
/* какие то там конструкторы и деструкторы */
    bool operator== (char* otherStr){
        char* dataCopy = data; unsigned char count = 0;
        while (*dataCopy++ == *otherStr++) count++;
    return ( count == _size );
}
Тогда получается по аналогии так можно сравнивать?)
или лучше будет не придумывать и сделать так?
C++
1
2
3
    bool operator== (char* otherStr){
        return !strcmp(data, otherStr);
    }
Добавлено через 1 час 40 минут
А так кажется можно сравнить строки без знаний о их длине. Она вообще не определяется
C++
1
2
3
4
5
6
7
8
9
bool cmp(char* Str1, char* Str2)
{
while (
    ( *Str1++ == *Str2++ )
    &&
    ( ( Str1[-1] != 0) || ( Str2[-1] != 0) )
);
return (((Str1[-1] == 0) || (Str2[-1] == 0)) && (Str1[-1] == Str2[-1]));
}
0
ниначмуроФ
 Аватар для PointsEqual
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
22.01.2010, 01:27
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
51
52
#include <iostream>
#include <conio.h>
 
int main()
{
    unsigned short size=0;
    std::cout<<"vvedite razmernost kvadrata: ";
    std::cin>>size;
    unsigned int max_size=size+(size-1);
    unsigned int**pMagic_square;
    pMagic_square=new unsigned int*[max_size];
    for (unsigned int i=0; i<max_size; i++)
    pMagic_square[i]=new unsigned int[max_size];
    unsigned int i;
    unsigned int j;
    for (i=0; i<max_size; i++ )
    for (j=0; j<max_size; j++ )
    pMagic_square[i][j]=0;
    unsigned int k=1;
    i=(max_size>>1);
    j=0;
    while (i<max_size){
        unsigned int i1=i;
        unsigned int j1=j;
        unsigned int gr=size>>1; //gr-расстояние от границы увеличенного массива
        while (j1<((j+(max_size>>1))+1)){
            pMagic_square[i1][j1]=k;
            if ((i1>(gr)) && (j1<(gr)))  //left
            pMagic_square[i1][j1+size]=k;
            if ((i1>(size+gr)-1) && (j1>(gr)))
            pMagic_square[i1-size][j1]=k;  //down
            if ((i1<(gr)) && (j1>(gr)))
            pMagic_square[i1+size][j1]=k; //up
            if ((i1>(gr)) && (j1>(size+gr)-1))
            pMagic_square[i1][j1-size]=k; //right
            i1--;
            j1++;
            k++;
        }
        i++;
        j++;
    }
    std::cout<<std::endl<<"Magic kvadrat gotov:  "<<std::endl<<std::endl;
    for (i=(size-1)>>1; i<=max_size-(size>>1)-1; i++ ){
        for (j=(size-1)/2; j<=max_size-(size>>1)-1; j++ ){
            printf("%d\t",pMagic_square[i][j]);
        }
        std::cout<<std::endl;
    }
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2010, 01:27

Магический квадрат
Задана матрица целых чисел. Определить является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и...

Магический квадрат)
Определить, является ли заданная квадратная матрица порядка n магическим квадратом, т.е. матрицей, у которой суммы элементов строк и...

Магический квадрат
можно составить магический квадрат с первых 36 простых чисел? (сумма элементов которой в каждой срок, в каждом столбцы и по каждой...

Магический квадрат
Задача: Написать программу, которая определяет, явдяется ли заданная целочисленная квадратная матрица порядка N 'магическим квадратом',...

Магический квадрат
Опишу проблему, первая лаба по Си++, в прошлом году был просто Си, в Си немного понимаю, а теперь прога которую над сделать, ну не...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru