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

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

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

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

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

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

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

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


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

Надеюсь на вашу помощь, думаю если я смогу разобрать эти задачи, то экзамен сдам отлично, так как на экзамене задачи проще, по словам преподов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2010, 16:37
Ответы с готовыми решениями:

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

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

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

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

29
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
15.01.2010, 16:52 2
Эта про звездочки. Сначала она тестирует функцию. Введешь ей число, обозначающее кол-во звездочек на вывод
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
//Задача по выводу *
 
#include <iostream>
#include <iomanip>
using namespace std;
 
 
void foo(int n_of_asterisk)
{   
    while (n_of_asterisk--)
        cout << '*';
   cout << endl;     
}
 
 
int main()
{
    cout << "Enter number of asterisks>";
    int n;
    cin >> n;
    foo(n);
    
    // Рисование треугольника
    for (int i = 1; i < 20; i+=2)
    {
        cout << setw(40 - i/2);
        foo(i);
    }
    system("pause");
    return 0;
}
1
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 17:01  [ТС] 3
Блин! опять забыл указать(( мне надо на Си

Добавлено через 8 минут
Вот я про строку начал, терь помогите доделать, как проверить целое число или просто буквы или не целое?

C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <conio.h>
#define s 80
int main()
{  char str[s];
char p = str, n, k;
int i;
printf("Please enter the str\n");
scanf("%d", &n);
i=0;
0
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
15.01.2010, 17:16 4
C++
1
2
3
4
5
6
7
8
9
10
11
int i = 0;
    bool is_number = true;
    while (line[i])
    {
        if (line[i] < '0' && line[i] > '9')
                is_number = false;
    }
    if (is_number)
        cout << "is_number" << endl;
    else
        cout << "not_number" << endl;
Добавлено через 3 минуты
C
1
2
3
4
5
6
7
8
char str[s];
int i = 0;
bool is_number = true;
while (!str[i])
{
     if (line[i] < '0' && line[i] > '9')
                is_number = false;
}
1
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
15.01.2010, 17:35 5
Задание 3: вроде, что типа такого.
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
//программа на C
 
 
 
void main(){
 
const int Height = 2;
const int Weight = 2;
 
 
int matrix[Height][Weight]= { {0, 0}, {0, 0} };  
 
 
int sumINSTR = 0;            //сумма в строках
int sumINSTB = 0;            //сумма в столбцах
int DYAG1 = 0;               //cумма в одной  диагонали.
int DYAG2 = 0;               //сумма в другой диагонали.
 
//Суммируем с строках
for(int i = 0;i<Height;i++){
    for(int j = 0;j<Weight;j++){
    sumINSTR+=matrix[i][j];
 
 
    }
 
 
}
//Суммируем в столбцах
for(int t = 0;t<Weight;t++){
    for(int j = 0;j<Height;j++){
    sumINSTB+=matrix[t][j];
 
 
    }
}
 
 
//Если матрица не квадратная возможен выход за буфер по строке
//Суммируем в одной диагонали
for(int p = 0, j = 0; p<Weight; p++,j++){
 
    DYAG1+=matrix[p][j];
 
    
 
}
 
 
//Если матрица не квадратная возможен выход за буфер по строке
//Суммируем в другой диагонали
for(int g = 0, k = Weight-1; k>=0; g++,k--){
 
    DYAG2+=matrix[g][k];
 
    
}
 
 
//Выводим суммы----------------
printf("%d",sumINSTR);printf("\n");
printf("%d",sumINSTB);printf("\n");
printf("%d",DYAG1);printf("\n");
printf("%d",DYAG2);printf("\n");
//-----------------------------
 
 
int CONTROL = sumINSTR;
//Проверка на магию-----------------------------------------
if((sumINSTB==CONTROL)&&(DYAG1==CONTROL)&&(DYAG2==CONTROL)){
printf("Magic Matrix\n");
}
//----------------------------------------------------------
//Если что то с логикой сравнения: не продумал, доделай тогда сам.
 
return;
}
1
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 17:41  [ТС] 6
спасибо, а можно пост про звёздочки в Си и расшифруйте
C
1
2
3
4
5
6
bool is_number = true;
while (!str[i])
{
     if (line[i] < '0' && line[i] > '9')
                is_number = false;
}
если не трудно.

Решил Си нормально подучить наконецто)
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
15.01.2010, 17:55 7
Я такими конструкциями не пользуюсь, ты мне подскажи для чего этот цикл тогда я
попытаюсь его расшифровать, просто я в задачу не вникал.

Добавлено через 52 секунды
Сейчас попытаюсь сделать: вот это.

4. Дан одномерный массив, содержащий по крайней мере 2 нуля. Вывести все элементы массива между этими нулями.
0
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 17:59  [ТС] 8
ну я так думаю, если номер меньше ноля и больше девяти, то это неверный номер, при этом должно соблюдатся условие строки, верно?
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
15.01.2010, 18:22 9
Ты письмо GRANDEATH напиши, это его руки дело.

Добавлено через 14 минут
//Первое что пришло в голову,

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
#include <stdio.h>
void main(){
 
const int size = 6;
int mas [size] = { 1,0,2,2,0,1 };
int posStart = 0;
int posEnd = 0;
for(int i=0;i<size;i++){
    
    if(mas[i]==0){
    posStart=i;     //записываем начало интервала первый: 0
                     //запускаем цикл нахождения конца интервала
    for(int j = posStart;j<size;j++)if(mas[j]==0)posEnd = j; 
    
 
    }
    //Выход из цикла если нашли интерал между нулями
    if((posStart!=0)||(posEnd!=0))break;
 
}
 
//Выводим значия от нуля до нуля
for(int y=posStart+1;y<posEnd;y++){
    printf("%d",mas[y]);
    printf("\n");
}
printf("\n");
 
return;
}
Добавлено через 3 минуты
Поправка к коду

Добавлено через 44 секунды
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
#include <stdio.h>
void main(){
 
const int size = 6;
int mas [size] = { 1,0,2,2,0,1 };
int posStart = -1;
int posEnd = -1;
for(int i=0;i<size;i++){
        
        if(mas[i]==0){
        posStart=i;     //записываем начало интервала первый: 0
                     //запускаем цикл нахождения конца интервала
        for(int j = posStart;j<size;j++)if(mas[j]==0)posEnd = j; 
        
 
        }
        //Выход из цикла если нашли интерал между нулями
        if((posStart!=-1)||(posEnd!=-1))break;
 
}
 
//Выводим значия от нуля до нуля
for(int y=posStart+1;y<posEnd;y++){
        printf("%d",mas[y]);
    printf("\n");
}
printf("\n");
 
return;
}
1
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
15.01.2010, 18:29 10
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
ну я так думаю, если номер меньше ноля и больше девяти, то это неверный номер, при этом должно соблюдатся условие строки, верно?
Извини. Ошибся. Вместо и надо поставить или.
C
1
2
3
4
5
6
bool is_number = true;
while (!str[i])
{
     if (line[i] < '0' || line[i] > '9')
                is_number = false;
}
Добавлено через 45 секунд
Еще бы сюда можно break поставить, что бы дальше не перебирать
1
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 19:00  [ТС] 11
Спасибо, а что такое posStart и PosEnd? начало и конец...а вот чего? или это просто формальное имя переменных?
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
15.01.2010, 19:04 12
Эти переменные должны хранить значения интервала. От 0 до 0.
Значения интервала выражаются через позицию элемента массива.

Начало интервала эта какая-то позиция, в массиве.
Конец интервала эта какая-то позиция, в массиве.

Добавлено через 30 секунд
Надеюсь поятно.
1
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 19:15  [ТС] 13
Да спасибо! всё очень понятно. Осталось только звёздочки разобрать) и повторить старые задачки и теорию ^^
0
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
15.01.2010, 19:21 14
Удачи. Если будешь готовиться серьезно, то по с есть книга
Керниган, Ричи. Язык C
. Очень рекомендую.
А по С++ - Дейтел.
0
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 19:30  [ТС] 15
уже пользуюсь) слушай, сможешь перевести сос звёздочками с С++ на С, если не тяжело
0
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
15.01.2010, 20:34 16
перевод - а все тоже самое. Только надо будет функции ввода-вывода поменять

