Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Заполнение случайными числами





Пусть требуется заполнить массив равномерно распределенными случайными числами в интервале [a,b]. Поскольку для целых и вещественных чисел способы вычисления случайного числа в заданном интервале отличаются, рассмотрим оба варианта.

Описание функции-датчика случайных чисел находится в заголовочном файле stdlib.h. Удобно также добавить в свою программу функцию random:

int random (int N) { return rand() % N; }

которая выдает случайные числа с равномерным распределением в интервале [0,N-1].

Для получения случайных чисел с равномерным распределением в интервале [a,b] надо использовать формулу

k = random (b – a + 1) + a;

Для вещественных чисел формула несколько другая:

x = rand()*(b - a)/RAND_MAX + a;

Здесь константа RAND_MAX – это максимальное случайное число, которое выдает стандартная функция rand.

//В приведенном ниже примере массив A заполняется случайными целыми числами в интервале [-5,10], а массив X - случайными вещественными числами в том же интервале.

 

#include <stdlib.h>

#include <stdio.h>

const int N = 10;

int random (int N) { return rand()%N; }

main()

{ system("CLS");

int i, A[N], a = -5, b = 10;

float X[N];

for (i = 0; i < N; i ++)

A[i] = random(b-a+1) + a;

for (i = 0; i < N; i ++)

X[i] = (float)rand()*(b-a)/RAND_MAX + a;

printf("\nЦелые\n");

for (i = 0; i < N; i ++)

printf("%4d",A[i]);

printf("\nВещественные\n");

for (i = 0; i < N; i ++)

printf("%6.2f",X[i]);

system("PAUSE");

return 0;

}

 

 

Многомерные массивы задаются указанием каждого измерения в квадратных скобках. Например, оператор int matr [6] [8]; задает описание матрицы из 6 строк и 8 столбцов. Нумерация строк и столбцов начинается с 0. При инициализации двумерного массива он представляется как массив из массивов, при этом каждый массив заключается в свои фигурные скобки, либо задается общий список в том порядке, в котором элементы располагаются в памяти:

int mas [] [2]= { {1,2}, {0,2}, {1,0}};

int mas [3][2]={1,2,0,2,1,0};

 

СПИСОК ЗАДАЧ

1. Даны натуральные числа n, A1,..., An. Определить количество членов Ak последовательности A1,..., An:

а) являющихся нечётными числами;

б) кратных 3 и некратных 5;

в) являющихся квадратами чётных чисел;

2. Даны натуральные числа n, A1,..., An. Найти те элементы Ak последовательности n, A1,..., An, которые:

а) являются удвоенными нечётными числами;

б) при делении на 7 дают остаток 1,2 или 5;

3. Даны целые числа А1,..., А20. Получить сумму членов данной последовательности, которые:

а) кратны 5;

б) нечётны и отрицательны.

 

4. Даны натуральное число n, целые числа A1,..., An. Найти количество и сумму тех членов последовательности, которые делятся на 5 и не делятся на 7.

5. Даны целые числа p, q, A1,...,A17 (p>q>0). В последовательности заменить нулями элементы, модуль которых при делении на p даёт в остатке q.

6. Даны натуральные числа n, p, целые числа A1,..., An. Получить произведение элементов последовательности, кратных p.

7. Даны натуральное число n, действительные числа A1,..., An. В последовательности получить удвоенную сумму всех положительных элементов.

8. Даны натуральное число n, действительные числа A1,..., An. В последовательности все отрицательные числа увеличить на 0.5, а все неотрицательные на 0.1.

9. Даны натуральное число n, действительные числа A1,..., An. В последовательности все элементы, меньше 2, заменить нулями. Кроме того, получить сумму элементов, принадлежащих отрезку [3,7], а также число таких элементов.

10. Даны натуральное число n, действительные числа A1,..., An. В последовательности все неотрицательные элементы, не принадлежащие отрезку [1,2], заменить на 1. Кроме того, получить число отрицательных элементов и число элементов, принадлежащих отрезку [1,2].

11. Даны натуральное число n, целые числа A1,..., An. Получить сумму положительных и число отрицательных элементов последовательности.

12. Даны натуральное число n, целые числа A1,..., An. Заменить все, большие 7, элементы последовательности числом 7. Вычислить количество таких элементов.

13. Даны целые числа A1,..., A15. Получить число отрицательных элементов последовательности A1,..., A10 и число нулевых элементов всей последовательности A1,..., A15.

14. Даны натуральное число n, целые числа А, Х1,..., Хn. Если в последова­тельности есть хотя бы один элемент, равный А, то получить сумму всех элементов, следующих за первым таким элементом; в противном случае ответом должно быть число 10.

15. Даны целые числа A1,..., A20. Получить последовательность В1,..., В20, которая отличается от исходной тем, что все нечётные элементы удвоены.

16. Даны натуральное число n, целые числа А, Х1,..., Хn. Определить, каким по счёту идёт в последовательности элемент, равный А. Если такого элемента нет, то ответом должно быть число 0.

17. Даны натуральное число n, действительные числа А1,..., Аn. Получить:

а) max (A1,...,An);

б) min (A1,...,An);

в) min (A2, A4,...) + max (A1, A3,...);

 

18. Даны натуральное число n, действительные числа А1,..., Аn. Получить:

а) max (A2, A4,...);

б) min (A1, A3,...);

в) min (A2, A4,...) + max (A1, A3,...);

19. Даны натуральное число n, целые числа А1,..., Аn. Найти:

а) наименьшее из чётных чисел, входящих в последовательность
А1,..., An.

20. Даны натуральное число n, действительные числа А1,..., Аn. В последовательности определить число соседств:

а) двух положительных чисел;

б) двух чисел разного знака;

21. Даны целые числа С1,..., С15. Имеются ли в последовательности:

а) два идущих подряд нулевых элемента;

б) три идущих подряд нулевых элемента.

22. Даны натуральное число n, действительные числа А1,..., Аn. Выяснить, является ли последовательность упорядоченной по убыванию.

23. Даны натуральное число n, целые числа А1,..., Аn.

а) Выяснить, какое число встречается в последовательности раньше - положительное или отрицательное. Если все элементы последовательности равны нулю, то сообщить об этом.

24. Даны натуральное число n, целые числа А1,..., Аn.

а) Найти номер первого чётного элемента последовательности; если чётных элементов нет, то ответом должно быть число 0.

25. В массиве существуют отрицательный и положительный элементы. Вычислить:

а) количество отрицательных элементов;

д) произведение отрицательных элементов.

 

 

Тема №6

Работа с символьными данными

ОСНОВНЫЕ СВЕДЕНИЯ

Символьная константа - это символ (единственный), заключенный в одиночные кавычки, как, например, 'Х'. Значением символьной константы является численное значение этого символа в машинном представлении набора символов. Все символы упорядочены в соответствии с принятым в ПК коде (например ASCII). При этом порядковый но­мер символов называется кодом (например, код латинского символа 'А ' равен 65; символа '3' равен 51). Для символьных данных не определены никакие арифметические операции, но они могут сравниваться по своим кодам, участвовать в чтении, печати, операторах присваивания.

Строка - это последовательность (массив) символов, заключенная в двойные кавычки, заканчивающаяся нуль-символом (\0 – символ с кодом равным нолю). По положению нуль-символа определяется фактическая длина строки. Например, длина строки char text[ ] = "Моя программа!" равна 14 байт (включая пробел).

Для форматного ввода и вывода символьных констант используется спецификатор %с, строк - %s и специальные функции: getchar(),gets()- ввод и putchar(), puts()-вывод. Библиотека Си содержит функции обработки строк, прототипы которых определяются в заголовочном файле string.h. Например:

strlen(str) – определяет длину строки str;

strcat(str1,str2) - сцепление строк в порядке их перечисления;

strncat(str1,str2,kol) – приписывает kol символов строки str2 к строке str1;

strcmp(str1,str2) – сравнивает две строки str1 и str2 и возвращает 0, если они одинаковы; результат отрицателен, если str1<str2 и положителен, если str1>str2;

strncmp(str1, str2, kol) – сравниваются части строк str1 и str2 из kol символов. Результат равен 0, если они одинаковы.

strcpy(str1,str2) – копирует строку str2 в строку str1.

 

Рассмотрим пример:

 

#include <stdio.h>

#include <conio.h>

#include <string.h>

main ()

{ char gwords [10] [40], temp [40];

int i=0;

printf (“Введите 10 слов, начинающихся с д: \n”);

while (i < 10)

{ gets (temp);

if (temp [0]!= ‘д’) // проверка первого символа

printf (“ %s не начинается с д! \n”, temp);

else { strcpy (gwords [i], temp); i++;}

}

puts (“Следующие слова соответствуют условию:”);

for (i=0; i< 10; i++) puts (gwords [i]);

getch();

return 0;

}

Вводятся слова, сравнивается первый символ, если это не 'д', то вводится следующее слово, иначе слово копируется в новый массив слов gwords.

 

СПИСОК ЗАДАЧ

1. Дана строка, подсчитать сколько раз встречается буква a.

2. Даны натуральное число n, символы S1, S2,..., Sn. Подсчитать, сколько раз среди данных символов встречается буква b.

3. Даны натуральное число n, символы S1, S2,..., Sn. Подсчитать:

а) сколько раз среди данных символов встречается символ "+" и сколько раз символ "*";

б) общее число вхождений символов "+", "-" и "*" в последовательность S1, S2,..., Sn.

4. Дана последовательность S1, S2,..., Sn, заменить в ней:

а) все восклицательные знаки точками;

б) каждую точку многоточием;

5. Даны натуральное число n, символы S1, S2,..., Sn. Выяснить, имеются ли в последовательности S1, S2,..., Sn такие члены последовательности Si и Si+1, что Si - это запятая, Si+1 - это тире.

6. Даны натуральное число n, символы S1, S2,..., Sn. Получить первое натуральное i, для которого каждый из символов Si и Si+1, совпадают с буквой А. Если такой пары в последовательности S1, S2,..., Sn нет, то ответом должно быть число 0.

7. Даны натуральное число n, символы S1, S2,..., Sn. Известно что среди S1, S2,..., Sn есть по крайней мере одна запятая. Найти такое натуральное i, что:

а) Si - первая по порядку запятая;

б) Si - последняя по порядку запятая.

8. Даны натуральное число n, символы S1, S2,..., Sn. Преобразовать удалив каждый символ "*" и повторив каждый символ отличный от "*".

9. Даны натуральное число n, символы S1, S2,..., Sn, среди которых есть двоеточие.

а) получить все символы, расположенные до первого двоеточия включительно.

б) получить все символы, расположенные после первого двоеточия включительно.

10. Даны натуральное число n, символы S1, S2,..., Sn.

а) подсчитать наибольшее количество идущих подряд пробелов;

б) выяснить, верно ли, что в последовательности S1, S2,..., Sn имеются пять идущих подряд букв С.

11. Даны натуральное число n, символы S1, S2,..., Sn. Группы символов, разделённых пробелами (одним или несколькими) и не содержащим пробелов внутри себя будем называть словами.

а) подсчитать количество букв "а" в последнем слове данной последовательности.

б) найти количество слов, начинающихся с буквы "с".

12. Даны натуральное число n, символы S1, S2,..., Sn. Группы символов, разделённых пробелами (одним или несколькими) и не содержащим пробелов внутри себя будем называть словами.

а) найти количество слов, у которых первый и последний символы совпадают.

б) подсчитать количество слов в данной последовательности.

13. Даны натуральное число n, символы S1, S2,..., Sn. Группы символов, разделённых пробелами (одним или несколькими) и не содержащим пробелов внутри себя будем называть словами.

а) найти какое-нибудь слово, начинающиеся с буквы "а".

б) преобразовать данную последовательность, заменяя всякое вхождение слова "это" на слово "то".

14. Даны натуральное число n, символы S1, S2,..., Sn. Группы символов, разделённых пробелами (одним или несколькими) и не содержащим пробелов внутри себя будем называть словами.

а) удалить все символы, не являющиеся буквами.

б) заменить все малые буквы одноимёнными большими.

15. Дана строка S и символ C. Удвоить каждое вхождение символа C в строку S.

16. Дана строка. Подсчитать количество содержащихся в ней цифр.

17. Даны натуральное число n, символы S1, S2,..., Sn. Найти самое длинное слово в предложении.

18. Даны две строки: S1 и S2. Определить количество вхождений строки S2 в строку S1.

19. Даны натуральное число n, символы S1, S2,..., Sn. Заменить заданное слово предложения на другое слово.

20. Даны натуральное число n, символы S1, S2,..., Sn. Найти в предложении слова, которые начинаются на одну и ту же букву.

21. Даны натуральное число n, символы S1, S2,..., Sn. Напечатать предложение, удалив из него повторное вхождение слов.

22. Даны натуральное число n, символы S1, S2,..., Sn. Напечатать различные слова предложения, указав для каждого из них число его вхождений.

23. Даны натуральное число n, символы S1, S2,..., Sn. Преобразуйте строку, заменив в ней каждую точку многоточием.

24. Дана строка. Преобразовать все строчные русские буквы в прописные.

25. Дана последовательность S1, S2,..., Sn, заменить в ней каждую из групп стоящих рядом точек одной точкой;

 

 

Тема № 7

Функции

 

ОСНОВНЫЕ СВЕДЕНИЯ

Часто в программе требуется повторить определенную последовательность операторов в разных частях программы. Для того, чтобы описывать эту последовательность один раз, а применять многократно, в языках программирования применяются подпрограммы. Подпрограмма - автономная часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы.

В языке Си существует один вид подпрограмм - функции. Каждая программа в своем составе должна иметьглавную функцию main(), служащую точкой входа в программу. Кроме функции main(), в программу может входить произвольное число функций, выполнение которых инициализируется либо прямо, либо вызовами из функции main(). Каждая функция по отношению к другой является внешней. Для того, чтобы функция была доступной, необходимо, чтобы до ее вызова о ней было известно компилятору. Форма записи функции:

<тип > <имя функции>(<формальные параметры>){<тело функции >}

Если тип возвращаемого функцией значения не указан, то подразумевается int. Если с именем функции не связан результат, то нужно указать тип функции void. Параметры, записываемые в обращении к функции, называются фактическими; параметры, указанные в описании функции - формальными. Фактические пара­метры должны соответствовать формальным по количеству, порядку следования и типу. Объекты, объявленные вне функции, действуют в любой функции и называются глобальны­ми. Объекты, объявленные в функции, действуют только в ней и называются локальными. В теле функции обычно присутствует оператор return <выражение>, определяющий возвращаемое функцией значение.

Все параметры функции, кроме массивов, передаются по значению, т.е. внутри функции создаются локальные копии параметров. Если необходимо передать саму переменную, а не её копию, то в функцию передаётся адрес этой переменной. Таким образом, через параметры можно передавать результат выполнения функции. То есть, параметры, с помощью которых результаты должны передаваться из функции в точку вызова, описываются как указатели. Вызов функции может быть оформлен в виде оператора, если с именем функции не связано возвращаемое значение, или в виде выражения, если возвращаемое значение связано с именем функции.

Прототип функции может указываться до вызова функции вместо описания функции для того, чтобы компилятор мог выполнить проверку соответствия типов аргументов и параметров. Прототип функции по форме такой же, как и заголовок функции. В конце него ставится «;».

Функции можно подключать с помощью директивы #include <имя файла>. Такие файлы с функциями удобно использовать в диалоговых программах с пользовательским меню, позволяющих выбрать один из режимов.

 

Пример 1: Функция с параметрами-значениями. Результат связан с именем функции. В программе объявляется прототип функции, а сама функция описывается ниже.

 

#include <stdio.h>

#include <conio.h>

int max(int,int); //Прототип функции

void main()

{ int x,y,z;

printf(" input x,y ");

scanf("%d%d",&x,&y);

z=max(x,y); //Вызов функции с фактическими параметрами

printf("x=%d y=%d max=%d",x,y,z);

getch();

}

