Форум программистов, компьютерный форум CyberForum.ru

Строки и числа в функциях. - C++

Восстановить пароль Регистрация
 
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
30.03.2010, 21:46     Строки и числа в функциях. #1
Народ, вот упражняюсь в написании функций (самая больная тема). Не могли бы вы мне помочь в решении следующих задач на языке Си? Хочу сделать себе парочку шаблонов, для будущих решений. Заранее всем спасибо!

1)Написать и протестировать функцию, которая определяет, является ли симметричной заданная символьная строка.

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

3)Написать и протестировать функцию, которая определяет, совпадают ли в заданной строке первая и последняя буквы.

Задачи в общем-то однотипные, поэтому и необходим шаблончик на будущее.
Ещё раз, всем, кто уделит немножко своего времени для совершенствования навыков-заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
31.03.2010, 03:41     Строки и числа в функциях. #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
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
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
void symmetry(char*);  //1
void natural(double);  //2
void letters(char*);   //3
 
int main(){
    clrscr();
 
//---1---------------------------------------------------------
 
    char str[1000];
    printf("Fill a string:\n");
    scanf("%s", &str);
    symmetry(str);
 
//---2---------------------------------------------------------
 
    double number;
    printf("Enter number:\n");
    scanf("%lf", &number);
    natural(number);
 
//---3---------------------------------------------------------
 
    printf("Enter a string:\n");
    scanf("%s", &str);
    letters(str);
 
    getch();
    return 0;
}
 
//---1---------------------------------------------------------
 
void symmetry(char* str){
    int c=0, length = strlen(str)-1;
 
    for(int i = 0; i < length+1; i++)
        if(str[i] == str[length-i])
            c++;
 
    if(c == length+1) 
                printf("Symmetric\n");
    else    printf("Asymmetrical\n");
}
 
//---2---------------------------------------------------------
 
void natural(double i){
    char string[9];
    itoa(i, string, 10);
    printf("%c %c\n", string[0], string[strlen(string)-1]);
}
 
//---3---------------------------------------------------------
 
void letters(char* str){
    printf("First and last signs");
    if(str[0] == str[strlen(str)-1])
        printf(" are equal\n");
    else    printf(" differs\n");
}
эти функции ничего не возвращают, а просто выводят на экран ответ, если хотите что бы они возвращали определенные значения, с которыми можно работать, могу написать
Bloodykeeper
This party getting crazy!
 Аватар для Bloodykeeper
78 / 74 / 1
Регистрация: 22.09.2009
Сообщений: 427
31.03.2010, 21:03  [ТС]     Строки и числа в функциях. #3
Добавлено через 6 часов 20 минут
Вот ещё одна задача, но уже с матрицей. Если кто напишет- буду очень благодарен.

Написать и протестировать функцию, переставляющую в прямоугольной матрице строки в обратном порядке.

Тоже для однотипных задачек мне пригодится. Заранее спасибо.
Vorona, спасибо за предыдущие задачи, я их чуток переделал.

Добавлено через 4 часа 18 минут
Вопрос ещё актуален!

Добавлено через 2 часа 46 минут
Народ, ну помогите плиз, как её решить: Написать и протестировать функцию, переставляющую в прямоугольной матрице строки в обратном порядке. Очень интересно, как это выполнить. Нигде не нашёл, выручайте!
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
31.03.2010, 23:35     Строки и числа в функциях. #4
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
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
 
int** reorganise(int, int, int**);
 
int main(){
    clrscr();
    randomize();
 
    int **matrix, tmp;
    int i, j, lines, columns;
 
    printf("Enter number of lines: ");
    scanf("%d", &lines);
    printf("Enter number of columns: ");
    scanf("%d", &columns);
 
    matrix = (int**) malloc (sizeof(int*)*lines);
    for(i = 0; i < lines; i++)
        matrix[i] = (int*) malloc (sizeof(int)*columns);
 
    for(i = 0; i < lines; i++)
        for(j = 0; j < columns; j++)
            matrix[i][j] = random(10);
    for(i = 0; i < lines; i++){
        for(j = 0; j < columns; j++)
            printf("%d ", matrix[i][j]);
        printf("\n");
    }
    printf("\n");
    
        reorganise(lines, columns, matrix);
    
        for(i = 0; i < lines; i++){
        for(j = 0; j < columns; j++)
            printf("%d ", matrix[i][j]);
        printf("\n");
    }
 
    free(*matrix);
    free(matrix);
    getch();
    return 0;
}
 
int** reorganise(int line, int column, int **matrix){
    for(int i = 0; i < line/2; i++)
        for(int j = 0; j < column; j++){
            int tmp = matrix[i][j];
            matrix[i][j] = matrix[line-i-1][j];
            matrix[line-i-1][j] = tmp;
        }
        return matrix;
}
и вот ф-ции предыдущие доработал:

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
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define N 1000
 
int symmetry(char*);  //1
int* natural(double);  //2
int letters(char*);   //3
 
int main(){
    clrscr();
 
//---1---------------------------------------------------------
    char str[N];
    printf("Fill a string:\n");
    scanf("%s", &str);
 
    if(!symmetry(str))printf("Symmetric\n");
    if(symmetry(str)) printf("Asymmetrical\n");
 
//---2---------------------------------------------------------
    double number;
    printf("Enter number:\n");
    scanf("%lf", &number);
    printf("%d %d\n", natural(number)[0], natural(number)[1]);
 
//---3---------------------------------------------------------
    printf("Enter a string:\n");
    scanf("%s", &str);
    if(!letters(str)) printf("Equal\n");
    if(letters(str))  printf("Differs\n");
 
    getch();
    return 0;
}
 
//---1---------------------------------------------------------
 
int symmetry(char* str){
    int c=0, length = strlen(str)-1;
 
    for(int i = 0; i < length+1; i++)
        if(str[i] == str[length-i])
            c++;
 
    if(c == length+1)
        return 0;
    else    return 1;
}
 
//---2---------------------------------------------------------
 
int* natural(double i){
    char string[9];
    itoa(i, string, 10);
    int firstlast[2];
    firstlast[0] = string[0] - '0';
    firstlast[1] = string[strlen(string)-1] - '0';
    return firstlast;
}
 
//---3---------------------------------------------------------
 
int letters(char* str){
    if(str[0] == str[strlen(str)-1])
        return 0;
    else    return 1;
}
Yandex
Объявления
31.03.2010, 23:35     Строки и числа в функциях.
Ответ Создать тему
Опции темы

Текущее время: 05:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru