[C] wczytywanie rozmiaru tablicy z klawiatury

0

Stworzylam program, ktory wyswietlic ciag znakow w odwroconej kolejnosci, jednak cos jest z zle z rozmiarem tablicy, zle to deklaruje, i nie wiem jak zrobic to dobrze. program wyglada tak:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void displayArray(char tab[], int rozm);

void displayArray(char tab[], int rozm) {
int i;
printf("Elementy ciagu w odwroconej kolejnosci:\n{");
for (i = rozm; i>0; i--) {
printf("%s", tab[i]);
}
printf("}\n");
}

int main() {
int rozm, i;
char tab[rozm]; // co do tego tez nie mam pewnosci
printf("Ilosc elementow ciagu: \n");
scanf("%d", &rozm);
printf("Wprowadz ciag znakow: \n");
for(i=0; i<rozm; ++i)
{
scanf("%s", &tab[i]);
}
displayArray(tab[rozm], rozm); // to chyba nie jest legalne...
system("PAUSE");
return 0;
}

0
   1. include <stdio.h>
   2. include <stdlib.h>
   3. include <time.h> // po co Ci tutaj time?


void displayArray(char tab[], int rozm); //tablice znakow powinienes przekazac jako wskaznik


void displayArray(char tab[], int rozm) {
    int i;
    printf("Elementy ciagu w odwroconej kolejnosci:\n{");
    for (i = rozm; i>0; i--) { 
        printf("%s", tab[i]);
    }
    printf("}\n");
}

int main() {
    int rozm, i;
    char tab[rozm]; // co do tego tez nie mam pewnosci // i słusznie - tablicę powinieneś zadeklarować dynamicznie.
    printf("Ilosc elementow ciagu: \n");
    scanf("%d", &rozm);
    printf("Wprowadz ciag znakow: \n");
    for(i=0; i<rozm; ++i)
    {
        scanf("%s", &tab[i]); // tutaj wydaje mi się, że flaga powinna być %c, a nie %s
    }
    displayArray(tab[rozm], rozm); // to chyba nie jest legalne... // no dobrze Ci się wydaje :P
    system("PAUSE");
    return 0;
}

I wersja poparwiona:

#include <stdio.h>
#include <stdlib.h>



void displayArray(char *tab, int rozm);


void displayArray(char *tab, int rozm) {
    int i;
    printf("Elementy ciagu w odwroconej kolejnosci:\n{");
    for (i = rozm; i>0; i--) {
        printf("%c", tab[i]);
    }
    printf("}\n");
}

int main() {
    int rozm, i;
    char *tab;
    printf("Ilosc elementow ciagu: \n");
    scanf("%d", &rozm);
    tab = (char*)malloc(rozm+1);
    printf("Wprowadz ciag znakow: \n");
    for(i=0; i<=rozm; i++)
    {
        scanf("%c", &tab[i]);
    }
    displayArray(tab, rozm);
    free(tab);
    return 0;
}
0

ha! wiedziałam, ze bedzie cos z wskaznikami. dzieki, jestes WIELKI!!! :)

0

tak na logikę już pomijając fakt, że ma to być dynamiczna tablica jak możesz podawać rozmiar tablicy poprzez niezainicjalizowaną zmienną, która ma w sobie jakiś syf, którego nie możesz przewidzieć, a potem do niej dopiero pobierasz wymiar od użytkownika? To jest bezsens totalny i nawet fakt, że nie nie znasz podstaw nie może usprawiedliwić cie przed brakiem umiejętności myślenia logicznego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1