Програмирање 2/Блок 1

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Статистика појављивања

Саставити програм на програмском језику C за одређивање и испис броја великих слова, малих слова и цифара у тексту који се из произвољног броја редова учитава преко главне улазне јединице. Испис података се врши у засебним редовима. Текст се завршава знаком за крај датотеке.

#include <stdio.h>
#include <ctype.h>
#define MAX 1000
int main() {
	int dig = 0, upp = 0, low = 0;
	char s[MAX];
	
	fgets(s, MAX , stdin);
	//scanf("%s", s);
	
	for(int i=0; s[i]!='\0'; i++) {
		dig += isdigit(s[i]) != 0; //dig += (c>='0' && c<='9');
		upp += isupper(s[i]) != 0;
		low += islower(s[i]) != 0;
	}
	printf("%d\n%d\n%d", upp, low, dig);
}

Минимум и максимум, уметање и избацивање

Саставити програм на програмском језику C који треба да изврши следећу обраду над низом:


1) Прочита димензију и елементе низа, а затим их испише у новом реду одвојене знаком ,

2) Одреди и испише вредност минималног елемента у новом реду

3) Одреди и испише вредност максималног елемента у новом реду

4) Избаци све елементе низа који су једнаки минималном и максималном елементу, а затим испише преостале елементе низа у новом реду одвојене знаком ,

5) Прочита са стандардног улаза позицију у низу и вредност елемента који се убацује у низ на ту позицију и испише елементе измењеног низа у новом реду одвојене знаком ,. Уколико је позиција невалидна, операција је без ефекта.

#include <stdio.h>
#define MAX 100
int main(void) {

	int arr[MAX], n;
	scanf("%d", &n);
	if (n > 0 && n <= MAX)
	{
			for (int i = 0; i < n; i++) {
				scanf("%d", &arr[i]);
				printf("%d", arr[i]);
				if (i < n - 1)
					putchar(',');
			}
			//putchar(\n);
			int min=arr[0], max=min;
			for(int i=1; i<n; i++) {
			    if(arr[i]<min) 
			        min=arr[i];
			    else if(arr[i]>max)
			        max=arr[i];
			}
			printf("\n%d\n%d\n",min,max);
		
		int j=0;
		
		for(int i=0; i<n; i++) {
		if(arr[i]!=min && arr[i]!=max)
		    arr[j++]=arr[i];
		    
		}
		n=j;
		for (int i = 0; i < n; i++) {
				printf("%d", arr[i]);
				if (i < n - 1)
					putchar(',');
			}
	    int pos, val;
	    scanf("%d %d",&pos, &val);
	    
	    if(pos>=0 && pos <= n){
	        
	        for(int i = n-1; i>=pos; i--){
	            arr[i+1]=arr[i];
	            
	        }
	        arr[pos]=val;
	        n++;
	    }
	    printf("\n");
	    for (int i = 0; i < n; i++) {
				printf("%d", arr[i]);
				if (i < n - 1)
					putchar(',');
			}
	}
	
		return 0;
}

Број сетованих битова целог броја

Написати програм на програмском језику C који за цео број, који се уноси са стандардног улаза, проналази и исписује број битова који имају вредност 1.

#include <stdio.h>

int main() {
    int a, mask = 1, s = 0;
    
    scanf("%d", &a);
        while(mask) {
            s += (a & mask ? 1 : 0);
            mask<<=1;
                        
        }
    printf("%d", s);
}

Замена парова суседних битова

Написати програм на програмском језику C који за цео број, који се чита са стандардног улаза, проналази и исписује број који се добија заменом парова суседних битова оригиналног броја (0. бит са 1., 2. бит са 3., 3. бит са 4. итд.).

#include <stdio.h>

int main() {
    int a, mask = 1, s = 0;
    
    scanf("%d", &a);
        while(mask) {
            s += (a & mask ? 1 : 0);
            mask<<=1;
                        
        }
    printf("%d", s);
}