Добавлено через 30 минут
Возможно - это. Почему возможно, потому что у меня сишный компилятор виснет. Я не знаю почему и что ему не хватает. Запусти и скажешь результат.
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
void foo(int n_of_asterisk)
{   
    while (n_of_asterisk--)
        printf("*");
   printf("\n");     
}
 
 
int main()
{
    printf("Enter number of asterisks>");
    int n;
    scanf("%d",&n); 
    foo(n);
    
    //printf ("Width trick: %*d \n", 5, 10);
        
  
    int i;
    for (i = 1; i < 20; i+=2)
    {
        //printf("%c",' ',(40 - i/2));
        printf ("Width trick: %*c", (40 - i/2),' ');
        foo(i);
    } 
    return 0;
}
0
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 21:45  [ТС] 17
нет не то это...не получается..там много добавить надо...ребят ну кто может перевести?? плиз!
0
78 / 78 / 29
Регистрация: 01.08.2009
Сообщений: 177
15.01.2010, 22:49 18
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
#include <stdio.h>
 
void foo(int n_of_asterisk)
{   
    while (n_of_asterisk--)
        printf("*");
   printf("\n");     
}
 
 
int main()
{
    //printf("Enter number of asterisks>");
    //int n;
    //scanf("%d",&n);
    //foo(n);
    int a, i, j;
    // Рисование треугольника
    for (i = 1, a = 20; i < 20; i+=2,a-=2)
    {
        j = a;
        for(; j > 0; j-=2)
         printf(" ");
        foo(i);
    }
    return 0;
}
Добавлено через 2 минуты
У меня что-то директиву где плюсовая функция setw() не хочет читать. Вот если без стандартных функции, а ручками.
1
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
15.01.2010, 23:16  [ТС] 19
а можно мне теперь расписать тут что к чему..ато не совсем понятно написание самой функции.
0
78 / 78 / 29
Регистрация: 01.08.2009
Сообщений: 177
15.01.2010, 23:20 20
А что там не понятного? Это:
C
1
while (n_of_asterisk--) printf("*");
Цикл будет работать, (выводить *) пока n не станет нулю..
Или что-то другое?
0
15.01.2010, 23:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2010, 23:20
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru