Сожмите массив, «выбросив» каждый второй его элемент - C (СИ)
Формулировка задачи:
короче есть написанная программа, но она не работает,
«Сожмите» массив, «выбросив» каждый второй его элемент (до*
полнительные массивы использовать не разрешается).
#include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { char str[100],str1[100]="",str2[20];int o,n; gets(str); char *ptr = strtok(str," \t"); while(ptr != NULL){//пока не конец строки strcpy(str2,ptr);//копируем слово в новую переменную n=strlen(str2); for (int i=0;i<n;i++){ o=str2[i];//берем i-ый символ и сравниваем с буквами if (o==90){o=65;//если i-ая буква = Z , то меням ее на А str2[i]=o;} if (o==87){o=66;//W ==> B str2[i]=o;} if(o==88){o=67;//X==>C str2[i]=o;} } strcat(str1,str2);//копируем слово в строку для вывода strcat(str1," ");//вставляем пробел ptr = strtok(NULL," \t");//переход на новое слово } puts (str1); return 0; }
а, не тот текст скопировал
вот это не работает
#include <stdio.h> int main(int argc, char *argv[]) { int n,j=0,m=0; scanf ("%d",&n); int a[n]; for (int i=0;i<n;i++)scanf ("%d",&a[i]); for (int i=0;i<n;i++)if(i%2==0){ a[j]=a[i]; m++; j++;} for(int j=0;j<m;j++)printf("%d ",a[j]); printf("\n"); return 0; }
Решение задачи: «Сожмите массив, «выбросив» каждый второй его элемент»
textual
Листинг программы
#include <stdio.h> #define size 100 int main(){ int n,a[size],i=0; scanf("%d",&n); while (i < n) scanf("%d",&a[i++]); for (i=1; i < n; i++) for (int j=i; j <n; j++) a[j]=a[j+1]; if (n%2) n++; for (i=0; i < n/2; i++) printf("%d ",a[i]); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные:
n
- для хранения количества элементов массиваa
- для хранения массиваi
- для контроля количества считываемых элементов
- Считывается количество элементов массива с помощью функции
scanf()
. - В цикле считываются элементы массива с помощью функции
scanf()
. - В двух вложенных циклах элементы массива
выбрасываются
каждый второй. - Если количество элементов массива нечетное, то к нему добавляется единица, чтобы выйти из цикла с четным количеством элементов.
- В цикле выводятся элементы массива через пробел.
- Возвращается 0, чтобы указать, что программа успешно завершилась.