Напечатать все элементы массива, кроме первого нулевого, составить блок-схему - C (СИ)
Формулировка задачи:
Cоставить блок-схему по данной программе.
Напечатать все элементы массива, кроме первого нулевого / C для начинающих Известно, что в массиве имеются нулевые элементы. Напечатать: а) все элементы, кроме первого из них; б) все элементы, кроме последнего из них.Решение задачи: «Напечатать все элементы массива, кроме первого нулевого, составить блок-схему»
textual
Листинг программы
//--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> //подключаем библиотеку для printf #include <stdlib.h> //подключаем библиотеку для srand #define n 10 //все n будут заменены на 10 #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(){ srand(time(NULL)); //если не использовать функцию srand, //с каждым запуском программы будет генерироваться одна и та же последовательность чисел int a[n]; //выделяем память для массива целых чисел состоящего из 10 элементов int i; //объявляем переменную i printf("In:\n"); //печатаем на экране In: //(\n)-с помощью этого переходим на следующую строку for(i = 0; i < n; i++) //повторяем то, что в скобках. 10 раз. от 0 до 9 с шагом 1 {a[i] = rand()% 5 - 3; //заполняем i-тый элемент массива случайным числом от -3 до 1. //rand()% 5 - случайное число от 0 до 4, если вычесть 3 получаем от -3 до 1 printf("%d ", a[i]); // выводим на экран, этот элемент } //так работает цикл выше // i=0 //a[0]=какое-то число (в с++ массивы начинаются не с 1, а с 0) //второй проход цикла //i=1 //a[1]=какое-то рандомное число ... //i=9 //a[9]=какое-то рандомное число int tmp = -1; //объявляем целочисленную переменную и приравниваем -1 //в первом случае, она будет индикатором, что мы встретили нулевой элемент //во втором хранить индекс последнего нулевого элемента printf("\nвсе элементы, кроме первого 0:"); //на следующей строке печатаем все элементы, кроме первого 0: for(i = 0; i < n; i++) //повторяем то, что в скобках. 10 раз. от 0 до 9 с шагом 1 {if( tmp == -1 && a[i] == 0)//условие, если tmp равен -2 и элемент массива равен 0(одновременно), // то выполняем то, что ниже в скобках {tmp ++;} //прибавляем к tmp 1, т.е. tmp станет равен 0 else printf("%d ", a[i]); //если условие не выполняется, то выводим на экран этот элемент массива } //в предыдущем цикле проходим по массиву и если элемент равен нулю, //то не выводим его. Но только первый, для этого нам tmp //если таких элементов нет, то выведется весь массив printf("\nвсе элементы, кроме последнего 0:"); //тут вы уже сами знаете for(i = 0; i < n; i++){ //снова цикл if(a[i] == 0) //если i-тый элемент равен нулю, tmp = i; // то в tmp записываем его индекс } //в предыдущем цикле мы узнаем индекс последнего элемента равного 0 for(i = 0; i < n; i++) //снова цикл, что бы вывести ваш массив {if( i != tmp) //если i не равен номеру последнего нулевого элемента printf("%d ", a[i]);} //выводим на экран system("PAUSE"); // тормозим программу, что бы увидеть результат return 0; }
Объяснение кода листинга программы
Код решает задачу печати всех элементов массива, кроме первого нулевого. Список действий:
- Массив целых чисел
a
заполняется случайными числами от -3 до 1 с помощью функцииrand()
. - Переменная
tmp
инициализируется значением -1. Она будет использоваться как флаг: еслиtmp
равно -1, значит, еще не было встречено ни одного нулевого элемента. - С помощью цикла
for
происходит перебор всех элементов массива. Если элемент равен нулю иtmp
равно -1, тоtmp
присваивается значениеi
, гдеi
- это номер текущего элемента. - С помощью еще одного цикла
for
происходит перебор всех элементов массива. Если элемент не равен нулю и его номер не равенtmp
, то он выводится на экран. - Программа останавливается с помощью функции
PAUSE()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д