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

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

Statistika pojavljivanja

Sastaviti program na programskom jeziku C za određivanje i ispis broja velikih slova, malih slova i cifara u tekstu koji se iz proizvoljnog broja redova učitava preko glavne ulazne jedinice. Ispis podataka se vrši u zasebnim redovima. Tekst se završava znakom za kraj datoteke.

#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);
}

Minimum i maksimum, umetanje i izbacivanje

Sastaviti program na programskom jeziku C koji treba da izvrši sledeću obradu nad nizom:


1) Pročita dimenziju i elemente niza, a zatim ih ispiše u novom redu odvojene znakom ,

2) Odredi i ispiše vrednost minimalnog elementa u novom redu

3) Odredi i ispiše vrednost maksimalnog elementa u novom redu

4) Izbaci sve elemente niza koji su jednaki minimalnom i maksimalnom elementu, a zatim ispiše preostale elemente niza u novom redu odvojene znakom ,

5) Pročita sa standardnog ulaza poziciju u nizu i vrednost elementa koji se ubacuje u niz na tu poziciju i ispiše elemente izmenjenog niza u novom redu odvojene znakom ,. Ukoliko je pozicija nevalidna, operacija je bez efekta.

#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;
}

Broj setovanih bitova celog broja

Napisati program na programskom jeziku C koji za ceo broj, koji se unosi sa standardnog ulaza, pronalazi i ispisuje broj bitova koji imaju vrednost 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);
}

Zamena parova susednih bitova

Napisati program na programskom jeziku C koji za ceo broj, koji se čita sa standardnog ulaza, pronalazi i ispisuje broj koji se dobija zamenom parova susednih bitova originalnog broja (0. bit sa 1., 2. bit sa 3., 3. bit sa 4. itd.).

#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);
}