Тема: Составление программ задач обработки массивов с использованием указателей
Форма проведения: Решение задач.
Задание: Реализовать обработку массива с использованием указателей, как указано в варианте. Составить блок-схему алгоритма и написать программу.
Варианты заданий:
1. Дана целочисленная матрица размера M x N. Найти количество ее строк, все элементы которых различны.
2. Дана целочисленная матрица размера M x N. Вывести номер ее первой строки, содержащей максимальное количество одинаковых элементов.
3. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных главной (начиная с одноэлементной диагонали A[1,M]).
4. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных побочной (начиная с одноэлементной диагонали A[1,1]).
5. Дана квадратная матрица порядка M. Вывести максимальные из элементов каждой ее диагонали, параллельной побочной (начиная с одноэлементной диагонали A[1,1]).
Методические рекомендации по проведению СРСП.
Контрольный пример 1. Даны натуральное число n, действительные числа a1, ..., a2n. Получить a1a2n + a2a2n-1 + … + anan+1.
Контрольный пример 2. Дан одномерный массив. Найти среди элементов массива максимальный и зафиксировать его порядковый номер.
Контрольный пример 3. Дан двумерный массив. Найти минимальный и максимальный элементы массива.
/* пример 1 */ #define n 4 main () { int a[n],i,s,*ptr; printf("Input massiv\n"); for (i=0;i<2*n;i++) scanf("%d", &a[i]); ptr=a; s=0; for (i=0;i<n;i++) s+=*(ptr+i)**(ptr+2*n-1-i); printf("S = %d\n",s); getch(); return 0;} | /* пример 2 */ #define n 5 main () { int a[n],i,*max,pos; printf("Input massiv\n"); for (i=0;i<n;i++) scanf("%d", &a[i]); max=a; pos=0; for (i=0;i<n;i++) if (*(a+i)>*max) { max=a+i; pos=i; } printf("Max = %d raspolojen na %d meste",*max,pos+1); getch(); return 0; } |
|
|
/* пример 3 */
#define n 3
main()
{ int i, j, m1, m2, p1, p2, buf, a[n][n];
int *min, *max,s;
printf("Input matrix %dX%d\n",n,n);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d", &a[i][j]);
min=*a; m1=m2=p1=p2=0;
printf("Min = %3d m1 = %3d p1 = %3d\n", *min,m1,p1);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
if (*(*(a+i)+j)<*min)
{*min=*(*(a+i)+j); m1=i; p1=j; }
printf("Min = %3d m1 = %3d p1 = %3d\n", *min,m1,p1);
max=*a;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
if (*(*(a+i)+j)>*max)
{*max=*(*(a+i)+j); m2=i; p2=j;}
printf("Max = %3d m2 = %3d p2 = %3d\n", *max,m2,p2);
getch(); return 0;}
Задание № 8 (СРСП)
срок сдачи: 10 неделя, 5 баллов
(согласно Графику выполнения и сдачи СРС и Графику проведения и содержания СРСП )
Тема: Программирование задач обработки символьных и строковых данных
Форма проведения: Решение задач.
Задание.Задав с клавиатуры последовательность символов, реализовать обработку ее, как указано в варианте. Исходные данные задать самостоятельно, учитывая специфику конкретного варианта.
Варианты заданий:
1. Дана строка. Подсчитать количество содержащихся в ней прописных букв.
|
|
2. Дана строка. Преобразовать все строчные латинские буквы в прописные.
3. Дана строка S, изображающая вещественное число в формате с плавающей точкой, и целое число N (> 0). Вывести набор символов, изображающих первые N цифр дробной части этого вещественного числа (без округления).
4. Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы, если длина строки S меньше N, то в ее начало добавить символы "." (точка).
5. Даны две строки: S1 и S2. Удалить из строки S1 все подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений.
Методические рекомендации по проведению СРСП.
/* пример 1 */
/* Применение функций isdijit, isalpha, isalnum и isxdijit */
#include <stdio.h>
#include <ctype.h>
main()
{
printf(“Использование функции isdijit:\n”);
printf(“%s%s\n”, isdijit(‘8’) ? “8 является ” : “8 не является ”, “цифрой”);
printf(“%s%s\n\n”, isdijit(‘#’) ? “# является ” : “# не является ”, “цифрой”);
printf(“Использование функции isalpha:\n”);
printf(“%s%s\n”, isalpha(‘A’) ? “A является ” : “A не является ”, “буквой”);
printf(“%s%s\n”, isalpha(‘b’) ? “b является ” : “b не является ”, “буквой”);
printf(“%s%s\n”, isalpha(‘&’) ? “& является ” : “& не является ”, “буквой”);
|
|
printf(“%s%s\n\n”, isalpha(‘4’) ? “4 является ” : “4 не является ”, “буквой”);
printf(“Использование функции isalnum:\n”);
printf(“%s%s\n”, isalnum(‘A’) ? “A является ” : “A не является ”, “цифрой или буквой”);
printf(“%s%s\n”, isalnum(‘8’) ? “8 является ” : “8 не является ”, “цифрой или буквой”);
printf(“%s%s\n\n”, isalnum(‘#’) ? “# является ” : “# не является ”, “цифрой или буквой”);
printf(“Использование функции isxdijit:\n”);
printf(“%s%s\n”, isalnum(‘F’) ? “F является ” : “F не является ”, “шестнадцатеричным числом”);
printf(“%s%s\n”, isalnum(‘J’) ? “J является ” : “J не является ”, “шестнадцатеричным числом”);
printf(“%s%s\n”, isalnum(‘7’) ? “7 является ” : “7 не является ”, “шестнадцатеричным числом”);
printf(“%s%s\n”, isalnum(‘$’) ? “$ является ” : “$ не является ”, “шестнадцатеричным числом”);
printf(“%s%s\n”, isalnum(‘f’) ? “f является ” : “f не является ”, “шестнадцатеричным числом”);
return 0; }
/* пример 2 */
/* Применение функций atof, atoi, atol */
#include <stdio.h>
#include <stdlib.h>
main()
{ double d; int i; long l;
d = atof(“99.0”)
printf(“Использование функции atof:\n”);
printf(“%s%.3f\n\n”, “Строка \”99.0\” преобразовалась в значение типа double ”, d);
i = atoi(“2593”)
printf(“Использование функции atoi:\n”);
printf(“%s%d\n\n”, “Строка \”2593\” преобразовалась в значение типа int ”, i);
|
|
l = atol(“1000000”)
printf(“Использование функции atol:\n”);
printf(“%s%ld\n\n”, “Строка \”1000000\” преобразовалась в значение типа long ”, i);
return 0; }
Контрольный пример 3. Дан текст, состоящий из слов, разделенных пробелами. Найти самое длинное слово и вывести его на экран.
/* пример 3 */ #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> main () { char s[] = "You must take this course again"; char *s1, *s2; int len; clrscr(); s1 = strtok(s, " "); len=0; while (s1!= NULL) { if (strlen(s1)>len) { len=strlen(s1); strcpy(s2,s1); } s1 = strtok(NULL, " "); } printf("Long token = %s\n", s2); getch(); return 0; } | /* пример 4 */ /* Применение функций strcpy, strncpy */ #include <stdio.h> #include <string.h> main() { char x[] = “Happy Birthday to You”; char y[25], z[15]; printf(“%s%s\n%s%s\n”, “Строка x: ”, x, “Строка y: ”, strcpy(y,x)); strncpy(z, x, 14); z[14] = ‘\0’; printf(“Строка z: %s\n”, z); return 0; } /* пример 3 */ /* Применение функций strcat, strncat */ #include <stdio.h> #include <string.h> main() { char s1[20] = “Happy ”; char s2[] = “New Year”; char s3[40] = “”; printf(“s1 = %s\ns2 = %s\n”, s1, s2); printf(“strcat(s1, s2) = %s\n”, strcat(s1, s2)); printf(“strncat(s3, s1, 6) = %s\n”, strncat(s3, s1, 6)); printf(“strcat(s3, s1) = %s\n”, strcat(s3, s1)); return 0; } |
Задание № 9 (СРСП)
срок сдачи: 11 неделя, 5 баллов
(согласно Графику выполнения и сдачи СРС и Графику проведения и содержания СРСП )
Тема: Методы сортировки.
Дата добавления: 2018-06-01; просмотров: 315; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!