to jeszcze jedno pytanie dotyczące języka C.
zad 1
napisz funkcjje która jako parametr przyjmuje tablice znaków. niech zmienia co 3 znak łańcucza(jeżeli jest duża litera na małą jeśli jest możliwe).
funkcja zwraca liczbe zmian.
zad 2.
napisz program, który wczyta liczbe całkowitą liczba>10 (do skótku).
zaqrezerwuje pamięć dla wczytanej liczby znaków. Wypełnić tablicę znak po znaku aż do zakończenia zarezerwowanego miejsca lub wystąpienia .(kropki), niezależnie co wystąpi wcześniej.
Wywołać funkcje z zadania pierwszego i wyświetli w zależność od tego co zwróci funkcja:
jeśli zwróci 0: "Brak zmian w łańcuchu (wypisać łańcuch)."
jeśli co innego "W łańcuchu (wypisać łańcuch) dokonano (podać liczbe zmian) zmian."
i moje wykonanie (któro nie działa).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int zmiana(char tablica[])
{
int i=0;
int liczba_zmian=0;
for(i=0;i<strlen(tablica);i+3)
{
if(tablica[i]>=65&&tablica[i]<=90)
{
tablica[i]=tablica[i]+32;
liczba_zmian++;
}
}
return liczba_zmian;
}
int main()
{
char* tablica;
int n;
int j;
printf("Podaj wielkosc tablicy:\n"); // wprowadzamy wielkość tablicy.
scanf("%d", &n);
do // petla sprawdzajaca czy podana liczba jest wieksza od 10.
{
if(n>10)
{
printf("Rozmiar tablicy = %d",n);
}
else
{
printf("Tablica musi byc wieksza od 10!\n Jeszcze raz podaj wielkosc tablicy:\n");
scanf("%d", &n);
if(n>10)
{
printf("Rozmiar tablicy = %d",n);
}
}
} while(n<=10);
tablica = (char*) malloc (n*sizeof(*tablica));
printf("%d", sizeof(tablica));
for(j=0; tablica[j]<n; j++)
{
scanf("%[^.\n]s" , tablica);
}
int x = zmiana (tablica);
if(liczba_zmian==0)
{
printf("Brak zmian w lancuchu: %c", tablica);
}
else
{
printf("W lancuchu %c dokonona %d zmian", tablica, liczba_zmian);
}
return 0;
}