int max(int a,int b) //Заголовок функции с формальными параметрами

{ int c;

if (a>b) c=a;

else c=b;

return c;

}

 

Пример 2: Функция с параметрами-указателями. Здесь передаются адреса фактических параметров, по которым и получаем результат. Функция меняет местами переменные x,y.

 

//lab8_2

#include <stdio.h>

#include <conio.h>

main()

{ float x,y;

void swap(float *, float *); // Прототип функции с параметрами - указателями

printf("\n введите x,y ");

scanf("%f%f",&x,&y);

swap(&x,&y); // Передаём адреса переменных

printf("\n x=%4.2f y=%4.2f ",x,y);

getch();

}

void swap(float * a, float * b)

{float c;

c=*a; // *a - содержимое по адресу a

*a=*b;

*b=c;

}

 

Пример 3: Подключение файлов с функциями и создание меню.

! Внимание! Следите за тем, чтобы константы, объявленные директивой #define, не переобъявлялись в функциях.

 

#include <stdio.h>

#include <conio.h>

#include "lab3.c"

#include "lab5.c"

#include "lab6.c"

main()

{ int nom;

while(1)

{ clrscr();

printf("\n 1. Сумма ряда \n");

printf(" 2. Матрица \n");

printf(" 3. Строки \n");

printf(" 4. Выход \n");

scanf("%d",&nom);

switch(nom)

{

case 1:lab3();break;

case 2:lab5();break;

case 3:lab6();break;

case 4:return 0;

default:printf("Неверный режим");

}

}

getch();

}

 

Пример 4: Передача в функцию массива с использованием указателя. Результат – элементы массива возводятся в квадрат. Функция описывается до вызова, поэтому прототип не объявляется.

 

#include <stdio.h>

#include <conio.h>

void quart(int n, float * x) // Можно void quart(int n, float x[])

{ int i;

for (i=0;i<n;i++)

x[i]=x[i]*x[i];

}

main()

{ float z[]={1,2,3,4};int j;

clrscr();

for (j=0;j<4;j++)

printf(" %6.2f",z[j]);

quart(4,z);

for (j=0;j<4;j++)

printf("\n %6.2f",z[j]);

getch();

}

 

 

СПИСОК ЗАДАЧ

1. Написать функцию, выводящую в порядке возрастания элементы одномерного массива. В главной программе вызвать функцию для двух разных массивов.

2. Написать функцию вычисления произведения прямоугольной матрицы A размера k x m на прямоугольную матрицу B размера m x n. В главной программе обратиться к этой функции.

3. 3. Написать функцию вычисления суммы ряда s=s(1)+…+s(n),

где s(n)=(-1)n x(2n-1)/(2n+1) с точностью до eps=0.001. В качестве параметров выбрать x и eps.

4. Написать функцию, которая вычисляет для заданной квадратной матрицы A её симметричную часть S(ij)=(A(ij)+A(ji))/2 и кососимметричную часть K(ij)=(A(ij)-A(ji))/2.

5. Написать функцию “шапочка” f(x), зависящую от параметров a и b: если |x| >a то f(x)=0 иначе f(x)=b*exp(-a2/(a2-|x|2)). В качестве параметров передать a,b,x.

6. Написать функцию поиска максимального и минимального элементов одномерного массива. В основной программе вызвать эту функцию для двух разных массивов.

7. Написать функцию, которая сортирует одномерный массив в порядке убывания методом пузырька. В основной программе вызвать эту функцию для двух разных массивов.

8. Написать функцию, которая по двум заданным одномерным массивам (A размера m и B размера n) вычисляет максимальное значение двумерного массива c(ij)=a(i)*b(j).

9. Написать функцию определителя квадратной матрицы A размера 3x3:

A=a(1,1)a(2,2)a(3,3)+a(3,1)a(1,2)a(2,3)+a(2,1)a(3,2)a(1,3)-a(3,1)a(2,2)a(1,3)-a(1,1)a(3,2)a(2,3)-a(2,1)a(1,2)a(3,3).

