Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*• Sastaviti program na jeziku C za učitavanje imena
- gradova uz njihovo uređivanje po abecednom
- redosledu (leksikografskom poretku) i ispisivanje
- rezultata. U svakom redu se učitava po jedno ime
- sve dok se ne učita prazan red. Za rad sa
- stringovima koristiti prethodno realizovane
- funkcije.
- • Rešenje zadatka prikazuje rad sa nizom
- pokazivača na znakovne nizove (stringove)
- • Sortiranje se vrši nakon svakog dodavanja novog
- stringa u niz
- • Umesto da se vrši prepisivanje stringova (strcpy),
- vrši se izmena vrednosti pokazivača
- • Po sličnom principu kao kod formiranja dinamičke
- matrice, može se formirati i dinamički niz
- stringova
- – alocira se niz pokazivača koji će pokazivati na pojedinačne stringove
- (kao za vrste matrice)
- – za svaki string se alocira onoliko prostora koliko je potrebno za
- smeštanje svih znakova i završnog znaka
- – za razliku od matrica gde je svaka vrsta imala isti broj elemenata, sada
- se alocira samo onoliko prostora koliko je potrebno za smeštanje
- konkretnog stringa*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define CHUNK 10
- char* readCity() {
- char *city = NULL, c;
- int cnt = 0;
- while((c = getchar()) != '\n') {
- if(cnt % CHUNK == 0) {
- city = realloc(city,
- sizeof(*city) * (cnt + CHUNK));
- if(!city) {
- perror(NULL); exit(1);
- }
- }
- city[cnt++] = c;
- }
- if(!cnt) return NULL;
- city = realloc(city, sizeof(*city) * (cnt + 1));
- if(!city) {
- perror(NULL);
- exit(1);
- }
- city[cnt] = '\0';
- return city;
- }
- int main(void) {
- char **cities = NULL, *city;
- int cnt = 0;
- while(1) {
- city = readCity();
- if(!city)
- break;
- if(cnt % CHUNK == 0) {
- cities = realloc(cities,
- sizeof(*cities) * (cnt + CHUNK));
- if(!city) {
- perror(NULL); exit(1);
- }
- }
- int i;
- for(i = cnt-1; i >= 0 &&
- strcmp(cities[i], city) > 0; i--){
- cities[i+1] = cities[i];
- }
- cities[i+1] = city;
- cnt++;
- }
- for(int i=0; i<cnt; i++) {
- printf("%s\n", cities[i]);
- free(cities[i]);
- }
- free(cities);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement