Problem z tablicami

0

Ma to być program, który będzie prosil uzytkownika o podanie 6 imion, nastepnie będzie zliczał ilosc liter w kazdym imieniu i na koniec wypisywał ponownie imiona wraz z ilością liter. Próbuję to zrobić na tablicach, ale nie wychodzi, oto mój kod(błędny).

#include <stdio.h>
#include <stdlib.h>
char imie[];
int dlugosc[];
int main()
{
 for(int i=0;i<=5;i++)
 {
   printf("podaj imie\n");
    scanf("%s",imie);
    dlugosc[i]=strlen(imie);
    printf("%d\n",dlugosc);
 }
 for(int i=0;i<=5;i++)
 {
  printf("%s",imie[i]);
  printf("%d\n",dlugosc[i]);
 }
    return 0;
}
0
char imie[];
int dlugosc[];

To się przecież nie skompiluje. Musisz albo jawnie podać rozmiar tablicy albo ją od razu zainicjalizować.

printf("%d\n",dlugosc);

Tutaj podajesz do wypisania adres pierwszego elementu tablicy dlugosc.

I nie warto używać zmiennych globalnych.

0

Wywal ten kod i użyj std::getline razem z tablicą złożoną z std::string. Przykładowo podanie pojedynczego imienia będzie wygladało tak:

std::string name;
std::cout << "What is your name? ";
std::getline(std::cin, name);
0

Ale ja muszę zrobić to w C, a nie C++. Największy problem to użycie w petli for zmiennej typu char' imie', tak by zmienna int 'dlugosc' mogla przypisywac wartosc kazdemu elementowi osobno, a nie tylko pojedynczemu elementowi.

0

No ale Ty tak robisz. Długość każdego wczytanego imienia zapisujesz w kolejnych elementach tablicy dlugosc. Tylko że przy każdym wczytaniu imienia nadpisujesz tablicę imie - tutaj każdy element to jeden znak imienia.

0
#include <stdio.h>

#define MAX_NAMES 5
#define MAX_NAME_LENGTH 24

int main()
{
    char name[MAX_NAMES][MAX_NAME_LENGTH];
    
    for(int i=0; i<MAX_NAMES; i++) {
        printf("Podaj imie: ");
        scanf("%s", name[i]);
    }
    
    for(int i=0; i<MAX_NAMES; i++) {
        printf("Imie nr. %d: %s, długość: %d znaków.\n", i+1, name[i], strlen(name[i]));
    }

    return 0;
}
0

Zmienilem kod na taki, lecz występuje problemz kompilacją.
#include <stdio.h>
#include <stdlib.h>
char imie[10];
int main()
{
for(int i=0;i<=5;i++)
{
printf("podaj imie\n");
scanf("%s",imie[i]);
}
for(int i=0;i<=5;i++)
{
printf("imie %d, dlugosc %d\n",imie[i],strlen(imie[i]));
}
return 0;
}

0
char imie[tutaj maksymalna ilosc imion][tutaj maksymalna ilosc znakow które mogą posiadać imiona]

Każda litera imienia odpowiada jednemu miejscu w tablicy np:

char imie[3];
imie[0] = "j";
imie[1] = "a";
imie[2] = "n";

Jeżeli natomiast chcesz stworzyć kilka imion to definiujesz tablice dwuwymiarową np:

char imie[2][3];
imie[0][0] = "j";
imie[0][1] = "a";
imie[0][2] = "n";

imie[1][0] = "j";
imie[1][1] = "a";
imie[1][2] = "n";

Przeanalizuj sobie dokładnie te przykłady

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