10. Написать функцию вычисления суммы ряда y=sinx-(sin2x)/2+…

+(-1)n+1sin(nx)/n с точностью до eps=0.001. В качестве параметров передать x (в радианах) и eps.

11. Написать функцию вычисления ряда y=x+x3/3!+…+x2n+1/(2n+1)! с точностью до eps=0.0001. В качестве параметров передать x и eps.

12. Написать функцию обработки матриц A и B одинакового размера m x n. Получить матрицу C =max(a(i,j),b(i,j)), и матрицу D=min(a(i,j),b(i,j)). Матрицы C и D вывести в главной программе.

  1. Даны действительные числа s, t. Получить:

  1. Даны действительные числа s, t. Получить:

  1. Даны действительные числа a, b, c. Получить:
  2. Даны действительные числа a, b. Получить:

u=min (ab), v=min (ab, a+b), f= min (u+v2,3.14)

  1. Даны натуральные числа n, m, целые числа a1, a2,..., an, b1,..., bm, c1,..., с10. Получить: L = min (b1, …, bm) + min (a1, …, am) + min (c1, …, c10).
  2. Даны натуральные числа k, l, m, действительные числа x1,..., xk, y1,..., yl, z1,..., zm. Получить L = max(y1,…, yl) + max(z1,…, zm), если max(x1,…, xk) > 30.
  3. Дано натуральное число n. Среди чисел 1, 2, 3,..., n найти все те, которые можно представить в виде сумм квадратов двух натуральных чисел. Определить процедуру, позволяющую распознавать полные квадраты.
  4. Даны действительные числа x1, y1, x2, y2,..., x10, y10. Найти периметр десятиугольника, вершины которого имеют соответственно координаты (x1, y1), (x2, y2),..., (x10, y10). Определить процедуру вычисления расстояния между двумя точками, заданными своими координатами.
  5. Даны действительные числа a, b, c, d, е. Найти площадь пятиугольника. Определить процедуру вычисления площади треугольника по трём сторонам.
  6. Даны натуральное число n, действительные числа x1, y1, x2, y2,..., xn, yn. Найти площадь n -угольника, вершины которого при некотором последовательном обходе имеют координаты (x1, y1), (x2, y2),..., (xn, yn). Определить процедуру вычисления площади n-угольника по координатам его вершин.
  7. Дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1,..., 2n близнецы, т.е. простые числа, разность между которыми равна. Определить процедуру, позволяющую распознать простые числа.
  8. Составить процедуру, результатом работы которой является истинное значение, если символ, заданный при обращении к процедуре, буква, и ложное значение в противном случае.
  9. Составить процедуру, результатом работы которой является символ, заданный при обращении к процедуре, если этот символ не является буквой, и соответствующая строчная (малая) буква в противном случае.
  10. Составить процедуру, заменяющую в исходной строке символов все единицы нулями и все нули единицами. Замена должна выполняться, начиная с заданной позиции строки.
  11. Описать функцию Min(A,N) вещественного типа, находящую минимальный элемент массива A, состоящего из N вещественных чисел. С помощью этой функции найти минимальные элементы массивов A, B, C размера NA, NB, NC соответственно.
  12. Описать функцию Max(A,N) вещественного типа, находящую максимальный элемент массива A, состоящего из N вещественных чисел. С помощью этой функции найти максимальные элементы массивов A, B, C размера NA, NB, NC соответственно.
  13. Описать процедуру NMinmax(A,N,NMin,NMax), находящую номера минимального и максимального элемента массива A из N вещественных чисел. Выходные параметры: NMin (номер минимального элемента) и NMax (номер максимального элемента). С помощью этой процедуры найти номера минимальных и максимальных элементов массивов A, B, C размера NA, NB, NC соответственно.

 

Тема № 8

Структуры

ОСНОВНЫЕ СВЕДЕНИЯ

 

Структура – это фиксированное число элементов одного или нескольких типов. Т.е. в отличие от массивов, в которых содержатся элементы одного типа, в структурах могут содержаться элементы как одного, так и разных типов. Элементами структуры могут быть базовые типы, массивы, указатели, структуры и т.д. Элементы структуры вместе с их описанием называются полями. Над полями можно выполнять действия, допустимые для данных этого типа.

Все структуры должны быть описаны до использования. Все идентификаторы полей в структуре должны быть различными.

Например, структуру Воок можно описать следующим образом:

struct card {char аuthor [15]; char title[20]; int year; float cena;} Book;

или struct card { char аuthor [15]; char title[20]; int year; float cena;};

stuct card Book;

Тип структуры (например, card) вводит только шаблон и с его именем не связан никакой конкретный объект. Объект (например, структура Book) должен быть также объявлен. Обращение к полю структуры выполняется с помощью составного имени, которое состоит из имени_структуры. имени_поля. Например, присвоить значения элементам записи Author и Title можно так: Book.author= “Довгаль С.И.”; Book.title=”Турбо Паскаль V 7.0”;

Ввод цены книги с клавиатуры: scanf (“%f”, &Book.cena);

Можно создавать массив структур: Struct card bibl[100];

Обращение к полю элемента массива: bibl[i].title;

 

Пример: Дана информация о 10 товарах: название, цена, количество. Вычислить общую стоимость товара, название которого вводится с клавиатуры.

 

#include <stdio.h>

#include <conio.h>

#include <string.h>

#define n 10

main()

{

int i,k; float sum; //k-количество искомых товаров, sum- их общая стоимость.

struct tov {char name[10]; float c; int kol;} t; //Объявление структуры t

struct tov mag[n]; //объявление массива структур mag[n]

char nazv[10]; //Наименование искомого товара

clrscr();

printf(“\n Введите информацию о товарах \n“);

for (i=0;i<n;i++)

{ printf("\n наименование, цена, количество: ");

scanf("%s%f%d",&t.name,&t.c,&t.kol);//Заполнение информацией структуры t

mag[i]=t; //Присвоение i-му элементу массива структуры t целиком

}

printf("\n введите искомый товар: ");

scanf("%s",&nazv);

for (i=0,sum=0,k=0;i<n;i++)

if (strcmp(mag[i].name,nazv)==0)

{ sum+=mag[i].c*mag[i].kol;

k++;

}

printf("Товаров %s %d, их стоимость %5.2f ",nazv,k,sum);

getch();

}

 

 

СПИСОК ЗАДАЧ

1. Сформировать переменную типа запись, в которой расположены данные о каждом отдельном ученике в следующем порядке: имя (15 символов), фамилия (15 символов), год обучения (целое число), буква (символ). Требуется перенести эти данные в другую переменную выводя первую букву имени и фамилию ученика:

И. Петров

П. Иванов

и т. д.

2. Сформировать переменную типа запись, в которой расположены данные о каждом отдельном ученике в следующем порядке: имя (15 символов), фамилия (15 символов), год обучения (целое число), буква (символ).

а) Собрать в сведения об учениках девятых классов школы,

б) Выяснить, на сколько человек в восьмых классах больше, чем в девятых.

3. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сформировать переменную Bagaj, содержащую сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно -действительное (вес в килограммах). Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0,3 кг от общего среднего веса одной вещи.

4. Упорядочить сведения о багаже, записанные в переменной bagaje(см. предыдущую задачу) по невозрастанию веса багажа. Предполагается, что число пассажиров, зарегистрировавших багаж, известно заранее и равно п (некоторая константа), при этом п – не слишком велико. Указание. Перенести сведения о багаже из переменной багаж в массив B1,...Bn, затем упорядочить этот массив, используя то, что для переменных х, у одного и того же комбинированного типа можно использовать оператор присваивания х:=у После этого переписать элементы массива BI,..., Bn в переменную Bagaje.

5. Требуется удалить из данной переменной Bagaje сведения о багаже, общий вес вещей в котором меньше, чем 10 кг. Использовать вспомогательную переменную F.

6. Переписать сведения о багаже из переменной Bagaj в переменную Bag. В переменной Bag сведения о багаже каждого пассажира представляются массивом из двух целых чисел - числа вещей и общего веса вещей, выраженного в граммах. Составить также программу обратного преобразования: переписи сведений о багаже из переменной Bag в переменную Bagaj.

7. Сформирована переменная bibl, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. Найти названия книг данного автора, изданных с 1960 года

8. Дана переменная Т, которая содержит номера телефонов сотрудников учреждения: Указывается фамилия сотрудника, его инициалы и номер телефона. Найти номер телефона сотрудника по его фамилии и инициалам.

9. Сформирована переменная типа запись, содержащая различные даты. Каждая дата - это число, месяц и год. Найти:

а) год с наименьшим номером.

б) все весенние даты.

в) самую позднюю дату.

10. Сформировать переменную Tovar, содержащую сведения об экспор­тируемых товарах: Указывается наименование товара, страна импортирующая товар, и объем поставляемой партии в штуках. Составить список стран, в которые экспортируется данный товар, и общий объем его экспорта.

11. Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить сведения о названии игрушек цена которых не превышает 4 руб., и которые подходят детям 5 лет.

12. Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить следующие сведения о цене самого дорогого конструктора.

13. Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить название наиболее дорогих игрушек. (цена которых отличается не более чем на 1 руб. от самой дорогой.)

14. Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Получить название игрушек которые подходят как детям 4 лет так и детям 10 лет.

15. Сформирована переменная Assortim, содержащая сведения об игрушках: указано название игрушки, ее стоимость в рублях, и возрастные границы. Подобрать игрушку, любую кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч, так, чтобы суммарная стоимость игрушек не превосходила 5 руб.?

16. Сформирована переменная bibl, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название и год издания. Определить имеется ли книга с названием "Информатика". Если да, то сообщить фамилию автора и год издания. Если таких книг несколько, то сообщить сведения обо всех этих книгах.

17. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сформировать переменную Bagaj, содержащую сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно -действительное (вес в килограммах). Выяснить, имеется ли пассажир, багаж которого состоит из одной вещи весом менее 30 кг.

18. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сформировать переменную Bagaj, содержащую сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно -действительное (вес в килограммах). Найти число пассажиров, имеющих более двух вещей и число пассажиров, количество вещей которых превосходит среднее число вещей.

19. Составить список учебной группы, включающей N человек. Для каждого учащегося указать дату рождения, год поступления в техникум, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив. Составить программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать анкетные данные студентов отличников.

20. Составить список учебной группы, включающей N человек. Для каждого учащегося указать дату рождения, год поступления в техникум, курс, группу, оценки каждого года обучения. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив. Составить программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы, а также распечатать анкетные данные студентов, получивших одну оценку 3 за все время обучения.

21. Составьте прайс-лист аптеки "Эксон", включающий в себя наименования товара, страну-производитель, его цену, его состав, рекомендации врача. Информацию о каждом виде товара оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию о товаре в зависимости от запроса покупателя.

22. Составьте прайс-лист магазина "Обувь", включающий в себя наименования товара, страну-производитель, его цену, материал изготовления, размер, рекомендации для использования. Информацию о каждом виде товара оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию о товаре в зависимости от запроса покупателя.

23. Составьте банк данных кинологов, включающий в себя фамилию и имя владельца собаки, кличку собаки, породу собаки, день и год рождения собаки, наличие родословной, наличие медалей (и другое). Информацию о каждом владельце оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию в зависимости от Вашего запроса.

24. Составьте банк данных районного отдела милиции, включающий в себя фамилию, имя и отчество нарушителя, дату рождения, наличие клички, мера наказания, срок заключения (и другое). Информацию о каждом нарушителе оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию в зависимости от Вашего запроса.

25. Составьте прайс-лист кондитерского отдела магазина "Молодежный", включающий в себя наименования товара, марку предприятия-производителя, страну-производитель, его цену, количество единиц товара на складе. Информацию о каждом виде товара оформите в программе в виде записи. Совокупность записей объедините в массив. Составьте программу, которая обеспечивает ввод полученной информации, распечатку ее в виде таблицы. Выведите на экран информацию о товаре в зависимости от запроса покупателя.

 

Тема № 9







ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.